我的应用程序在第一次安装到手机上后,只在Android 14上显示了以下警告:

This app isn't compatible with the latest version of Android.
check for an update or contact the app's developer.

我应该怎么做才能解决这个警告?以及我应该如何调试代码以找到问题.

我升级了应用程序库,并判断了我的 list 文件是否与Android 14冲突.

这是我的build.gradle文件

apply plugin: 'com.android.application'

//repositories {
//    mavenCentral()
//    google()
//    maven {
//        url "https://linphone.org/maven_repository"
//    }
//}

configurations {
    compile.exclude module: 'support-v4'
}

configurations.all {
//    exclude group: 'com.google.firebase', module: 'firebase-core'
    exclude group: 'androidx.recyclerview', module: 'recyclerview'
}

dependencies {
    implementation 'androidx.core:core:1.10.1'
    implementation 'androidx.palette:palette:1.0.0'
    implementation 'androidx.exifinterface:exifinterface:1.3.7'
    implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation "androidx.sharetarget:sharetarget:1.2.0"
    implementation 'androidx.interpolator:interpolator:1.0.0'

    compileOnly 'org.checkerframework:checker-qual:3.12.0'
    compileOnly 'org.checkerframework:checker-compat-qual:2.5.0'
//    implementation 'com.google.firebase:firebase-messaging:22.0.0'
//    implementation 'com.google.firebase:firebase-config:21.0.1'
//    implementation 'com.google.firebase:firebase-datatransport:18.0.1'
//    implementation 'com.google.firebase:firebase-appindexing:20.0.0'
//    implementation 'com.google.android.gms:play-services-maps:17.0.1'
//    implementation 'com.google.android.gms:play-services-auth:19.2.0'
    implementation 'com.google.android.gms:play-services-vision:20.1.3'
//    implementation 'com.google.android.gms:play-services-wearable:17.1.0'
//    implementation 'com.google.android.gms:play-services-wallet:18.1.3'
    implementation 'com.googlecode.mp4parser:isoparser:1.0.6'
    implementation 'com.stripe:stripe-android:2.0.2'
    implementation 'com.google.code.gson:gson:2.10'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.12.1'
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.12.1'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.1'
    implementation 'com.squareup.okhttp3:okhttp:3.12.10'
    implementation files('libs/libgsaverification-client.aar')

    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'

    //Play Services
//    implementation 'com.google.android.gms:play-services-gcm:16.1.0'
    implementation 'com.google.android.gms:play-services-location:21.0.1'

    implementation project(':liveVideoBroadcasterSDK')
    implementation "ch.acra:acra-http:5.2.1"
    implementation "ch.acra:acra-dialog:5.2.1"

    implementation 'androidx.fragment:fragment:1.5.3'
    implementation 'androidx.annotation:annotation:1.7.1'

//    implementation project(':datepicker')
    implementation 'org.linphone.minimal:linphone-sdk-android:5.2.112'
    implementation 'androidx.media:media:1.2.0'

    implementation 'net.butterflytv.utils:rtmp-client:3.1.0'
    implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
    implementation project(':xxxxx')

}

android {
//    compileSdkVersion 31
//    buildToolsVersion '31.0.0'
    ndkVersion "21.4.7075529"
    compileSdk 34

    defaultConfig.applicationId = "xxx.xxxxx.xxxxxx"
    namespace = "xxx.xxxxx.xxxxxx"

    sourceSets.main.jniLibs.srcDirs = ['./jni/']

    externalNativeBuild {
        cmake {
            path 'jni/CMakeLists.txt'
        }
    }

    lintOptions {
        disable 'MissingTranslation'
        disable 'ExtraTranslation'
        disable 'BlockedPrivateApi'
    }

//    dexOptions {
//        jumboMode = true
//    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8

        coreLibraryDesugaringEnabled true
    }

    signingConfigs {
        debug {
            storeFile file("config/release.keystore")
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }

        release {
            storeFile file("config/release.keystore")
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }

    buildTypes {
        debug {
            debuggable true
            jniDebuggable true
            signingConfig signingConfigs.debug
            applicationIdSuffix ""
            minifyEnabled false
            shrinkResources false
            multiDexEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            ndk.debugSymbolLevel = 'FULL'
        }

//        gozaresh {
//            debuggable true
//            jniDebuggable true
//            signingConfig signingConfigs.debug
//            applicationIdSuffix ".beta"
//            minifyEnabled false
//            shrinkResources false
//            multiDexEnabled true
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//            ndk.debugSymbolLevel = 'FULL'
//        }

        /*debugAsan {
            debuggable true
            jniDebuggable true
            signingConfig signingConfigs.debug
            applicationIdSuffix ".beta"
            minifyEnabled true
            multiDexEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            packagingOptions {
                doNotStrip "**.so"
            }

            sourceSets {
                main {
                    jniLibs {
                        srcDir {
                            'jniLibs'
                        }
                    }
                    resources {
                        srcDir {
                            'jniRes'
                        }
                    }
                }
            }
        }*/

//        HA {
//            debuggable false
//            jniDebuggable false
//            signingConfig signingConfigs.debug
//            applicationIdSuffix ".beta"
//            minifyEnabled true
//            multiDexEnabled true
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//            ndk.debugSymbolLevel = 'FULL'
//        }

//        standalone {
//            debuggable false
//            jniDebuggable false
//            signingConfig signingConfigs.release
//            applicationIdSuffix ".web"
//            minifyEnabled true
//            multiDexEnabled true
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//            ndk.debugSymbolLevel = 'FULL'
//        }

        release {
            debuggable false
            jniDebuggable false
            signingConfig signingConfigs.release
            minifyEnabled true
            shrinkResources false
            multiDexEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            ndk.debugSymbolLevel = 'FULL'
        }
    }

    sourceSets.debug {
        manifest.srcFile 'config/debug/AndroidManifest.xml'
    }

    /*sourceSets.debugAsan {
        manifest.srcFile 'config/debug/AndroidManifest.xml'
    }*/

//    sourceSets.HA {
//        manifest.srcFile 'config/debug/AndroidManifest.xml'
//    }

//    sourceSets.standalone {
//        manifest.srcFile 'config/release/AndroidManifest.xml'
//    }

    sourceSets.release {
        manifest.srcFile 'config/release/AndroidManifest.xml'
    }
//    sourceSets.gozaresh {
//        manifest.srcFile 'config/debug/AndroidManifest.xml'
//    }

    flavorDimensions "minApi"

    productFlavors {
        armv7 {
            ndk {
                abiFilters "armeabi-v7a"
            }
            ext {
                abiVersionCode = 1
            }
        }
//        x86 {
//            ndk {
//                abiFilters "x86"
//            }
//            ext {
//                abiVersionCode = 2
//            }
//        }
//        armv7_SDK23 {
//            ndk {
//                abiFilters "armeabi-v7a"
//            }
//            sourceSets.debug {
//                manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml'
//            }
//            sourceSets.release {
//                manifest.srcFile 'config/release/AndroidManifest_SDK23.xml'
//            }
//            minSdkVersion 23
//            ext {
//                abiVersionCode = 3
//            }
//        }
//        x86_SDK23 {
//            ndk {
//                abiFilters "x86"
//            }
//            sourceSets.debug {
//                manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml'
//            }
//            sourceSets.release {
//                manifest.srcFile 'config/release/AndroidManifest_SDK23.xml'
//            }
//            minSdkVersion 23
//            ext {
//                abiVersionCode = 4
//            }
//        }
//        arm64 {
//            ndk {
//                abiFilters "arm64-v8a"
//            }
//            ext {
//                abiVersionCode = 5
//            }
//        }
//        x64 {
//            ndk {
//                abiFilters "x86_64"
//            }
//            ext {
//                abiVersionCode = 6
//            }
//        }
//        arm64_SDK23 {
//            ndk {
//                abiFilters "arm64-v8a"
//            }
//            sourceSets.debug {
//                manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml'
//            }
//            sourceSets.release {
//                manifest.srcFile 'config/release/AndroidManifest_SDK23.xml'
//            }
//            minSdkVersion 23
//            ext {
//                abiVersionCode = 7
//            }
//        }
//        x64_SDK23 {
//            ndk {
//                abiFilters "x86_64"
//            }
//            sourceSets.debug {
//                manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml'
//            }
//            sourceSets.release {
//                manifest.srcFile 'config/release/AndroidManifest_SDK23.xml'
//            }
//            minSdkVersion 23
//            ext {
//                abiVersionCode = 8
//            }
//        }
        afat {
            ndk {
                abiFilters "armeabi-v7a"/*, "arm64-v8a", "x86", "x86_64"*/
            }
            sourceSets.debug {
                manifest.srcFile 'config/debug/AndroidManifest_SDK23.xml'
            }
            sourceSets.release {
                manifest.srcFile 'config/release/AndroidManifest_SDK23.xml'
            }
//            sourceSets.standalone {
//                manifest.srcFile 'config/release/AndroidManifest_standalone.xml'
//            }
            ext {
                abiVersionCode = 9
            }
        }
    }

    defaultConfig.versionCode = 2460

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            outputFileName = outputFileName = "xxxx-7.0.0(" + defaultConfig.versionCode + ").apk"
            output.versionCodeOverride = defaultConfig.versionCode * 10 + variant.productFlavors.get(0).abiVersionCode
        }
    }

    variantFilter { variant ->
        def names = variant.flavors*.name
        if (variant.buildType.name != "release" && !names.contains("afat")) {
            setIgnore(true)
        }
    }

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 34
        versionName "34.2.0"

        vectorDrawables.generatedDensities = ['mdpi', 'hdpi', 'xhdpi', 'xxhdpi']

        externalNativeBuild {
            cmake {
                version '3.10.2'
                arguments '-DANDROID_STL=c++_static', '-DANDROID_PLATFORM=android-16'/*, "-j=16"*/ //todo enable parallel threads for the cross-compilation process
            }
        }
    }
}

推荐答案

最后,我找到了那个警告的原因. 我在我的项目中使用NDK和本机代码,因此,当我想要构建应用程序的发行版时,我应该指定要为其构建代码的CPU体系 struct

ndk {
    abiFilters "armeabi-v7a"/*, "arm64-v8a", "x86", "x86_64"*/
}

如您所见,我只为armeabi-v7a构建,所以当我在Android 14和arm64-v8a CPU架构的手机上安装该应用程序时 这一警告表明.

要解决这个问题,我唯一需要做的是在NDK设置中启用arm64-v8a,如下所示:

ndk {
    abiFilters "armeabi-v7a", "arm64-v8a" /*, "x86", "x86_64"*/
}

Google说When you're working with native code, hardware matters.

Android相关问答推荐

更新Jetpack Compose打破了动态色彩

如何正确增加LazyStream中的变量

无法使用MenuItemColors.Copy()

没有打开历史记录的活动意向 Select 器完成调用活动

使用 JNI 从 Android 应用程序中使用 Kotlin/Native 预构建共享库

从 Jetpack Compose 中的图像中删除默认高度

无法插入 LayoutNode@cc72396 子级,因为它已有父级

Kotlin Multiplatform Mobile targetSdk 已弃用

Android Studio:按下前缀键:切换 Logcat 格式

在事件中使用 Context/Toast 时不需要的重组 - Jetpack Compose

Jetpack Compose 部分或开放侧边框

每次在 Jetpack Compose 中调用导航

获取模板向导配方类 Intellij 中的应用程序包名称

如何从我的 android 应用程序中删除 QUERY_ALL_PACKAGES 权限?

如何在 Compose 中更改高程 colored颜色 ?

Jetpack 组合和片段

如何在 Jetpack Compose 中禁用 TabRow 或 Tab 中的涟漪效应?

操作系统会终止已启动的服务并调用Service.onDestroy吗?

我的自定义视图没有显示我应该如何修复它?

ObjectBox,如何在冲突中放弃一切迁移?