我想添加融合的位置服务,但它告诉我一些错误。
帮助我。
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "27.0.1"
defaultConfig {
applicationId "com.example.adil.bloodbankapplication"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.firebase:firebase-auth:11.8.0'
compile 'com.google.firebase:firebase-database:11.8.0'
compile 'com.android.support:support-v4:26.1.0'
compile 'junit:junit:4.12'
compile 'com.android.support:design:26.1.0'
compile 'com.github.joielechong:countrycodepicker:2.1.5'
compile 'com.jaredrummler:material-spinner:1.2.4'
compile 'hanks.xyz:htextview-library:0.1.5'
compile 'com.firebaseui:firebase-ui-database:1.2.0'
compile 'com.google.android.gms:play-services:11.8.0'
}
apply plugin: 'com.google.gms.google-services'
你可以跟着这个走。
Android 5.0 (API级别21)之前的平台版本使用Dalvik运行时执行应用程序代码。默认情况下,Dalvik限制每个APK只能使用一个classes.dex字节码文件。为了绕过这个限制,你可以在你的项目中添加multidex支持库:
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
如果你的minSdkVersion设置为21或更高,你所需要做的就是在你的模块级构建中将multiDexEnabled设置为true。Gradle文件,如下所示:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 28
multiDexEnabled true
}
...
}
dex文件是什么:Android应用程序(APK)文件包含Dalvik可执行(dex)文件形式的可执行字节码文件,其中包含用于运行应用程序的编译代码。
出现这种异常的原因:DEX规范限制了在单个DEX文件中可以引用的方法总数为65,536 (64K引用限制)——包括Android框架方法、库方法和你自己代码中的方法。
步骤1。添加如下依赖项
对于非androidx用户,
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true //ADD THIS LINE
}
对于android用户,
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true //ADD THIS LINE
}
步骤2:
在添加这些同步项目之后,在运行项目之前,请确保在运行之前构建一个项目。否则,您将得到一个异常。
他的问题在这里,移除它
compile 'com.google.android.gms:play-services:11.8.0'
why?
注意:不要使用组合play-services目标。它带来了几十个库,使您的应用程序变得臃肿。相反,只指定应用程序使用的特定谷歌Play服务api。
使用你所需要的https://developers.google.com/android/guides/setup
比如位置服务
com.google.android.gms:play-services-location:11.8.0
对于云消息传递
com.google.android.gms:play-services-gcm:11.8.0
修改应用程序或模块的build.gradle
android {
defaultConfig {
...
minSdkVersion 21 <----- *here
targetSdkVersion 26
multiDexEnabled true <------ *here
}
...
}
根据官方文件
Multidex support for Android 5.0 and higher
Android 5.0 (API level 21)
and higher uses a runtime called ART which natively supports loading
multiple DEX files from APK files. ART performs pre-compilation at app
install time which scans for classesN.dex files and compiles them into
a single .oat file for execution by the Android device. Therefore, if
your minSdkVersion is 21 or higher, you do not need the multidex
support library.
For more information on the Android 5.0 runtime, read ART and Dalvik.
https://developer.android.com/studio/build/multidex