可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I want to add fused location services but it shows me some error.
Help me.
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'
回答1:
None of the answers they gave you were exhaustive.
The problem lies in the Multidex.
You must add the library in the app gradle :
implementation 'com.android.support:multidex:1.0.3'
After, add in the defaultConfig of the app gradle :
multiDexEnabled true
Your Application must be of the Multidex type..
You must write it in the manifest :
android:name=".MyApplication"
"MyApplication" must be either the Multidex class, or it must extend it.
回答2:
I fixed my problem with the solution below:
In Gradle build file, add dependency:
implementation 'com.android.support:multidex:1.0.3'
And then in the "defaultConfig" section, add:
multiDexEnabled true
回答3:
modify your app's or module's build.gradle
android {
defaultConfig {
...
minSdkVersion 21 <----- *here
targetSdkVersion 26
multiDexEnabled true <------ *here
}
...
}
According to official documentation
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
回答4:
Hi problem is here remove it
compile 'com.google.android.gms:play-services:11.8.0'
why?
Note: Don't use the combined play-services target. It brings in dozens of libraries, bloating your application. Instead, specify only the specific Google Play services APIs your app uses.
And use what you need.https://developers.google.com/android/guides/setup
Like for location service
com.google.android.gms:play-services-location:11.8.0
For Cloud Messaging
com.google.android.gms:play-services-gcm:11.8.0
回答5:
If you are building DEBUG APK, just add:
debug {
multiDexEnabled true
}
inside buildTypes
and if you are building RELEASE APK, add
multiDexEnabled true
in release block as-
release {
...
multiDexEnabled true
...
}
回答6:
You have too many methods count.
Android dex file has a limit of 65536 methods you are allowed to have.
For starters, if you don't need all of google play services API and just the location, replace
compile 'com.google.android.gms:play-services:11.8.0'
with
compile 'com.google.android.gms:play-services-location:11.8.0'
You can refer to this page for ways to avoid it or if needed to allow more:
https://developer.android.com/studio/build/multidex.html
回答7:
In Gradle build file, add dependency:
implementation 'com.android.support:multidex:1.0.2'
or
implementation 'com.android.support:multidex:1.0.3'
or
implementation 'com.android.support:multidex:2.0.0'
And then in the "defaultConfig" section, add:
multiDexEnabled true
Under targetSdkVersion
minSdkVersion 17
targetSdkVersion 27
multiDexEnabled true
Now if you encounter this error
Error:Failed to resolve: multidex-instrumentation Open File
You need to change your gradle to 3.0.1
classpath 'com.android.tools.build:gradle:3.0.1'
And put the following code in the file gradle-wrapper.properties
distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
Finally
add class Applition in project And introduce it to the AndroidManifest
Which is extends from MultiDexApplication
public class App extends MultiDexApplication {
@Override
public void onCreate( ) {
super.onCreate( );
}
}
Run the project first to create an error, then clean the project
Finally, Re-launch the project and enjoy it
回答8:
I have no idea why, maybe it is because I develop in Kotlin but to fix this error
I finally have to create a class that extends MultiDexApplication
like this:
class MyApplication : MultiDexApplication() {
}
and in my Manifest.xml
I have to set
<application
...
android:name=".MyApplication">
to not confuse anyone, I also do:
multiDexEnabled true
implementation 'com.android.support:multidex:1.0.3'
for androidx, this also works for me:
implementation 'androidx.multidex:multidex:2.0.0'
...
<application android:name="android.support.multidex.MultiDexApplication">
does not work for me
回答9:
You can follow this.
Versions of the platform prior to Android 5.0 (API level 21) use the Dalvik runtime for executing app code. By default, Dalvik limits apps to a single classes.dex bytecode file per APK. In order to get around this limitation, you can add the multidex support library to your project:
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
If your minSdkVersion is set to 21 or higher, all you need to do is set multiDexEnabled to true in your module-level build.gradle file, as shown here:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 28
multiDexEnabled true
}
...
}
回答10:
All I had to do was set the Minimum SDK Version to 21 in File > Project Structure > App > Flavors
回答11:
I have encountered this error twice and the solution for this is; Check you app gradle file to see your target SDk, if it is 20 or higher, just add one line to your defaultconfig { multiDexEnabled true }
Else if your targetSDK is less than 20, add the line to your defaultConfig and also add a dependency
implementation 'com.android.support:multidex:1.0.3'.
Check this link for more.
https://developer.android.com/studio/build/multidex#mdex-gradle
回答12:
multiDexEnabled true
Please try adding this in your app defaultConfig {}.This help me to solve the problem