尽管设置为 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 安装的主要内容,如果未能解决你的问题,请参考以下文章

尽管在响应标头中将 iframe 选项设置为 Sameorigin,但允许其他站点嵌入视频

尽管我以编程方式选择了一个单元格,但 indexPathForSelectedRow 返回 nil

尽管日志配置设置为 0,但 Mongodb 非常冗长

尽管设置为“剪辑”,但背景图像仍重复

尽管隔离设置为“已提交”,但为啥并发数据库连接会看到彼此未提交的更改?

尽管更新了架构,但 BigQuery 架构错误