Wie richte ich gradle und android studio ein, um Release Build zu machen?

76

Ich möchte eine Android-App erstellen und mit dem Signieren beginnen. Dafür brauche ich die Release-Version von apk. In der Google-Dokumentation werden nur Eclipse- und Ant-Methoden für Release-Builds vorgeschlagen: http://developer.android.com/tools/publishing/app-signing.html#releasecompile

Ich kann jedoch nicht herausfinden, wie man die Gradle Build Release-Version von apk erzwingt. build.gradlegibt auch keine Hinweise. gradlew tasksschlägt vor, dass es keine Installationsversion gibt, aber die Deinstallationsversion existiert:

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

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

Was fehlt mir?

IBr
quelle
Ich verwende Gradle derzeit nicht in Android Studio, aber die Möglichkeit, dies mit dem ursprünglichen Ant-Build zu tun, besteht darin, einfach Build-> Generate Signed APKaus dem Menü zu verwenden.
free3dom
Danke, das habe ich verpasst, es wird reichen. Trotzdem möchte ich wissen, wie man eine Release-Version eines nicht signierten Pakets separat generiert und dann signiert und was immer ich will.
IBr
Sie sollten automatisch eine Release- und Debug-Version Ihrer Build-Varianten erhalten. Wenn Sie ein nicht signiertes Paket wünschen, lassen Sie es mich wissen.
schulden

Antworten:

42

In der neuesten Version von Android Studio können Sie einfach Folgendes tun:

./gradlew assembleRelease

oder aRkurz. Dies wird eine nicht signierte Release-Apk erzeugen. Das Erstellen einer signierten Apk kann auf ähnliche Weise erfolgen oder Sie können Build -> Generate Signed Apk in Android Studio verwenden.

Siehe die Dokumente hier

Hier ist mein build.gradle als Referenz:

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 {

    }
}
dres
quelle
3
In der neuesten Version von Android Studio (0.2.11) funktioniert Generate Signed Apk nicht mehr. Sie werden angewiesen, eine Signaturkonfiguration in Ihrer gradle.bundle-Datei einzurichten, die (vermutlich) von Hand über die Befehlszeile ausgeführt werden muss, es sei denn, Sie möchten
13
Warum ist das Android Studio umso schwieriger zu bedienen, je neuer es ist?
Bagusflyer
119
  1. Öffnen Sie das Build VariantsFenster, das sich normalerweise unten links im Fenster befindet :

Varianten erstellen

  1. eingestellt debugaufrelease
  2. shift+f10 Lauf!!

Anschließend führt Android Studio die assembleReleaseAufgabe aus und installiert xx-release.apk auf Ihrem Gerät.

ipcjs
quelle
5
Wie öffnen Sie Build-Varianten? Kann ich das in Android Studio tun?
Lou Morda
17
Die Build-Varianten befinden sich auf der linken Seite. Eine bessere Vorstellung von der Position finden Sie im beigefügten Screenshot :) Screenshot
Jake Zachariah Nixon
7
Versuchte dies. Aber es wird eine Fehlermeldung angezeigt: "app-release-unsigned.apk ist nicht signiert. Bitte konfigurieren Sie die Signaturinformationen für die ausgewählte Variante im Dialogfeld" Projektstruktur ". Dialogfeld" Projektstruktur öffnen "
jrhamza
2
@jrhamza Anschließend werden Sie aufgefordert, einen Freigabeschlüssel hinzuzufügen.
ipcjs
2
Erstaunlich, wie gut dieser einfache Schalter versteckt ist, wenn Sie das Fenster "Build-Varianten" noch nie geöffnet haben!
Erdferkel
31

Gradle muss nicht aktualisiert werden, um eine Release-Anwendung in Android Studio zu erstellen. Wenn Sie ein Eclipse-Benutzer waren, ist dies für Sie so einfach. Wenn Sie neu sind, befolgen Sie die Schritte

1: Gehen Sie zu "Erstellen" in der Symbolleiste. 2: Wählen Sie die Option "Signierte APK generieren ...". Geben Sie hier die Bildbeschreibung ein

3: Füllen Sie das geöffnete Formular aus und fahren Sie mit dem nächsten Schritt fort. 4: Wenn Sie bereits über .keystore oder .jks verfügen, wählen Sie diese Datei aus und geben Sie Ihr Passwort, Ihren Aliasnamen und das entsprechende Passwort ein. 5: Oder Sie haben keine .keystore- oder .jks-Datei und klicken dann auf die Schaltfläche Neu erstellen ... wie in Bild 1 gezeigt. Füllen Sie dann das Formular aus.Geben Sie hier die Bildbeschreibung ein

Der obige Prozess bestand darin, manuell zu erstellen. Wenn Sie möchten, dass Android Studio Ihre App automatisch signiert

In Android Studio können Sie Ihr Projekt so konfigurieren, dass Ihre Release-APK während des Erstellungsprozesses automatisch signiert wird:

Klicken Sie im Projektbrowser mit der rechten Maustaste auf Ihre App und wählen Sie Moduleinstellungen öffnen. Wählen Sie im Fenster Projektstruktur unter Module das Modul Ihrer App aus. Klicken Sie auf die Registerkarte Signieren. Wählen Sie Ihre Keystore-Datei aus, geben Sie einen Namen für diese Signaturkonfiguration ein (da Sie möglicherweise mehrere erstellen) und geben Sie die erforderlichen Informationen ein. Geben Sie hier die Bildbeschreibung ein Abbildung 4. Erstellen Sie eine Signaturkonfiguration in Android Studio.

Klicken Sie auf die Registerkarte Build-Typen. Wählen Sie den Release-Build aus. Wählen Sie unter Signaturkonfiguration die Signaturkonfiguration aus, die Sie gerade erstellt haben. Geben Sie hier die Bildbeschreibung ein Abbildung 5. Wählen Sie eine Signaturkonfiguration in Android Studio aus.

4: Das Wichtigste, was debuggable = false bei gradle macht.

    buildTypes {
        release {
           minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-  android.txt'), 'proguard-rules.txt'
        debuggable false
        jniDebuggable false
        renderscriptDebuggable false
        zipAlignEnabled true
       }
     }

Besuchen Sie für weitere Informationen unter info developer.android.com

AndroidLad
quelle
1
Du bist ein lebensrettender Bruder.
Jigar
20

Um die installReleaseAufgabe zu aktivieren , benötigen Sie einfach eine signingConfig. Das ist alles.

Von http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks :

Schließlich erstellt das Plugin Installations- / Deinstallationsaufgaben für alle Build-Typen (Debug, Release, Test), sofern diese installiert werden können (was eine Signatur erfordert).

Folgendes möchten Sie:

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

So erhalten Sie die installReleaseAufgabe:

Beispiel 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
    }
  }
}
Jared Burrows
quelle
Bedeutet dies, dass wir das Passwort in einem lesbaren Format halten? Wie gehe ich mit Projekten im öffentlichen Repository um, um die Passwörter privat zu halten?
Sivag1
2
Sie können sie in einem lokalen gradle.propertiesVerzeichnis ablegen oder im CI speichern.
Jared Burrows
1
Die Methode storeFile () konnte nicht gefunden
hiddeneyes02
SetstoreFile file(filename)
Norekhov
signingConfig signingConfigs.release in Build-Typen machte den Unterschied für mich!
Paul_f
6

Dies ist ein Verfahren zum Konfigurieren der Run Release-Version

1- Ändern Sie die Build-Varianten in die Release-Version.

Geben Sie hier die Bildbeschreibung ein

2- Öffnen Sie die Projektstruktur. Geben Sie hier die Bildbeschreibung ein

3- Ändern Sie die Standardkonfiguration in $ signingConfigs.release Geben Sie hier die Bildbeschreibung ein

Houssin Boulla
quelle
1
Du bist ein Gott unter den Menschen
Mitch
0

So kompilieren Sie mit Release Build wie unten gezeigt:

Geben Sie hier die Bildbeschreibung ein

Shiv Buyya
quelle