Not able to Upload 64-bit build in Google play Store

百般思念 提交于 2019-12-11 06:33:41

问题


We are trying to upload the 64bit & 32bit build, according to the recent Google policy change.

We have included respective abifilter "ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'" in the Build.gradle.

We were able to generate the build but when we upload the build to Play console for Beta review. It gives a warning saying "Release is not compliant with 64-bit Google Requirement".

We tried all approach, generating 4 builds (x86,x86_64,armeabi-v7a,arm64-v8a), generating two builds or uploading the universal build with all abifilter, it gives the same warning. We tried all possible approaches.

Please help us out in perfect steps of uploading the build to Play store or if we are making any mistake in generating the build please do let us know on that ends also.

Please check the build.gradle code:

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

Also, we tried with another approach given below:

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

回答1:


FIRST OF ALL YOU SET Universal 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]



回答2:


Use the Android App Bundle Publishing method to avoid these errors. Your application will be built for all types of devices by google.




回答3:


After a couple of days of struggle found the working solution here: diego.org

Basically, if you need the 64-bit library you first need to download the correct library from the source site(Respective library site). Check whether you are using the version of the Library whose 64-bit library is available or not.

Then install it to the local maven repository(Basically your Local Maven will be used in generating the 64-bit apk's):

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

And update your build gradle so that the repositories point to your local maven repo:

repositories {
   mavenLocal()
}

and you compile the correct lib:

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

Use the gradle Config:

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

Following these steps will generate two builds one with 32bit and another with 64bit, doing these will also help you to avoid errors like "Fully Shadowed apk"

Hope this helps.




回答4:


i fix my proplem it is easy you dont need mvn install:install-file

just go to download page

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

and download 2 library

1- 32 bit

2- 64 bit

this
xwalk_core_library-21.51.546.7-arm64.aar
and this xwalk_core_library-21.51.546.7-x86.aar

after download you need to open file use winrar

take the x86 libart out and add to arm64 file

so now we have 2 library on the file 32 bit and 64 bit

now add this library to android stiduo

file - new - new module - jar/aar

add you libary

after that

add your library on your project

in your build 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'
        }

that all

apk analyze yes you have 2 library 32 bit and 64 bit now you can Update your application



来源:https://stackoverflow.com/questions/56592248/not-able-to-upload-64-bit-build-in-google-play-store

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!