J'ai essayé de créer le fichier apk pour mon application. Cependant, le message d'erreur suivant s'affiche: Le nombre de références de méthodes ne peut pas dépasser 64 Ko.
Voici les erreurs,
Erreur: le nombre de références de méthodes dans un fichier .dex ne peut pas dépasser 64 Ko. Découvrez comment résoudre ce problème à l'adresse https://developer.Android.com/tools/building/multidex.html
Erreur: L'exécution a échoué pour la tâche ': app: transformClassesWithDexForDebug'.
com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.Common.process.ProcessException: exception.org.gradle.process. internal.ExecException: la commande de processus 'C:\Program Files\Java\jdk1.7.0_15\bin\Java.exe' 's'est terminée avec une valeur de sortie non nulle 2
Ceci est mon fichier de classement,
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "nikhilraghavendra.hopper"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-Android.txt'),
'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE-FIREBASE.txt'
exclude 'META-INF/NOTICE'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.2.1'
compile 'com.Android.support:design:23.2.1'
compile 'com.google.Android.gms:play-services-identity:8.4.0'
compile 'com.firebase:firebase-client-Android:2.3.1'
compile 'com.Android.support:cardview-v7:23.2.1'
compile 'com.google.Android.gms:play-services:8.4.0'
}
Je veux construire le fichier apk et le déployer sans aucun problème, comment puis-je le faire?
Mettre à jour
J'ai aussi essayé ce qui suit
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
dexOptions {
maxProcessCount = 4 // this is the default value
}
dataBinding{
enabled = true
}
defaultConfig {
applicationId "nikhilraghavendra.hopper"
minSdkVersion 21
targetSdkVersion 23
resConfigs "en", "fr"
versionCode 1
versionName "1.0"
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-Android.txt'),
'proguard-rules.pro'
}
debug {
minifyEnabled true
useProguard false
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE-FIREBASE.txt'
exclude 'META-INF/NOTICE'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.2.1'
compile 'com.Android.support:design:23.2.1'
compile 'com.google.Android.gms:play-services-identity:8.4.0'
compile 'com.firebase:firebase-client-Android:2.3.1'
compile 'com.Android.support:cardview-v7:23.2.1'
compile 'com.google.Android.gms:play-services:8.4.0'
}
Ceci produit le message:
Erreur: L'exécution a échoué pour la tâche ': app: transformClassesWithNewClassShrinkerForDebug'.
Avertissements détectés lors du rétrécissement, utilisez -dontwarn ou -ignorewarnings pour les supprimer.
Comment puis-je gérer cela et construire un apk approprié? S'il vous plaît aider.
Android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.try.app"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
multiDexEnabled true
}
ici multiDexEnabled true
devrait faire le jeu pour vous
UPDATE: Support de la dernière version Android version
1. Si votre minSdkVersion
est défini sur 21 ou supérieur, il vous suffit de définir multiDexEnabled sur true dans votre fichier build.gradle au niveau du module, comme indiqué ci-dessus. .
2. Toutefois, si votre minSdkVersion
est défini sur 20 ou une valeur inférieure, vous devez utiliser la bibliothèque de prise en charge multidex avec les modifications ci-dessus, comme suit:
dependencies {
compile 'com.Android.support:multidex:1.0.1'
}
Outre l'ajout ci-dessus de la bibliothèque de support, vous devez apporter des modifications à votre classe Application comme indiqué dans ce Lien .
MEILLEURE PRATIQUE:
1. Supprimez tout code inutilisé avec proguard.
2. Évitez d’ajouter des dépendances inutiles dans votre projet.
3. Si un nombre limité de méthodes ou de classes de n'importe quelle bibliothèque open source est nécessaire, il est conseillé de ne copier que celles de votre projet, car cela vous donne non seulement un contrôle total sur elles, mais permet également à proguard de les utiliser et vous n'aurez aucune information inutilisée. méthodes dans votre code.
Source: Développeurs Android - Configurer les applications avec un nombre de méthodes de 64 Ko
Impossible de générer un apk: le nombre de références de méthodes ne peut pas dépasser 64 Ko si le fichier app .dex contient plus de 65 536 méthodes.
Exceed 65K Method Cela signifie que la méthode compte plus de 65 536 méthodes. Il existe différentes façons de résoudre ce problème:
1. Réduisez les dépendances dans votre projet en mettant les dépendances nécessaires
La plupart des problèmes que j'ai trouvés chez d'autres développeurs sont l'utilisation des services Google Play dans leur projet comme celui-ci.
compile 'com.google.Android.gms:play‐services:8.4.0'
Par conséquent, la meilleure solution consiste à ne choisir que certaines dépendances dans les services Google Play que vous souhaitez vraiment utiliser.
compile 'com.google.Android.gms:play‐services‐location:8.4.0'
compile 'com.google.Android.gms:play‐services‐maps:8.4.0'
compile 'com.google.Android.gms:play‐services‐ads:8.4.0'
2. Définir la version minimale du SDK sur 21 ou supérieure
Pourquoi cela a fonctionné quand changer le SDK minimum à 21? C'est à cause de Android 5.0 ou supérieur sont des applications ART (Android Runtime) prenant en charge MultiDex au lieu de Dalvik. Ainsi, ART peut prendre en charge plus de 65 536 méthodes.
. Utilisez Proguard pour réduire la méthode inutile
4. Utilisez MultiDex
Mais ce sont les limites de la bibliothèque MultiDex
• Peut se produire ANR lors du lancement de l'application si les fichiers .dex sont trop volumineux.
• Doit être défini au minimum SDK à la version 14 ou supérieure.
• MulitDex utilise plus de mémoire et peut se bloquer lors de l'exécution de l'application si la mémoire d'allocation est supérieure à la limite.
• Prenez plus de temps pour construire le projet
Mettez ceci dans votre defaultConfig
:
multiDexEnabled true