Невозможно загрузить 64-битную сборку в Google Play Store - PullRequest
1 голос
/ 14 июня 2019

Мы пытаемся загрузить 64-битную и 32-битную сборки в соответствии с недавним изменением политики Google.

Мы включили соответствующий абифильтр "ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'" в Build.gradle.

Мы смогли сгенерировать сборку, но при загрузке сборки на консоль Play для бета-проверки.Он выдает предупреждение « Релиз не соответствует 64-битному требованию Google ».enter image description here

Мы испробовали весь подход, генерируя 4 сборки (x86,x86_64,armeabi-v7a,arm64-v8a), генерируя две сборки или загружая универсальную сборку со всеми abifilter, это выдает одинаковое предупреждение.Мы перепробовали все возможные подходы.

Пожалуйста, помогите нам в совершенных шагах по загрузке сборки в магазин Play или, если мы делаем какую-либо ошибку в создании сборки, пожалуйста, сообщите нам об этом также.

Пожалуйста, проверьте код build.gradle:

     {
         minSdkVersion 19
         applicationId 'com.xxx.xxx'
         targetSdkVersion 28
         testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
         versionCode 32 // 27-30
         versionName '1.2.1'
         ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
         proguardFile 'proguard-android.txt'
      }

Также мы попробовали другой подход, приведенный ниже:

  splits {
    // Configures multiple APKs based on ABI.
    abi {
        // Enables building multiple APKs per ABI.
        enable true
        // By default all ABIs are included, so use reset() and include to specify that we only
        // want APKs for x86 and x86_64.
        // Resets the list of ABIs that Gradle should create APKs for to none.
        reset()
        // Specifies a list of ABIs that Gradle should create APKs for.
        include "x86", "x86_64", "arm64-v8a", "armeabi-v7a"

        // Specifies that we do not want to also generate a universal APK that includes all ABIs.
        universalApk true
    }
}



ext.abiCodes = ["x86": 1, "x86_64": 2, "armeabi-v7a": 3, "arm64-v8a": 4]

import com.android.build.OutputFile

// For each APK output variant, override versionCode with a combination of
// ext.abiCodes * 1000 + variant.versionCode. In this example, variant.versionCode
// is equal to defaultConfig.versionCode. If you configure product flavors that
// define their own versionCode, variant.versionCode uses that value instead.
android.applicationVariants.all { variant ->

// Assigns a different version code for each output APK
// other than the universal APK.
variant.outputs.each { output ->

    // Stores the value of ext.abiCodes that is associated with the ABI for this variant.
    def baseAbiVersionCode =
            // Determines the ABI for this variant and returns the mapped value.
            project.ext.abiCodes.get(output.getFilter(OutputFile.ABI))

    // Because abiCodes.get() returns null for ABIs that are not mapped by ext.abiCodes,
    // the following code does not override the version code for universal APKs.
    // However, because we want universal APKs to have the lowest version code,
    // this outcome is desirable.
    if (baseAbiVersionCode != null) {

        // Assigns the new version code to versionCodeOverride, which changes the version code
        // for only the output APK, not for the variant itself. Skipping this step simply
        // causes Gradle to use the value of variant.versionCode for the APK.
        output.versionCodeOverride =
                baseAbiVersionCode * 1 + variant.versionCode
    }
}
}

Ответы [ 4 ]

2 голосов
/ 14 июня 2019

ПЕРВЫЙ ИЗ ВСЕХ УСТАНОВЛЕННЫХ Универсальных APK = False

Follow This Gradle

android {
compileSdkVersion 28
defaultConfig {
    applicationId "photo.abc.video"
    minSdkVersion 17
    targetSdkVersion 28
    versionCode 2
    versionName "2.0"
    multiDexEnabled true
    ndk {
        moduleName "andengine_shared"
    }
}
useLibrary 'org.apache.http.legacy'
sourceSets {
    main {
        jni.srcDirs = []
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

lintOptions {
    checkReleaseBuilds false
    abortOnError false
}

splits {
    abi {
        enable true
        reset()
        include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
        universalApk false
    }
 }
}

ext.abiCodes = ['x86':1, 'x86_64':2, 'armeabi-v7a':3, 'arm64-v8a':4]
1 голос
/ 21 июня 2019

После нескольких дней борьбы нашёл рабочее решение здесь: diego.org

Обычно, если вам нужна 64-битная библиотека, вам сначала нужно скачать нужную библиотеку сисходный сайт (сайт соответствующей библиотеки).Проверьте, используете ли вы версию библиотеки, 64-разрядная библиотека которой доступна или нет.

Затем установите его в локальный репозиторий Maven (в основном, ваш Local Maven будет использоваться при создании 64-битных apk-файлов):

mvn install:install-file -DgroupId= (library group for e.g.org.xwalk) -DartifactId= (library name for e.g.xwalk_core_library) \
-Dversion=(version no for e.g.23.53.589.4-64bit) -Dpackaging=aar  \
-Dfile=(file name for e.g.xwalk_core_library-23.53.589.4-64bit.aar) \
-DgeneratePom=true

И обновите ваш сборщик сборки так, чтобы репозитории указывалина локальный репозиторий Maven:

repositories {
   mavenLocal()
}

и вы компилируете правильную библиотеку:

compile 'org.xwalk:xwalk_core_library:23.53.589.4' // Use this library for generating "armeabi-v7a" & "x86" build
compile 'org.xwalk:xwalk_core_library:23.53.589.4-64bit' // Use this library for generating "arm64-v8a" & "x86_64" build

Используйте конфигурацию gradle:

ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' // For your flavor or defaultConfig 

Следующие шаги приведут к генерациидве сборки, одна с 32-бит , а другая с 64-бит , эти также помогут вам избежать ошибок, таких как " Fully Shadowed apk "

Hopeэто помогает.

0 голосов
/ 15 июля 2019

я исправляю свой вопрос, просто mvn не требует установки: install-file

просто перейдите на страницу загрузки

https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/21.51.546.7/

и скачайте 2 библиотеки

1- 32 бита

2- 64 бит

это
xwalk_core_library-21.51.546.7-arm64.aar
и это xwalk_core_library-21.51.546.7-x86.aar

после загрузки нужно открыть файл, используя winrar

вынуть x86 libart и добавить в файл arm64

так что теперь у нас есть 2 библиотеки на файл 32-битные и 64-битные

enter image description here

Теперь добавьте эту библиотеку в Android Stiduo

файл - новый - новый модуль - jar / aar

добавить свою библиотеку

после этого

enter image description here

добавьте свою библиотеку в свой проект

enter image description here

в вашем билде gradle

 defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 17
        versionName "3.2"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled = true
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' ,'x86_64'
        }

что все

apk проанализировать да у вас есть 2 библиотеки 32-битной и 64-битной теперь вы можете обновить приложение

enter image description here

0 голосов
/ 14 июня 2019

Используйте метод Bundle Publishing для Android , чтобы избежать этих ошибок.Ваше приложение будет создано для всех типов устройств Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...