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 ".
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' }
4 Réponses :
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]
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.
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.
Merci pour la réponse, mais en raison de la complexité de l'application, nous ne pourrons pas utiliser l'approche Android App Bundle.
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.
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
ajoutez maintenant cette bibliothèque à android stiduo
fichier - nouveau - nouveau module - jar / aar
ajoutez votre bibliothèque
après cela
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
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!
Je vote pour fermer cette question comme hors sujet, car meta.stackoverflow.com/q/272165/6296561