我刚在游戏商店发布了一个新的应用程序。在提交之前,这个应用程序在我的手机上运行良好,但当我从play商店下载该应用程序时,它在发布时崩溃了。我试着从手机上删除这个应用程序,重新安装,并且在启动时继续崩溃。
当我的手机连接到Android时,当崩溃发生时,我会看到这个记录。
java.lang.RuntimeException: Unable to create application com.bundleid.EXAMPLE.MyApplication: java.lang.TypeNotPresentException: Type kotlin.Pair not present
为什么kotlin.Pair不能在应用程序的play商店版本上使用??我从2018年起就没有提交过任何商店应用程序,所以我有点生疏,但我还记得以前有过类似的经历,我认为这与Proguard有关,但我不确定。我如何解决这个问题,以及如何预先测试从Playstore下载的应用程序将如何运行?
全部:
--------- beginning of crash
2021-08-09 00:09:03.067 13733-13733/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.bundleid.EXAMPLE, PID: 13733
java.lang.RuntimeException: Unable to create application com.bundleid.EXAMPLE.MyApplication: java.lang.TypeNotPresentException: Type kotlin.Pair not present
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6759)
at android.app.ActivityThread.access$1400(ActivityThread.java:244)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1952)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7700)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
Caused by: java.lang.TypeNotPresentException: Type kotlin.Pair not present
at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:69)
at libcore.reflect.ParameterizedTypeImpl.getOwnerType(ParameterizedTypeImpl.java:54)
at p4.a.a(Unknown Source:35)
at p4.a$a.<init>(Unknown Source:3)
at p4.a.a(Unknown Source:63)
at t4.a.<init>(:1)
at v4.t3.<init>(Unknown Source:0)
at com.bundleid.EXAMPLE.MyApplication.onCreate(:23)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6754)
at android.app.ActivityThread.access$1400(ActivityThread.java:244)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1952)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7700)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
Caused by: java.lang.ClassNotFoundException: kotlin.Pair
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:67)
at libcore.reflect.ParameterizedTypeImpl.getOwnerType(ParameterizedTypeImpl.java:54)
at p4.a.a(Unknown Source:35)
at p4.a$a.<init>(Unknown Source:3)
at p4.a.a(Unknown Source:63)
at t4.a.<init>(:1)
at v4.t3.<init>(Unknown Source:0)
at com.bundleid.EXAMPLE.MyApplication.onCreate(:23)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6754)
at android.app.ActivityThread.access$1400(ActivityThread.java:244)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1952)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7700)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
Caused by: java.lang.ClassNotFoundException: kotlin.Pair
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:67)
at libcore.reflect.ParameterizedTypeImpl.getOwnerType(ParameterizedTypeImpl.java:54)
at p4.a.a(Unknown Source:35)
at p4.a$a.<init>(Unknown Source:3)
at p4.a.a(Unknown Source:63)
at t4.a.<init>(:1)
at v4.t3.<init>(Unknown Source:0)
at com.bundleid.EXAMPLE.MyApplication.onCreate(:23)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6754)
at android.app.ActivityThread.access$1400(ActivityThread.java:244)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1952)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7700)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
gradle.properties:
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
build.gradle (项目):
buildscript {
ext.kotlin_version = "1.5.20"
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.8'
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url "https://jitpack.io" }
jcenter() // Warning: this repository is going to shut down soon
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle (模块):
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'com.google.gms.google-services'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.bundleid.EXAMPLE"
minSdkVersion 21
targetSdkVersion 30
versionCode 5
versionName "5.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
ndk {
debugSymbolLevel 'FULL'
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation 'nl.dionsegijn:konfetti:1.3.2'
implementation 'com.android.billingclient:billing:4.0.0'
implementation 'org.apache.commons:commons-text:1.9'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'org.adblockplus:adblock-android-webview:4.4.0'
implementation 'org.jsoup:jsoup:1.13.1'
implementation("com.android.volley:volley:1.2.0")
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation 'com.github.blipinsk:ViewPropertyObjectAnimator:1.5.0'
implementation 'me.saket:better-link-movement-method:2.2.0'
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation 'androidx.asynclayoutinflater:asynclayoutinflater:1.0.0'
implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
}
我的proguard-rules.pro
文件是空的。
编辑:
我至少可以使用该应用程序的发行版构建来再现相同的问题,使用:
brew install bundletool
cd /location/to/your/release/folder
bundletool build-apks --bundle=app-release.aab --output=./app.apks
ls
bundletool install-apks --apks=app.apks --adb=~/Library/Android/sdk/platform-tools/adb
现在我只需要想办法解决这个问题。
编辑2:
如果我在minifyEnabled
中将build.gradle设置为false,那么它不会崩溃。所以这肯定和Pro卫兵有关。我怎么才能修好它?
编辑3:
我能够通过将它放在proguard-rules.pro
文件中来解决这个问题:
-keep class androidx.** { *; }
-keep interface androidx.** { *; }
-keep class kotlin.** { *; }
-keep interface kotlin.** { *; }
-keep class com.bundleid.EXAMPLE.** { *; }
-keep interface com.bundleid.EXAMPLE.** { *; }
这个很管用。但是,如果有人认为这些规则可能不正确或过于宽泛,请告诉我。
发布于 2021-11-08 20:31:38
我只是在将现有应用程序的targetSdkVersion
从29增加到30之后,就遇到了这个问题。将这个添加到proguard-rules.pro
中似乎可以帮我解决这个问题:
-keep class kotlin.Pair
https://stackoverflow.com/questions/68706793
复制相似问题