如何构建符合Google Play 64位要求的应用程序?

时间:2019-05-04 13:25:36

标签: android dart flutter

将APK上传到Play商店后,收到以下警告。我应该做出什么更改才能发布带有flutter sdk的apk版本以满足64位要求?

查看图片以查看警告消息。

https://pasteboard.co/Id8Vqoi.png

12 个答案:

答案 0 :(得分:5)

请他们更改了64-bit体系结构的新策略。所以请把这段代码放在你的gradle中

ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'

例如

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.test.test"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

答案 1 :(得分:2)

您需要构建两个apk并将其一起上传。一个用于32位,另一个用于64位。

  

这对我来说很有效,我正在使用flutter v1.5.4-hotfix.2

首先运行flutter build apk --release并上传apk文件

然后在pubspec.yml文件中增加版本和内部版本号并运行

flutter build apk --release --target-platform=android-arm64

上传此新apk并开始推出。

祝你好运

答案 2 :(得分:2)

对我有用的是

flutter build appbundle --release 

上传appbundle文件

然后在pubspec.yml文件中增加版本和内部版本号并运行

flutter build appbundle --release --target-platform=android-arm64

还上传此新组合。

然后Play商店接受了我的放行

答案 3 :(得分:2)

现在,futter团队提供了一个更好的新解决方案。
您需要使用新的 flutter版本1.7.12 。 (我的设置)

Flutter 1.7.12-pre.40 • channel master • https://github.com/flutter/flutter.git
Framework • revision 3badcf51a4 (13 hours ago) • 2019-06-28 15:14:03 -0700
Engine • revision e96900df2f
Tools • Dart 2.4.0

然后,您可以使用此命令为x86和x64构建(单个)应用程序包。
flutter build appbundle

另外,您可以添加--release --target-platform android-arm,android-arm64。但这可能会导致应用程序损坏...

答案 4 :(得分:1)

使用Flutter的最新主频道。 flutter build apk会生成一个胖APK,其中包含对32位和64位的支持。

要分别创建32位和64位APK,请使用flutter build apk --split-per-abi命令

答案 5 :(得分:1)

我终于能够通过将其添加到build.gradle中来解决此问题

 ndk {
        abiFilters  "armeabi-v7a", "arm64-v8a"
    }
}

splits {
    abi {
        include  "armeabi-v7a", "arm64-v8a"
    }
 }
 applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
        def versionCodes = ["armeabi-v7a":1, "arm64-v8a":2]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }
    }
 }

关于这一点,没有很多清晰的文档,我碰巧是通过搜寻互联网而碰到的。

答案 6 :(得分:0)

我也面临同样的警告,并从Google博客中找到了这篇文章:https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html不太详细,但概述了我们应遵循的步骤

答案 7 :(得分:0)

Flutter 1.5.4-hotfix.2 appbundle当前针对仅构建32位本机代码(flutter build appbundle -h)的android-arm。要更改此运行,请运行flutter build appbundle --target-platform=android-arm64来更改默认目标。

答案 8 :(得分:0)

我使用此代码构建了我的代码,但仍然出现错误。

flutter构建附件--target-platform = android-arm64

答案 9 :(得分:0)

如果您使用 Android Studio

在上传到Google Play时,只需转到构建-> Flutter->构建应用程序包,将其替换为APK

答案 10 :(得分:0)

将此行添加到您的android / app / build.gradle文件中

ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86','x86_64' }

答案 11 :(得分:-2)

通过此线程和此链接。人们都说过同样的话。但是,我不知道什么是颤动。它似乎是一个IDE或某种终端。我无法添加在Gamemaker Studio 2中制作的应用程序;我唯一可以修改的是android和SDK,JDK和NDK文件的版本。因此,我想就自己的工作提供一些建议或技巧,因为这是Google和Gamemaker的制造商YoYo Games的一个主要站点。任何帮助将不胜感激。

https://github.com/flutter/flutter/issues/32191

链接中的重复路线:

添加以下行应用程序级别build.gradle ndk.abiFilters'armeabi-v7a','arm64-v8a','x86','x86_64'

运行flutter build apk --release --target-platform = android-arm 上传32位元版本以播放商店 pubspec.yaml中的递增versionCode 运行flutter build apk --release --target-platform = android-arm64 上传64位版本以播放商店