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

时间:2019-08-21 07:35:10

标签: java android google-play-services

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

5 个答案:

答案 0 :(得分:0)

@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位设备。

有2种可能的解决方案:

  1. 将所有库文件放入您的apk文件中,这将使您的应用程序更大,但允许您的应用程序支持所有设备。

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

答案 1 :(得分:0)

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'    
        }    

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您需要将以下内容添加到您的 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 :(得分:-1)

我也遇到过同样的情况... 我的应用既不是游戏,也不是跨平台应用。 我面对这种情况... 解决方案很简单...我的应用程序依赖之一是使用ndk ... 删除后,问题就消失了