簡體   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