繁体   English   中英

添加库后,此版本仍不符合 Google Play 64 位要求错误

[英]This release is not compliant with the Google Play 64-bit requirement error still after adding libraries

我正在 Play 商店上传一个视频编辑器应用程序,该应用程序具有带有一些本机代码的库。 所以我通过将它添加到 gradle 使其兼容 64 位。

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

添加它仍然问题没有解决。 当我在 Playstore 上传时,它仍然出现 64 位错误。 这是我的毕业证

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.maam.videoeditor"
        minSdkVersion 17
        targetSdkVersion 28
        versionCode 5
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation "com.android.support:customtabs:28.0.0"
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'

    implementation 'com.writingminds:FFmpegAndroid:0.3.2'

}

我在 gradle 中添加了 64 位行,但在上传 64 位不合规错误显示。 请指导解决这个问题。

@Osama:首先,请检查您的 apk 文件是否有 64 位库。 有很多方法可以做到这一点: - 使用 Android Studio 的分析 Apk 功能(更多详细信息,请参阅: https : //developer.android.com/distribute/best-practices/develop/64-bit ) - 存档您的 apk文件并检查该文件夹内。 如果您的应用程序没有文件夹“arm64-v8a”,则意味着您的应用程序版本仍未达到 64 位。

关于您的要求,如果您希望您的应用程序支持 64 位架构,您还必须将您的本机库(.so 文件)版本升级到 64 位。

关于你的代码:

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

我不建议你添加这个,除非你使用 Android Studio 的 AppBundle 新功能。 因为当你使用它时,将为每个架构创建4个新的apk文件。 如果你上传 arm64-v8a 架构的文件,错误会消失,但它会通知你你的 apk 支持的设备比以前的版本少,因为它不支持 32 位设备。

这个问题有两种可能的解决方案:

  1. 把所有的库文件放到你的 apk 文件中,它会让你的应用程序更大,但它会让你的应用程序支持所有设备。

  2. 为您的项目应用 AppBundle。 有关这方面的更多详细信息,请查看此链接: https : //android.jlelse.eu/a-practical-guide-to-android-app-bundle-for-beginners-7e8d93831828

android {    
    compileSdkVersion 29    
    defaultConfig {    
        -----    
        -----    
        ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'    
        ndk {    
            abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'    
        }    
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"    
    }    

    packagingOptions {    
            exclude 'lib/armeabi-v7a/libvudroid.so'    
            exclude 'lib/x86/libvudroid.so'    
            exclude 'lib/arm64-v8a/libvudroid.so'    
        }    

Google已在稳定的渠道中发布了Flutter 1.7.8 + hotfix.3,可轻松构建要发布的应用程序。

现在,您有两个选择可以构建:

  1. 应用捆绑包(首选)
  2. APK

产生应用程式套件

运行flutter build appbundle

这将创建<app dir>/build/app/outputs/bundle/release/app.aab

T app捆绑包包含Dart代码和为armeabi-v7a (32位)和arm64-v8a (64位)编译的Flutter运行时。

现在,您可以将此应用捆绑包上传到Google Play。

建立一个APK

flutter build apk --split-per-abi

此命令产生两个APK文件:

<app dir>/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
<app dir>/build/app/outputs/apk/release/app-arm64-v8a-release.apk

删除--split-per-abi标志将导致显示一个胖APK,其中包含为所有目标ABI编译的代码。 此类APK的大小要大于拆分后的对应文件,导致用户下载不适用于其设备架构的本机二进制文件。

如果您尚未升级到Flutter 1.7,则下面的解决方案仍然可以使用。

您需要构建两个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并开始推出。

祝好运

从我的情况来看,谷歌支持团队的回答是,这是由于上传了较旧的(旧版)版本构建(不符合 64 位要求),在上传新版本时将其包含在“上一个版本”部分应用。

您需要将以下内容添加到您的 android/app/build.gradle 文件中:

android {    
    defaultConfig {
        ....
        ....
        ndk {
            abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }
}

将以下内容添加到您的 android/build.gradle 文件中:

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                .....
                .....

                packagingOptions {
                    pickFirst 'lib/x86/libc++_shared.so'
                    pickFirst 'lib/arm64-v8a/libc++_shared.so'
                    pickFirst 'lib/x86_64/libc++_shared.so'
                    pickFirst 'lib/armeabi-v7a/libc++_shared.so'
                }
            }
        }
    }
}

这是为了包括 64 位架构。 如果不是这样,那么您可能需要创建应用程序包然后上传

如果您在 alpha 版本上上传您的 apk 并且会显示此错误,因此请检查任何退出的 apk 是否已上线,如果没有,请删除您的旧 apk 并上传您的新 apk。

我想你的问题已经解决了。

我遇到了同样的情况...我的应用程序既不是游戏也不是跨平台应用程序...我遇到过这种情况...解决方案很简单...我的一个应用程序依赖(由gradle实现的库)正在使用ndk ...我删除它后,问题就消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM