После включения proguard и установки minifyEnabled = true я получил эту ошибку при запуске активности:
java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/com.mypackage.code--fknQZuBbRxyDlzudklbZw==/base.apk"],nativeLibraryDirectories=[/data/app/com.mypackage.code--fknQZuBbRxyDlzudklbZw==/lib/arm64, /data/app/com.mypackage.code--fknQZuBbRxyDlzudklbZw==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:977)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6030)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/com.mypackage.code--fknQZuBbRxyDlzudklbZw==/base.apk"],nativeLibraryDirectories=[/data/app/com.mypackage.code--fknQZuBbRxyDlzudklbZw==/lib/arm64, /data/app/com.mypackage.code--fknQZuBbRxyDlzudklbZw==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
это мой файл Gradle:
defaultConfig {
applicationId "com.mypackage.code"
minSdkVersion 19
targetSdkVersion 27
versionCode 17
versionName "0.25"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Я импортировал библиотеку multidex, потому что моя минимальная цель - 19
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
и в манифесте Android я добавил MultiDexApplication в соответствии с документацией:
<application
android:name = "android.support.multidex.MultiDexApplication"
на самом деле все работает, но после включения прогарда начались проблемы.
это мое правило про multidex, которое я пробовал на proguard:
####multidex
-keep class android.** { *; }
-keepclassmembernames class android.**
-dontnote android.**
-keep class android.support.multidex.**
-keepclassmembernames class android.support.multidex.**{*;}
-keepclassmembers class android.support.multidex.** {*;}
-keep public class android.support.multidex.**
у тебя есть идеи? Мне нужно запутать код, поэтому отключение proguard и minifyEnabled невозможно.
Благодарность!
вы добавили MultiDex.install(this); в метод attachBaseContext вашего класса Application? и почистить и перестроить?
@MohammedJunaid Я добавил эти правила, потому что withtout тоже не работает, ошибка остается прежней, с этими правилами или без них. о MultiDex.install (this) в соответствии с документом Google, не требуется, потому что я не переопределяю приложение, поэтому должно быть достаточно приложения, объявленного в манифесте Android: android: name = "android.support.multidex.MultiDexApplication. и да, я много раз пытался очистить и перестроить: (
Вы пробовали Clean and Rebuild, и иногда, как ни странно, disabling instant run тоже помогает?
да, я много раз пытался очистить и перестроить, и мгновенный запуск уже отключен, на данный момент я застрял.
вы используете какие-либо библиотеки androidX?
нет, я не использую библиотеки androidX, но я обнаружил, что проблема заключалась в следующих правилах proguard: -overloadaggressively теперь у меня эта проблема, конечно, без proguard все работает: java.lang.RuntimeException: невозможно запустить активность ComponentInfo {com. mypackage / com.mypachage.SplashScreenActivi ty}: java.lang.NoSuchMethodException: getInstance [] в android.app.ActivityThread.performLaunchActivity (ActivityThr ead.java:2955)
Обновите свой вопрос, указав соответствующую информацию, например, о рассматриваемом действии.




multidex не нуждается в каких-либо правилах proguard, чтобы он работал без него.