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

Posted

技术标签:

【中文标题】尽管设置为 targetSDK 31,但 Flutter App 无法从 Google 商店为 Android 12 安装【英文标题】:Flutter App not installable from Google store for Android 12 despite being set to targetSDK 31 【发布时间】:2021-12-22 03:07:44 【问题描述】:

我在 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 12 设备上以发布模式安装您的应用:flutter run --release 并通过日志提供帖子 同样的事情发生在我身上+1 你有什么线索吗? 我刚刚创建了一个新项目并逐渐将我的文件移过来以解决这个问题。这样压力小得多,我只花了 40 分钟左右 【参考方案1】:

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

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

【讨论】:

谢谢,但我们有这么多插件无法添加导出值,我该怎么办,把它们全部搞定并修改它? 我会将所有有问题的软件包更新到最新版本。如果您仍然遇到问题,我会手动更新它们,但请确保您在此之后不要调用“pub clear cache”,因为您将撤消所有手动更改。 根据您在开发过程中所处的位置,您还可以从您的 pub 缓存中复制包并将其放入您的项目文件夹并在那里进行修改。您所要做的就是将您的 pubspec.yaml 依赖项指向 flutter_chat_types: path: ./flutter_chat_types-3.1.2_HIJACKED。这将防止您的更改被 dart 生态系统修改。这需要更多的工作,但会为您的项目提供更多的安全性。

以上是关于尽管设置为 targetSDK 31,但 Flutter App 无法从 Google 商店为 Android 12 安装的主要内容,如果未能解决你的问题,请参考以下文章