Je veux construire Android app et commencer à le signer. Pour cela, je dois disposer de la version Release d'apk. La documentation Google ne propose que des méthodes Eclipse et ant permettant de créer des versions: http: //developer.Android.com/tools/publishing/app-signing.html#releasecompile
Cependant, je ne trouve pas comment forcer la version de apk de la version de construction de Gradle. build.gradle
ne donne aucune indication non plus. gradlew tasks
suggère qu’il n’existe pas de configuration d’installation mais que la version de désinstallation existe:
Install tasks
-------------
installDebug - Installs the Debug build
installTest - Installs the Test build for the Debug build
uninstallAll - Uninstall all applications.
uninstallDebug - Uninstalls the Debug build
uninstallRelease - Uninstalls the Release build
uninstallTest - Uninstalls the Test build for the Debug build
Ma build.gradle
:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'Android'
repositories {
mavenCentral()
}
dependencies {
compile 'com.Android.support:support-v4:13.0.+'
compile files('libs/Android-support-v4.jar')
compile project(":libraries:ActionBarSherlock")
compile project(":libraries:CollabsibleSearchMenu")
}
Android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 8
targetSdkVersion 16
}
}
Qu'est-ce qui me manque?
dans la dernière version de Android studio, vous pouvez simplement faire:
./gradlew assembleRelease
ou aR
pour faire court. Cela produira une version non signée apk. Construire un apk signé peut être fait de la même manière ou vous pouvez utiliser Build -> Generate Signed Apk in Android Studio.
Voici mon build.gradle pour référence:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'Android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
Android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
Java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/Java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/Java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
buildTypes {
release {
}
}
Build Variants
, généralement présent dans le coin inférieur gauche de la fenêtre :debug
sur release
shift+f10
Run !!then, Android Studio exécutera la tâche assembleRelease
et installera xx-release.apk sur votre appareil.
Il n'est pas nécessaire de mettre à jour Gradle pour créer l'application de publication dans Android studio.Si vous étiez un utilisateur d'Eclipse, ce sera tellement facile pour vous. Si vous êtes nouveau, suivez les étapes
1: Allez à la "Construction" dans la section de la barre d’outils. 2: Choisissez l'option "Générer l'APK signé ...".
3: remplissez le formulaire ouvert et passez à 4: si vous avez déjà .keystore ou .jks, choisissez ce fichier et entrez votre mot de passe, votre pseudonyme et votre mot de passe respectif. 5: Ou n’avez pas de fichier .keystore ou .jks, puis cliquez sur le bouton Créer nouveau ... comme indiqué sur la photo 1, puis remplissez le formulaire.
Le processus ci-dessus était de faire la construction manuellement. Si vous souhaitez Android studio signer automatiquement votre application)
Dans Android Studio, vous pouvez configurer votre projet pour qu'il signe automatiquement votre version APK pendant le processus de construction:
Dans le navigateur du projet, cliquez avec le bouton droit de la souris sur votre application et sélectionnez Ouvrir les paramètres du module. Dans la fenêtre Structure du projet, sélectionnez le module de votre application sous Modules. Cliquez sur l'onglet Signature. Sélectionnez votre fichier de clés, entrez un nom pour cette configuration de signature (vous pouvez en créer plusieurs), puis entrez les informations requises. Figure 4. Créez une configuration de signature dans Android Studio.
Cliquez sur l'onglet Types de construction. Sélectionnez la version release. Sous Signing Config, sélectionnez la configuration de signature que vous venez de créer. Figure 5. Sélectionnez une configuration de signature dans Android Studio.
4: La chose la plus importante qui rend debuggable = false at gradle.
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard- Android.txt'), 'proguard-rules.txt'
debuggable false
jniDebuggable false
renderscriptDebuggable false
zipAlignEnabled true
}
}
visitez pour plus d'infos developer.Android.com
Pour activer la tâche installRelease
, vous avez simplement besoin d'un signingConfig
. C'est tout.
De http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks :
Enfin, le plug-in crée des tâches d'installation/de désinstallation pour tous les types de construction (débogage, édition, test), dans la mesure où ils peuvent être installés (ce qui nécessite une signature).
Install tasks
-------------
installDebug - Installs the Debug build
installDebugTest - Installs the Test build for the Debug build
installRelease - Installs the Release build
uninstallAll - Uninstall all applications.
uninstallDebug - Uninstalls the Debug build
uninstallDebugTest - Uninstalls the Test build for the Debug build
uninstallRelease - Uninstalls the Release build <--- release
installRelease
:Exemple build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.2.3'
}
}
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig {
applicationId 'demo'
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName '1.0'
}
signingConfigs {
release {
storeFile <file>
storePassword <password>
keyAlias <alias>
keyPassword <password>
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}