【问题标题】:This release is not compliant with the Google Play 64-bit requirement error still after adding libraries此版本在添加库后仍然不符合 Google Play 64 位要求错误
【发布时间】:2019-08-21 07:35:10
【问题描述】:

我正在 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 位不兼容时显示错误。请指导解决此问题。

【问题讨论】:

  • 不合规并不是通过添加库来改变的。不合规意味着您应该更改不合规的库或导致它不合规的库
  • 检查 'com.writingminds:FFmpegAndroid' 是否有 64 位版本。我想这是你的问题
  • 是的,这个库很好,因为我之前已经用 64 位代码上传了一个具有相同库的应用
  • 这个问题是库不支持 x64 艺术。对于将来遇到相同问题的任何人,都应该找到一个支持 x64 艺术的替代库。要检查是否有任何库支持 x64,请检查此。 developer.android.com/distribute/best-practices/develop/64-bit

标签: java android google-play-services


【解决方案1】:

@Osama:首先,请检查您的 apk 文件是否有 64 位库。有很多方法可以做到这一点: - 使用Android Studio的Analyze 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

【讨论】:

  • 我使用的库没有 x64 版本。我已经尝试了几件事,但我仍然无法在商店中更新它。你能帮帮我吗?
【解决方案2】:
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'    
        }    

【讨论】:

  • 欢迎来到stackoverflow。对它如何解决问题的一些解释会增强您的答案。
  • 仅排除 32 位帮助。
【解决方案3】:

您需要将以下内容添加到您的 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 位架构。 如果不是这样,那么您可能需要创建应用程序包然后上传

【讨论】:

    【解决方案4】:

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

    【讨论】:

    【解决方案5】:

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

    我认为你的问题已经解决了。

    【讨论】:

      【解决方案6】:

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

      【讨论】:

      • 我正面临这种情况。我没有在我的应用程序中找到任何 ndk。你是怎么做到的?你能帮我吗?
      • 您在应用中使用的库(Gradle 实施)可能使用的是 NDK
      猜你喜欢
      • 2020-10-27
      • 2019-12-22
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 2020-01-24
      • 2020-05-22
      • 2020-03-07
      • 2021-01-17
      相关资源
      最近更新 更多