2
votes

Impossible de télécharger une version 64 bits dans Google Play Store

Nous essayons d'importer les versions 64 bits et 32 ​​bits, conformément au récent changement de politique de Google.

Nous avons inclus les abifiltre respectifs " ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' " dans le Build.gradle.

Nous avons pu générer la version, mais lorsque nous l'avons téléversée sur la console Play pour examen en version bêta. Il émet un avertissement indiquant " La version n'est pas conforme aux exigences de Google 64 bits ". entrez la description de l'image ici

Nous avons essayé toutes les approches, générant 4 builds ( x86, x86_64, armeabi-v7a, arm64-v8a ), générant deux compile ou télécharge la version universelle avec tous les abifilter, cela donne le même avertissement. Nous avons essayé toutes les approches possibles.

Veuillez nous aider dans les étapes parfaites de téléchargement de la version sur Play Store ou si nous commettons une erreur lors de la génération de la version, veuillez nous en informer à ce sujet également.

Veuillez vérifier le code build.gradle:

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

Nous avons également essayé avec une autre approche donnée ci-dessous:

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


1 commentaires

Je vote pour fermer cette question comme hors sujet, car meta.stackoverflow.com/q/272165/6296561


4 Réponses :


1
votes

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]


5 commentaires

Merci pour la réponse, mais même si je dis universalApk = false, j'aurai quand même 4 versions générées si j'utilise l'une ou l'autre de ces versions 64 bits, elle affiche le même avertissement.


comparez d'abord mon diplôme et le vôtre et faites quelques changements après me dire


C'est exactement la même chose, juste le drapeau universalApk est différent.


vous n'avez pas l'option lint et supprimez ndk.abifilter de la configuration par défaut


vous utilisez n'importe quel code natif dans votre application si oui, vous devez donc utiliser ndk.AbiFilter Sinon, vous n'avez pas besoin de ndkfilter.



1
votes

Utilisez la méthode Publication de l'ensemble d'applications Android pour éviter ces erreurs. Votre application sera conçue pour tous les types d'appareils par Google.


1 commentaires

Merci pour la réponse, mais en raison de la complexité de l'application, nous ne pourrons pas utiliser l'approche Android App Bundle.



2
votes

Après quelques jours de lutte, j'ai trouvé la solution de travail ici: diego.org

Fondamentalement, si vous avez besoin de la bibliothèque 64 bits, vous devez d'abord télécharger la bibliothèque correcte à partir du site source (site de bibliothèque respectif). Vérifiez si vous utilisez la version de la bibliothèque dont la bibliothèque 64 bits est disponible ou non.

Ensuite, installez-le dans le référentiel maven local (en gros, votre Maven local sera utilisé pour générer les apk 64 bits):

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

Et mettez à jour votre compilez gradle pour que les dépôts pointent vers votre référentiel maven local:

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

et vous compilez la bonne lib:

repositories {
   mavenLocal()
}

Utilisez la configuration gradle:

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

En suivant ces étapes, vous générerez deux versions, l'une avec 32 bits et l'autre avec 64 bits , en faisant ceux-ci vous aideront également à éviter des erreurs telles que " Fully Shadowed apk "

J'espère que cela vous aidera.


0 commentaires

1
votes

je répare mon proplem c'est facile vous n'avez pas besoin de mvn install: install-file

allez simplement à la page de téléchargement

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

et téléchargez 2 bibliothèques

1 à 32 bits

2 à 64 bits

ce
xwalk_core_library-21.51.546.7-arm64.aar
et ça xwalk_core_library-21.51.546.7-x86.aar

après le téléchargement, vous devez ouvrir le fichier en utilisant winrar

retirer la libart x86 et l'ajouter au fichier arm64

donc maintenant nous avons 2 bibliothèques sur le fichier 32 bits et 64 bits

entrez la description de l'image ici

ajoutez maintenant cette bibliothèque à android stiduo

fichier - nouveau - nouveau module - jar / aar

ajoutez votre bibliothèque

après cela

 entrez la description de l'image ici a >

ajoutez votre bibliothèque à votre projet

dans votre gradle de construction

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

que tout

apk analyse oui vous avez 2 bibliothèque 32 bit et 64 bits, vous pouvez maintenant mettre à jour votre application

 entrez la description de l'image ici


1 commentaires

C'est probablement le moyen le plus propre de le faire actuellement, d'autant plus qu'il n'y a pas de support pour cela à moins que vous ne souhaitiez faire plusieurs versions d'APK. Assez drôle, j'ai eu ce problème exact avec un projet hérité utilisant également la même bibliothèque xwalk, donc cette réponse m'a sauvé la journée!