Je ne parviens pas à générer un fichier APK signé à l'aide de minifyEnabled true
et shrinkResources true
Niveau de l'application: build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.1.0'
}
}
apply plugin: 'com.Android.application'
repositories {
mavenCentral()
}
Android {
compileSdkVersion 23
buildToolsVersion '22.0.1'
defaultConfig {
applicationId "......."
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
configurations {
compile.exclude group: "org.Apache.httpcomponents", module: "httpclient"
}
}
dependencies {
compile 'com.Android.support:design:23.0.1'
compile 'com.Android.support:cardview-v7:23.0.1'
compile 'com.Android.support:recyclerview-v7:23.0.1'
compile 'com.Android.support:appcompat-v7:23.0.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.google.apis:google-api-services-youtube:v3-rev149-1.20.0'
compile 'com.google.http-client:google-http-client-Android:1.20.0'
compile 'com.google.api-client:google-api-client-Android:1.20.0'
compile 'com.google.api-client:google-api-client-gson:1.20.0'
compile files('libs/YouTubeAndroidPlayerApi.jar')
compile 'com.github.clans:fab:1.6.2'
}
MessageView
Information:Gradle tasks [:app:assembleRelease]
:app:preBuild UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:checkReleaseManifest
:app:preDebugBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2301Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
:app:prepareComGithubClansFab162Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl
:app:compileReleaseRenderscript
:app:generateReleaseBuildConfig
:app:generateReleaseAssets UP-TO-DATE
:app:mergeReleaseAssets
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources
:app:mergeReleaseResources
:app:processReleaseManifest
:app:processReleaseResources
:app:generateReleaseSources
:app:processReleaseJavaRes UP-TO-DATE
:app:compileReleaseJavaWithJavac
Note: .....YouTubeRecyclerViewFragment.Java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: ....GetPlaylistAsyncTask.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:app:compileReleaseNdk UP-TO-DATE
:app:compileReleaseSources
:app:proguardRelease UP-TO-DATE
:app:dexRelease
:app:shrinkReleaseResources
Removed unused resources: Binary resource data reduced from 741KB to 402KB: Removed 45%
Note: If necessary, you can disable resource shrinking by adding
Android {
buildTypes {
release {
shrinkResources false
}
}
}
:app:validateExternalOverrideSigning
:app:packageRelease FAILED
Error:Execution failed for task ':app:packageRelease'.
> Unable to compute hash of ....\app\build\intermediates\classes-proguard\release\classes.jar
Information:BUILD FAILED
Information:Total time: 7.45 secs
Information:1 error
Information:0 warnings
Information:See complete output in console
Vous obtenez
Removed unused resources: Binary resource data reduced from 741KB to 402KB: Removed 45%
Note: If necessary, you can disable resource shrinking by adding
Android {
buildTypes {
release {
shrinkResources false
}
}
}
:app:validateExternalOverrideSigning
:app:packageRelease FAILED
Error:Execution failed for task ':app:packageRelease'.
La réduction des ressources ne fonctionne qu'en conjonction avec la réduction du code.
minifyEnabled est un outil Android qui diminuera la taille de votre application lorsque vous allez la construire.
Android {
buildTypes {
release {
shrinkResources true // This must be first
minifyEnabled true // This must be after shrinkResources
proguardFiles getDefaultProguardFile('proguard-Android.txt'),
'proguard-rules.pro'
}
}
}
Si vous n'avez pas encore créé votre application à l'aide de minifyEnabled pour la réduction de code, essayez avant d'activer shrinkResources, car vous devrez peut-être modifier votre fichier proguard-rules.pro pour conserver les classes ou méthodes créées ou invoquées dynamiquement avant de commencer à supprimer Ressources.
Veuillez lire les directives officielles concernant Réduisez votre code et vos ressources
Conseils
Utilise la version la plus récente
compileSdkVersion 25
buildToolsVersion '25.0.1'
targetSdkVersion 25
compile 'com.Android.support:appcompat-v7:25.1.0' // set other 25.1.0
[~ # ~] note [~ # ~]
YouTubeRecyclerViewFragment.Java uses or overrides a deprecated API.
Utiliser la dernière version alternative.
Vérifiez d'abord si vous avez vraiment besoin d'utiliser shrinkResources
Si oui, faites comme suggéré dans le lien des développeurs https://developer.Android.com/studio/build/shrink-code.html#shrink-resources mentionné ci-dessus par IntelliJ Amiya , vous devez utiliser comme ci-dessous
Android { BuildTypes { Release { ShrinkResources true // - ajoutez toujours ceci ci-dessus minifyEnabled - MinifyEnabled true proguardFiles getDefaultProguardFile ('proguard-Android.txt'), 'proguard-rules.pro' } } } } }
Nettoyez le projet et recommencez à générer Build/Apk signé. ça marche bien pour moi.
Essayez de générer un fichier APK signé à l'aide de la commande terminal by gradle, consultez la trace de votre pile qui vous donnera un journal détaillé de l'emplacement du problème.
Sous Windows
$gradle clean
$ gradle --stacktrace assembleRelease
Dans Ubuntu
$./gradlew clean
$./gradlew --stacktrace assembleRelease
si vous avez toujours un problème après avoir empilé la trace ici
R.raw.Keep (fichier xml)
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.Android.com/tools"
tools:shrinkMode="strict" />
N'oubliez pas de référencer cette ressource à partir du fichier source .Java. Pour plus de détails, voir https://developer.Android.com/studio/build/shrink-code.html
si vous êtes préoccupé par la taille de votre fichier apk, il est également recommandé de réduire les fichiers image. C'est-à-dire convertir le canal RVB en canal indexé, cela peut économiser jusqu'à 50% d'espace supplémentaire.
Remarque: ..... YouTubeRecyclerViewFragment.Java utilise ou remplace une API obsolète.
Utilisez Keytool binary ou exe pour générer un fichier de clés privé. Instructions dans le lien ci-dessous. Vous pouvez ensuite signer votre application à l'aide de ce magasin de clés. Keytool est installé lorsque vous installez Java.
http://docs.Oracle.com/cd/E19509-01/820-3503/ggfen/index.html
Cette :app:proguardRelease UP-TO-DATE
.. rend ce journal pas assez complet pour dire si cette réponse va aider ou non.
Veuillez refaire la version clean + build pour avoir un journal complet avec toutes les étapes, vous pouvez également ajouter --info
aux options gradle, ou même --debug
pour obtenir plus de messages de diagnostic dans le journal de génération gradle.
Clean + build peut également résoudre un problème étrange de gradle/autre outil ne mettant pas correctement à jour certains fichiers et réutilisant un ancien incorrect - cela se produit rarement.
Essayez également de désactiver la minification (pas la solution, essayez simplement), si cela aide (pour localiser le problème , c'est vraiment avec la minification proguard et pas ailleurs).
Et bien sûr, s'il y a des erreurs liées à proguard pendant la minification, essayez de suivre les conseils de la réponse liée.
Si vous ne pouvez pas signer l'apk dans Android Studio, signez-le manuellement avec
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
si vous n'avez pas la clé, générez-la avec keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Vous pouvez également signer manuellement comme manuel faire:
keytool -genkey -v -keystore my-release-key.jks-keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign -v -p 4 my-app-unaligned.apk my-app.apk
apksigner sign --ks my-release-key.jks my-app.apk
vérifier l'apk signé
apksigner verify my-app.apk