我在我的应用程序中使用Multidex,这导致一些问题导致我的应用程序在安装后立即打开它意外崩溃,当我通过我的android工作室运行它但我尝试使用安装应用程序时工作正常我的apk在某些设备上崩溃,我认为这是设备特定的东西,但它每次我使用APK文件安装在任何设备上时崩溃。我已经尝试了很多方法来解决这个问题,
我尝试清理项目并再次构建它来生成apk 并安装它,但没有工作
我尝试使缓存失效并重新启动Android工作室但仍然无法正常工作
然后我开始在互联网上寻找解决方案,我发现了许多建议,我尝试了所有这些建议。我浏览了各种帖子,博客和文档,包括64K limit,Multidex android documentation等等......
我的应用程序的min sdk版本是16,所以我做了这个,
defaultConfig {
......
minSdkVersion 16
targetSdkVersion 25
.......
multiDexEnabled true
proguardFiles 'proguard-rules.pro'
........
vectorDrawables.useSupportLibrary(true)
// default scheme variables
buildConfigField "String", "DEFAULT_SCHEME", "\"http\""
buildConfigField "String", "REDIRECT_SCHEME", "\"https\""
}
我将此行添加到依赖项
compile 'com.android.support:multidex:1.0.1'
我试图通过gradle文件中的dexoptions来理解和实验很多,
dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g"
}
我创建了一个名为multidex.keep的文件,其内容如下:
android/support/multidex/BuildConfig/class
android/support/multidex/MultiDex$V14/class
android/support/multidex/MultiDex$V19/class
android/support/multidex/MultiDex$V4/class
android/support/multidex/MultiDex/class
android/support/multidex/MultiDexApplication/class
android/support/multidex/MultiDexExtractor$1/class
android/support/multidex/MultiDexExtractor/class
android/support/multidex/ZipUtil$CentralDirectory/class
android/support/multidex/ZipUtil/class
然后我将这些行添加到应用程序的gradle文件中,
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += "--main-dex- list=$projectDir/multidex.keep".toString()
}
}
我仍然无法解决问题并仍在寻找解决方案,欢迎任何帮助/建议,谢谢你们的补充!
答案 0 :(得分:0)
在清单文件的应用标记中添加以下行:
android:name="android.support.multidex.MultiDexApplication"