首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >播放商店崩溃的Android应用程序:输入kotlin.Pair不存在。java.lang.TypeNotPresentException

播放商店崩溃的Android应用程序:输入kotlin.Pair不存在。java.lang.TypeNotPresentException
EN

Stack Overflow用户
提问于 2021-08-09 04:15:08
回答 1查看 390关注 0票数 1

我刚在游戏商店发布了一个新的应用程序。在提交之前,这个应用程序在我的手机上运行良好,但当我从play商店下载该应用程序时,它在发布时崩溃了。我试着从手机上删除这个应用程序,重新安装,并且在启动时继续崩溃。

当我的手机连接到Android时,当崩溃发生时,我会看到这个记录。

代码语言:javascript
运行
复制
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下载的应用程序将如何运行?

全部:

代码语言:javascript
运行
复制
--------- 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:

代码语言:javascript
运行
复制
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official

build.gradle (项目):

代码语言:javascript
运行
复制
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 (模块):

代码语言:javascript
运行
复制
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文件是空的。

编辑:

我至少可以使用该应用程序的发行版构建来再现相同的问题,使用:

代码语言:javascript
运行
复制
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文件中来解决这个问题:

代码语言:javascript
运行
复制
-keep class androidx.** { *; }
-keep interface androidx.** { *; }

-keep class kotlin.** { *; }
-keep interface kotlin.** { *; }

-keep class com.bundleid.EXAMPLE.** { *; }
-keep interface com.bundleid.EXAMPLE.** { *; }

这个很管用。但是,如果有人认为这些规则可能不正确或过于宽泛,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2021-11-08 20:31:38

我只是在将现有应用程序的targetSdkVersion从29增加到30之后,就遇到了这个问题。将这个添加到proguard-rules.pro中似乎可以帮我解决这个问题:

代码语言:javascript
运行
复制
-keep class kotlin.Pair
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68706793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档