尽管设置为 targetSDK 31,但无法从 Google 商店为 Android 12 安装 Flutter App

Flutter App not installable from Google store for Android 12 despite being set to targetSDK 31

我在 Playstore 中有一个 Flutter 应用程序,如果你有 Android 12,它只会弹出一条错误消息: “无法安装 AppName”

我的Flutter版本是2.5.0

根据我的设置,我希望该应用程序可以安装在 Android 12 上。这可能会失败吗?

这是我的 build.grade:

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '25'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.1.0'
}

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
// apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 31

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "myAppID"
        minSdkVersion 21
        targetSdkVersion 31
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            //signingConfig signingConfigs.debug
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug{
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    //def multidex_version = "2.0.1"
    //implementation 'androidx.multidex:multidex:$multidex_version'
    implementation 'com.android.support:multidex:1.0.3'
}
apply plugin: 'com.google.gms.google-services'

颤振医生:

在 Android 12 模拟器上安装此程序,安装失败并显示此消息:

在我将此值作为 true 添加到我的 appmanifest 之后,我再次启动它并且在 visual studio 代码中有一个无限安装加载图标。我的设备上有应用程序,但它会在点击后立即关闭

您必须将 android:exported 设置为具有 的任何 组件s 在应用程序的 AndroidManifest.xml 文件中声明。 还!!!! 你必须对你使用的每个包做同样的事情。我建议不要手动执行此操作,因为这可以通过调用“Pub clear cache”之类的东西来修改,而是尝试将您的包更新到最新版本。

https://medium.com/androiddevelopers/lets-be-explicit-about-our-intent-filters-c5dbe2dbdce0

当我被这个问题卡住时,在网上没有找到任何有用的东西:似乎没有多少人遇到过这个问题。

我尝试创建全新的 flutter 应用程序,将其 /android 文件夹复制到我的旧项目;设置 android:exported for in AndroidManifest.xml: none 帮助 运行 我的应用程序在 Android 12 设备上。 (还有一些Android11台设备,都是三星,我们的app,target sdk设置为31,无法安装

最终将targetSdkVersion设置为30,将compileSdkVersion设置为30,问题解决了。

SDK 版本 30 和 Android12?奇怪。