我有一个应用程序,其中包含几个库,已经达到了65536个方法计数的红线。
- 我成功将应用程序设置为了一个
multidex
APK。 - 为了进行大小优化,我决定使用Proguard,因为我只使用了一些
Guava
和common.java.lang
的功能,而这些库会随其整个家族一起被引入。 - 在完成Proguard后,我的应用程序现在大约有45,000个方法。
- 我经常听说多dex应用程序可能会偶尔崩溃。
- 由于第二个dex运行时加载,加载时间比较长,所以会出现这种情况。
那么4和5是真的吗?
然后我尝试不使用multidex
,因为我的最终方法计数是<56Kmethods,使用prodGuard后,但它却失败了,好像超过了限制!
为此,我只需要将Gradle参数multiDexEnabled
设置为false即可。
还有其他需要检查/执行的内容吗?
以下是我的Gradle的一部分:
android {
compileSdkVersion ANDROID_BUILD_SDK_VERSION
buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
applicationId "XXXX"
targetSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION
minSdkVersion ANDROID_BUILD_MIN_SDK_VERSION
versionCode ANDROID_BUILD_VERSION_CODE
versionName ANDROID_BUILD_APP_VERSION_NAME
// Enabling multidex support.
multiDexEnabled false
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
debuggable false
ext.enableCrashlytics = true
renderscriptOptimLevel 3
signingConfig android.signingConfigs.release
zipAlignEnabled true
minifyEnabled true
// shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'proguard-rules-new.pro', 'proguard-rules-eventbus.pro', 'proguard-rules-firebase.pro', 'proguard-rules-fabric.pro', 'proguard-rules-leakcanary.pro'
}
debug {
debuggable true
renderscriptOptimLevel 3
applicationIdSuffix ".debug"
versionNameSuffix "debug"
}
}