我想添加融合的位置服务,但它告诉我一些错误。 帮助我。

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'

当前回答

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:

在添加这些同步项目之后,在运行项目之前,请确保在运行之前构建一个项目。否则,您将得到一个异常。

其他回答

只需要做以下几点:

build.gradle

(module:app)


android {
            ....
      defaultConfig {
              multiDexEnabled true // enable mun
      }
}

并在构建中添加以下依赖项。Gradle应用程序级别文件

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
} 

他们给你的答案都不详尽。 问题出在Multidex上。 你必须在应用程序gradle中添加这个库:

implementation 'com.android.support:multidex:1.0.3'

之后,在应用gradle的defaultConfig中添加:

multiDexEnabled true

您的应用程序必须是Multidex类型.. 你必须把它写在清单上:

android:name=".MyApplication"

“MyApplication”必须是Multidex类,或者必须扩展它。

如果你使用Dagger:

public class App extends DaggerApplication {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this); //ADD MULTIDEX HERE!!!
    }

    @Override
    protected AndroidInjector<? extends DaggerApplication> applicationInjector() {
        return DaggerAppComponent.builder().application(this).build();
    }
}

在应用程序构建中。gradle文件:

android {
        defaultConfig {
            ...
            multiDexEnabled true
        }
    }
 ...
 implementation 'com.android.support:multidex:1.0.3'

你的方法太多了。 Android dex文件有65536个方法的限制。

对于初学者来说,如果你不需要谷歌播放服务API,只需要位置,请替换

compile 'com.google.android.gms:play-services:11.8.0'

with

compile 'com.google.android.gms:play-services-location:11.8.0'

你可以参考本页的方法来避免它,或者如果需要允许更多: https://developer.android.com/studio/build/multidex.html

我为我的项目找到了这个解决方案 我只是将最低SDK版本设置为21,这就解决了我的问题

android {
    defaultConfig {
        ...
        minSdkVersion 21 //set the minimum sdk version 21
        targetSdkVersion 29
    }
    ...
}

如果您的minSdkVersion为21或更高,则默认启用multidex,并且您不需要multidex支持库。 阅读更多关于multidex https://developer.android.com/studio/build/multidex.html