Ich hatte ziemlich viel Spaß daran, dies herauszufinden. Hier ist mein Durchgang.
A bis Z-Anleitung zum Erstellen einer Gradle-Build-Datei in IntelliJ (v.13.1.4) In dieser Anleitung wird davon ausgegangen, dass Sie wissen, wie eine Keystore-Datei erstellt wird. Damit dieses Tutorial funktioniert, muss sich Ihre Keystore-Datei in Ihrem App-Ordner befinden und Ihre zipalign.exe-Datei muss sich in 'SDK-ROOT \ tools' befinden. Diese Datei befindet sich normalerweise in 'SDK-ROOT \ build-tools' und unter diesem Ordner befindet sie sich im höchsten API-Ordner (Alpha oder Beta, ich empfehle die Alpha-Version).
Für diejenigen unter Ihnen, die direkt hier hineinspringen möchten, ist die Gradle-Build-Datei.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
signingConfigs {
playstore {
keyAlias 'developers4u'
keyPassword 'thisIsNotMyRealPassword'
storeFile file('developers4u.keystore')
storePassword 'realyItIsNot'
}
}
buildTypes {
assembleRelease {
debuggable false
jniDebugBuild false
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
zipAlign true
signingConfig signingConfigs.playstore
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:support-v4:20.0.0'
implementation 'com.android.support:appcompat-v7:20.0.0'
}
Sie können einen Teil dieser Erstellungsdatei (oben) über die Menüoption erstellen: Datei- / Projektstruktur Wählen Sie hier Facetten aus und klicken Sie auf 'Android-Gradle (App). Von hier aus sehen Sie die Registerkarten: "Eigenschaften", "Signieren", "Flavours", "Build-Typen" und "Abhängigkeiten". In diesem Rundgang werden nur "Signieren" und "Build-Typen" verwendet. Geben Sie unter "Build-Typen" (im Abschnitt "Name") einen beliebigen Namen ein, mit dem Sie Ihre Build-Typ-Konfiguration identifizieren möchten, und geben Sie in den anderen 4 Feldern Ihre Keystore-Informationen ein (legen Sie den Keystore-Pfad unter Ihrem App-Ordner fest).
Geben Sie unter 'Build Types' den Wert 'assembleRelease' in das Namensfeld ein. 'Debuggable' sollte auf false gesetzt sein, 'Jni Debug Build' sollte false sein, 'Run Proguard' auf true und 'Zip Align' auf true. Dadurch wird eine Build-Datei generiert, aber nicht wie oben dargestellt. Anschließend müssen Sie der Build-Datei einige Dinge hinzufügen. Der Speicherort der ProGuard-Datei wird hier manuell in der Gradle-Build-Datei festgelegt. (wie oben abgebildet)
Die DSL-Container, die Sie anschließend hinzufügen müssen, lauten wie folgt:
android {
....
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
....
}
Sie müssen auch hinzufügen:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:support-v4:20.0.0'
implementation 'com.android.support:appcompat-v7:20.0.0'
}
Beachten Sie, dass sich dieser DSL-Container oben ('Abhängigkeiten') am Ende der Konfigurationsdatei befinden sollte, jedoch nicht im Android-DSL-Container. Um den Abhängigkeitscontainer über das IntelliJ-Menü zu erstellen, wählen Sie: Datei- / Projektstruktur. Von dort aus wählen Sie erneut Facetten und dann Android-Gradle (App). Sie sehen die gleichen 5 Registerkarten wie oben erwähnt. Wählen Sie die Registerkarte "Abhängigkeiten" und fügen Sie die gewünschten Abhängigkeiten hinzu.
Nachdem dies alles erledigt ist, sollte eine Gradle-Build-Datei angezeigt werden, die der Datei oben in dieser Anleitung ähnelt. Um Ihre signierte Version mit Reißverschluss zu erstellen, müssen Sie die Gradle-Aufgaben öffnen. Sie gelangen zu diesem Fenster, indem Sie Ansicht / Werkzeugfenster / Gradle auswählen. Von hier aus können Sie auf 'assembleAssembleRelease' doppelklicken. Dies sollte Ihre bereitstellbare APK generieren.
Die potenziellen Probleme, die beim Kompilieren Ihrer Version auftreten können, sind (ohne darauf beschränkt zu sein): Ihre Gradle-Builddatei befindet sich am falschen Ort. Es gibt zwei Gradle-Builddateien. eine in Ihrem Anwendungsstammordner und eine andere im App-Ordner unter dem Anwendungsstamm. Sie müssen letzteres verwenden.
Möglicherweise haben Sie auch Flusenprobleme. (Hinweis: Android Developer Studio kann Lint-Probleme viel besser erkennen als IntelliJ. Sie werden dies bemerken, wenn Sie versuchen, eine signierte APK über die Menüoptionen zu generieren.)
Um Flusenprobleme zu umgehen, müssen Sie den folgenden DSL-Container in den Android-Container (oben) stellen:
android {
....
lintOptions {
abortOnError false
}
....
}
Wenn Sie dies in Ihren Android-DSL-Container einfügen, wird eine Fehlerdatei im Build-Ordner (direkt unter Ihrem App-Ordner) generiert. Der Dateiname sollte etwa "lint-results-release-fatal.html" lauten. Diese Datei teilt Ihnen dies mit die Klasse, in der der Fehler aufgetreten ist. Eine andere Datei, die generiert wird, ist eine XML-Datei, die die mit dem Flusenfehler verknüpfte 'Problem-ID' enthält. Der Dateiname sollte ungefähr "lint-results-release-fatal.xml" sein. Irgendwo oben in der Datei sehen Sie ein Knotenproblem, in dem Sie etwas Ähnliches wie 'id = "IDOfYourLintProblem"' sehen.
Um dieses Problem zu beheben, öffnen Sie die Datei in Ihrem Projekt, die in der Datei 'lint-results-assembleRelease-fatal.html' aufgeführt ist, und geben Sie die folgende Codezeile in die Java-Klassendatei direkt über dem Klassennamen ein: @SuppressLint ("IDOfYourLintProblem" "). Möglicherweise müssen Sie 'android.annotation.SuppressLint;' importieren.
Ihre Java-Klassendatei sollte also folgendermaßen aussehen:
package com.WarwickWestonWright.developers4u.app.CandidateArea;
import android.annotation.SuppressLint;
... other imports
@SuppressLint("IDOfYourLintProblem")
public class SearchForJobsFragment extends Fragment {... rest of your class definition}
Beachten Sie, dass das Unterdrücken von Flusenfehlern nicht immer die beste Idee ist. Sie sind möglicherweise besser dran, Ihren Code zu ändern, der die Flusenfehler verursacht hat.
Ein weiteres Problem, das möglicherweise auftreten kann, besteht darin, dass Sie die Umgebungsvariable für die Umgebungsvariable Gradle HOME nicht festgelegt haben. Diese Variable heißt 'GRADLE_HOME' und sollte als Pfad des Gradle-Ausgangsverzeichnisses festgelegt werden, z. B. 'C: \ gradle-1.12'. Manchmal möchten Sie auch die Umgebungsvariable für 'ANDROID_HOME' auf 'YOUR- setzen. SDK-Root \ sdk '
Kehren Sie anschließend zum Fenster mit den Gradle-Aufgaben zurück und doppelklicken Sie auf assembleAssembleRelease.
Wenn alles erfolgreich ist, sollten Sie in der Lage sein, in den Ordner app \ build \ apk zu gehen und Ihre bereitstellbare APK-Datei zu finden.