Miałem całkiem niezłą zabawę przy rozgryzaniu tego. Oto moje przejście.
Przewodnik od A do Z na temat tworzenia pliku kompilacji stopni w IntelliJ (v.13.1.4) W tym przewodniku założono, że wiesz, jak utworzyć plik magazynu kluczy. Aby ten samouczek zadziałał, plik magazynu kluczy musi znajdować się w folderze aplikacji, a plik zipalign.exe musi znajdować się w folderze „SDK-ROOT \ tools”. Ten plik zwykle znajduje się w „SDK-ROOT \ build-tools” i pod tym folderem będzie w najwyższym folderze API (alfa lub beta, zalecam wersję alfa).
Dla tych z Was, którzy chcą wskoczyć tutaj, jest plik kompilacji stopni.
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'
}
Możesz zbudować część tego pliku kompilacji (powyżej) z opcji menu: Struktura pliku / projektu Z tego miejsca wybierz Aspekty i kliknij „Android-Gradle (aplikacja). Stąd zobaczysz zakładki: „Właściwości”, „Podpisywanie”, „Aromaty”, „Typy kompilacji” i „Zależności” do tego przejścia, będziemy po prostu używać „Podpisywania” i „Typów kompilacji”. W obszarze „Typy kompilacji” (w sekcji nazwy) wprowadź dowolną nazwę, która ma identyfikować konfigurację typu kompilacji, a w pozostałych 4 polach wprowadź informacje o pliku kluczy (ustawiając ścieżkę do pliku kluczy tą pod folderem aplikacji).
Pod „Typami kompilacji” wpisz w polu nazwy wartość „assembleRelease”, „Debuggable” powinno być ustawione na false, „Jni Debug Build” powinno być false, ustawić „Run Proguard” na true, a „Zip Align” na true. Spowoduje to wygenerowanie pliku kompilacji, ale nie w sposób pokazany powyżej, będziesz musiał dodać kilka rzeczy do pliku kompilacji. Lokalizacja pliku ProGuard zostanie tutaj ustawiona ręcznie w pliku kompilacji stopni. (jak pokazano powyżej)
Kontenery DSL, które należy później dodać, są następujące:
android {
....
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
....
}
Będziesz także musiał dodać:
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'
}
zwróć uwagę, że powyższy kontener DSL („zależności”) powinien znajdować się na dole pliku konfiguracyjnego, ale nie powinien znajdować się w kontenerze DSL Androida. Aby zbudować kontener zależności z menu IntelliJ, wybierz: Struktura pliku / projektu. Następnie wybierz ponownie Facets, a następnie Android-Gradle (aplikacja). Zobaczysz te same 5 zakładek, jak wspomniano powyżej. Wybierz kartę „Zależności” i dodaj wymagane zależności.
Po tym wszystkim powinieneś zobaczyć plik kompilacji Gradle podobny do pliku na początku tego przewodnika. Aby zbudować podpisaną wersję dostosowaną do formatu zip, musisz otworzyć zadania Gradle. Możesz przejść do tego okna, wybierając Widok / Narzędzie Windows / Gradle. Stąd możesz dwukrotnie kliknąć „asembleAssembleRelease. Powinno to wygenerować pakiet APK do wdrożenia.
Potencjalne problemy, które mogą wystąpić podczas kompilacji wydania, to (ale nie wyłącznie): plik kompilacji Gradle znajduje się w niewłaściwym miejscu. Istnieją dwa pliki kompilacji Gradle; jeden w folderze głównym aplikacji, a drugi w folderze aplikacji w katalogu głównym aplikacji. Musisz użyć tego ostatniego.
Możesz także mieć problemy z kłaczkami. (Uwaga: Android Developer Studio jest znacznie lepszy w wykrywaniu problemów Lint niż IntelliJ, zauważysz to podczas próby wygenerowania podpisanego pliku APK z opcji menu)
Aby obejść problemy z kłaczkami, musisz umieścić następujący kontener DSL w kontenerze Androida (u góry):
android {
....
lintOptions {
abortOnError false
}
....
}
umieszczenie tego w kontenerze DSL Androida spowoduje wygenerowanie pliku błędu w folderze kompilacji (bezpośrednio pod folderem aplikacji), nazwa pliku powinna być taka jak „lint-results-release-fatal.html”, ten plik powie ci klasa, w której wystąpił błąd. Kolejnym plikiem, który zostanie wygenerowany, jest plik XML zawierający „identyfikator problemu” związany z błędem kłaczków. Nazwa pliku powinna być podobna do „lint-results-release-fatal.xml”. Gdzieś w górnej części pliku zobaczysz „problem” węzła, w którym zobaczysz coś podobnego do „id =" IDOfYourLintProblem "
Aby rozwiązać ten problem, otwórz w swoim projekcie plik wymieniony w pliku „lint-results-assembleRelease-fatal.html” i wprowadź następujący wiersz kodu w pliku klasy Java tuż nad nazwą klasy: @SuppressLint („IDOfYourLintProblem” „). Być może trzeba zaimportować plik „android.annotation.SuppressLint;”
Twój plik klasy Java powinien wyglądać następująco:
package com.WarwickWestonWright.developers4u.app.CandidateArea;
import android.annotation.SuppressLint;
... other imports
@SuppressLint("IDOfYourLintProblem")
public class SearchForJobsFragment extends Fragment {... rest of your class definition}
Pamiętaj, że eliminowanie błędów kłaczków nie zawsze jest najlepszym pomysłem, dlatego lepiej zmienić kod, który spowodował błędy kłaczków.
Innym problemem, który może potencjalnie wystąpić, jest brak ustawienia zmiennej środowiskowej dla zmiennej środowiskowej Gradle HOME. Ta zmienna nosi nazwę „GRADLE_HOME” i powinna mieć ustawioną ścieżkę do katalogu domowego gradle, coś w rodzaju „C: \ gradle-1.12”. Czasami możesz również chcieć ustawić zmienną środowiskową dla „ANDROID_HOME”, ustaw ją na „YOUR- SDK-Root \ sdk '
Po tym powróć do okna zadań Gradle i kliknij dwukrotnie assembleAssembleRelease.
Jeśli wszystko się powiedzie, powinieneś być w stanie przejść do folderu app \ build \ apk i znaleźć plik APK do wdrożenia.