[LINUX] Erstellen einer Umgebung, die automatisch mit Github-Aktionen erstellt wird (Android-Version)

Überblick

Wir haben CI / CD in Github-Aktionen überprüft. Darunter habe ich eine Vorlage erstellt, die regelmäßig auf andere Entwicklungsprojekte angewendet werden kann. Das Projekt der erstellten Vorlage lautet wie folgt. github-actions-examples

Dieses Mal werde ich es hier als Memorandum zum Aufbau einer solchen Umgebung beschreiben. Darüber hinaus wurde das oben genannte Projekt in verschiedenen anderen Umgebungen ausprobiert. Dieses Mal konzentrieren wir uns auf die Methode der automatischen Erstellung mit "Android-Anwendung" in Github-Aktionen. Ich werde es vorstellen.

In diesem Artikel finden Sie Informationen zur automatischen Bereitstellung auf der Website und zu den Grundeinstellungen in Github-Aktionen. Erstellen einer Umgebung für die automatische Bereitstellung mit Github-Aktionen (Website)

Darüber hinaus überprüfen wir derzeit die Umgebungskonstruktion des automatischen Builds mit "iOS" und "Unity". Ich möchte dies einführen, sobald die Methode festgelegt ist.

Was du machen willst

Build

Fazit

Bitte beachten Sie jeweils die folgenden Inhalte

Verschiedene Erklärungen

JDK-Setup

Erstellen Sie eine Android-App als Java-Anwendung. Dieses Mal werden wir JDK zum Erstellen verwenden (auch wenn wir mit Kotlin entwickeln). Verwenden Sie in Github-Aktionen action / setup-java, um "JDK" einzurichten. Ich kann. Dieses Mal werden wir auch mit "Java Version 1.8" erstellen. Geben Sie daher die zu verwendende Version an. Beschreiben Sie Folgendes in der yml-Datei.

jobs:
  build:
    steps:
      ...
      - name: setup JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8

Android SDK-Setup

Nachdem Sie das JDK eingerichtet haben, müssen Sie als Nächstes das Android SDK herunterladen und einrichten. Das "Android SDK" wird normalerweise in Android Studio heruntergeladen, diesmal jedoch in der CLI. Laden Sie es daher so herunter, dass Android Studio nicht verwendet wird. Laden Sie die "Zip-Datei" herunter, die das "Android SDK" im Abschnitt "Nur Befehlszeilentools" von Android Studio enthält. Diese "Zip-Datei" hängt von der Version der "Android SDK" -Tools ab. Geben Sie die URL ein, die die Version angibt, die Sie herunterladen und verwenden möchten. Der folgende Vorgang ist der Vorgang des Herunterladens und Entpackens der Zip-Datei.

wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${{ matrix.sdk-tools }}.zip
unzip -d android-sdk-linux android-sdk.zip

Geben Sie für "matrix.sdk-tools" den Wert der obigen Version von "Android SDK" an. In diesem Beispiel verwenden wir "4333796".

Übergeben Sie nach dem Herunterladen und Dekomprimieren des "Android SDK" die Einstellungen für die Verwendung von "Build-Tools", "Plattform-Tools" und der Umgebungsvariablen "PATH".

echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${{ matrix.compile-sdk }}" >/dev/null
echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${{ matrix.build-tools }}" >/dev/null
export ANDROID_HOME=$PWD/android-sdk-linux
export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/

Akzeptieren Sie dann den Weihrauch, um das Android SDK zu verwenden.

set +o pipefail
yes | android-sdk-linux/tools/bin/sdkmanager --licenses
set -o pipefail

Nachdem Sie das "Android SDK" eingerichtet haben, können Sie Ihre Android-App erstellen.

Gradle-Setup

Verwenden Sie "Gradle", um die App auf Android zu erstellen. Die "Gradle" -Einstellungen werden automatisch durch Ausführen von "gradlew" eingerichtet. (Verschiedene Gradlew-Befehle werden auch mit "gradlew" ausgeführt.) Aktualisieren Sie die Berechtigungen, damit die "gradlew" -Datei ausgeführt werden kann.

chmod +x ./gradlew

(Bonus) Warnung behoben

Es ist so eingestellt, dass es wie oben beschrieben erstellt wird. Wenn Sie jedoch so erstellen, wie es ist, wird "Warnung" angezeigt. Erstellen Sie daher die folgende Datei, um "Warnung" zu vermeiden.

sudo touch /root/.android/repositories.cfg

Debug Build

Wenn die Umgebung zum Erstellen von Android-Apps bereit ist, führen Sie zuerst "Debug Build" aus. Debug Build kann durch Ausführen des folgenden Befehls erstellt werden.

./gradlew assembleDebug

Eine Signatur ist erforderlich, um eine Android-App zu erstellen, aber "Debug Build", das keinen Signaturschlüssel angibt, wird in "~ / .android / debug.keystore" generiert, wenn das "Android SDK" installiert wird. Der Build wird unter Verwendung des vorhandenen "Keystore for Debug" durchgeführt.

【Referenz】 Ich habe den Keystore auf Debug überprüft

Release Build

Im Fall von "Debug Build" wurde der Build mit dem "Debug Keystore" von Android durchgeführt. Wenn Sie jedoch die erstellte Android-Anwendung an Google Play Store usw. verteilen, wird sie von der Anwendung verteilt, die mit dem Standard-Signaturschlüssel erstellt wurde. Kann ich nicht machen. Zum Verteilen können Sie eine Anwendung erstellen, die an den Store verteilt werden soll, indem Sie selbst einen Signaturschlüssel erstellen und mit dem erstellten Signaturschlüssel erstellen (hier wird ein solcher Build als "Release Build" bezeichnet). Masu) Im Folgenden zeigen wir Ihnen unter Github-Aktionen, wie Sie "Release Build" ausführen. Informationen zum Erstellen eines Schlüssels finden Sie unter hier.

Machen Sie es möglich, sich auf den zum Bauen verwendeten Schlüssel zu beziehen

Um den erstellten Signaturschlüssel und die Erstellung anzugeben, wird er beim Erstellen angewendet, indem die Signaturschlüsseldatei in "app / batch.gradle" angegeben wird.

Zu diesem Zeitpunkt sind die Informationen von storeFile`` storePassword`` keyAlias`` keyPassword erforderlich. Geben Sie diese Informationen daher in app / batch.gradle an. Da es sich bei diesen Informationen jedoch um eine Umgebungsvariable handelt, die Sie geheim halten und verwalten möchten, beschreiben Sie die obigen Informationen in "local.properties", die die Umgebungsvariable unter Android beschreiben, und fügen Sie den Inhalt in "app / build.gradle" ein. Durch das Laden wird beim Erstellen darauf verwiesen. (local.properties ist standardmäßig in .gitignore aufgeführt)

Die Beschreibung in app / batch.gradle lautet wie folgt.

build.gradle


Properties properties = new Properties()
def localPropertiesFile = project.rootProject.file('local.properties');
if(!localPropertiesFile.exists()){
    //Wenn keine localPropertiesFile vorhanden ist, erstellen Sie sie
    localPropertiesFile.createNewFile();
}
properties.load(localPropertiesFile.newDataInputStream())

Wenn im obigen Beispiel "local.properties" zum Zeitpunkt der Erstellung nicht vorhanden ist, erstellen Sie eine neue und laden Sie, falls vorhanden, die vorhandene Datei, um sie auf die Einstellungen anzuwenden. (Wenn Sie dies nicht tun, wird ein Build-Fehler angezeigt, wenn local.properties nicht vorhanden ist (z. B. wenn Sie Debug Build ausführen).)

Um den Lesewert von "local.properties" auf den Build anzuwenden, wenn "Build freigeben", schreiben Sie wie folgt.

build.gradle


android {
    ...
    signingConfigs {
        release {
            //Beschreiben Sie nur, wenn eine bestimmte Datei vorhanden ist
            if(!properties.getProperty("RELEASE_STORE_FILE", "").empty){
                storeFile file(properties.getProperty("RELEASE_STORE_FILE", ""))
            }
            storePassword properties.getProperty("RELEASE_STORE_PASSWORD", "")
            keyAlias properties.getProperty("RELEASE_KEY_ALIAS", "")
            keyPassword properties.getProperty("RELEASE_KEY_PASSWORD", "")
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

Legen Sie zu diesem Zeitpunkt die folgenden Umgebungsvariablen in "local.properties" fest.

local.properties


RELEASE_STORE_FILE=Dateipfad der Signaturschlüsseldatei(Absoluter Pfad)String
RELEASE_STORE_PASSWORD=Kennwortzeichenfolge speichern
RELEASE_KEY_ALIAS=Schlüsselaliaszeichenfolge
RELEASE_KEY_PASSWORD=Schlüsselkennwortzeichenfolge

Schlüsselverwaltung

Normalerweise ist die Signaturschlüsseldatei eine Binärdatei. Sie müssen sie also irgendwo speichern und abrufen oder in Ihr Projekt einbetten. Es gibt jedoch ein Problem, dass die Signaturschlüsseldatei vielen Entwicklern bekannt ist.

Speichern Sie dieses Mal die Signaturschlüsselverwaltung in Github Secrets und wenden Sie sie als geheime Umgebungsvariable </ font> an

Die Dateigröße des Signaturschlüssels ist trivial. Verwenden Sie daher "base64", um die Binärdatei zu stringifizieren. Durch Speichern dieser Zeichenfolge in "Github Secrets" und Zurückspeichern in eine Binärdatei, wenn Github Actions ausgeführt wird, kann die Schlüsselverwaltung geheim gehalten werden. Es wird möglich sein. Geben Sie zunächst die Signaturschlüsseldatei in eine Zeichenfolge mit base64 aus.

base64 Android Build Signierschlüssel.keystore

Führen Sie diesen Befehl aus und registrieren Sie die Ausgabezeichenfolge in "Github Secrets".

In Github Actions werden die hier festgelegten Informationen zu "Github Secrets" angewendet. Schreiben Sie sie daher wie folgt in eine Binärdatei mit "base64 -d>". Ich werde.

echo ${ANDROID_REALSE_BASE64_KEY} | base64 -d > ./release-application-key
  • Hier wird "ANDROID_REALSE_BASE64_KEY" auf "Github Secrets" gesetzt, eine Binärdatei, die mit "base64" in eine Zeichenfolge konvertiert wird. release-application-key ist der Dateiname des Signaturschlüssels, der vorübergehend gespeichert werden soll.

Beschreiben Sie die Informationen, die zum Ausführen der oben genannten verschiedenen "Release Builds" in "local.properties" erforderlich sind.

Beschreiben Sie beim Ausführen von Github-Aktionen die folgenden Informationen in local.properties mit den Informationen, die zum Ausführen von Release Build erforderlich sind.

local.properties


RELEASE_STORE_FILE=Dateipfad der Signaturschlüsseldatei(Absoluter Pfad)String
RELEASE_STORE_PASSWORD=Kennwortzeichenfolge speichern
RELEASE_KEY_ALIAS=Schlüsselaliaszeichenfolge
RELEASE_KEY_PASSWORD=Schlüsselkennwortzeichenfolge

Alle diese Informationen sollten in Github Secrets festgelegt werden, und die Einstellungen sollten wie unten gezeigt zu "local.properties" hinzugefügt werden.

echo ${ANDROID_REALSE_BASE64_KEY} | base64 -d > ./release-application-key
echo "RELEASE_STORE_FILE=`pwd`/release-application-key" >> ./local.properties
echo "RELEASE_STORE_PASSWORD=${ANDROID_REALSE_KEY_PASSWORD}" >> ./local.properties
echo "RELEASE_KEY_ALIAS=key0" >> ./local.properties
echo "RELEASE_KEY_PASSWORD=${ANDROID_REALSE_KEY_PASSWORD}" >> ./local.properties

Dies führt dazu, dass der Build mit dem Wert ausgeführt wird, der auf "local.properties" angewendet wird, wenn er in Github-Aktionen ausgeführt wird.

Mach einen "Release Build" auf Gradle

Durch Ausführen des folgenden Befehls [apk file](https://ja.wikipedia.org/wiki/APK_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%] Führen Sie "Release Build" durch, um AB% E5% BD% A2% E5% BC% 8F)) auszugeben.

./gradlew assembleRelease

Führen Sie als Nächstes den folgenden Befehl aus, um "Release Build" auszuführen, der [aab-Datei] ausgibt (https://developer.android.com/guide/app-bundle?hl=ja).

./gradlew bundleRelease

Stellen Sie die erstellten Artefakte zum Download bereit

[Apk-Datei](https://ja.wikipedia.org/wiki/APK_(%E3%83%95%E3%82%A1%E3), nachdem sowohl "Debug Build" als auch "Release Build" den Build abgeschlossen haben % 82% A4% E3% 83% AB% E5% BD% A2% E5% BC% 8F)), aab-Datei Fügen Sie die folgenden Elemente hinzu, damit Sie verschiedene Artefakte herunterladen können, z

- uses: actions/upload-artifact@master
  with:
    name: outputs
    path: app/build/outputs/

Auf diese Weise können Sie die Artefakte wie folgt herunterladen:

release-build-artifact.png

[apk-Datei](https://ja.wikipedia.org/wiki/APK_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%] E5% BC% 8F)) Ergebnisse sind output / apk / release / app-release.apk, aab file Die Artefakte von befinden sich in output / bundle / release / app-release.aab.

Zusammenfassung

Hier geht es darum, wie mit Github-Aktionen automatisch native Android-Apps erstellt werden. Wenn Sie es so schnell wie möglich in das Projekt einführen möchten, lesen Sie bitte die folgenden Inhalte (kopieren Sie sie) und führen Sie sie ein.

Zukunftsaussichten

  • So veröffentlichen Sie im Google Play Store
  • Wie man Android NDK Build macht
  • So führen Sie Android-Tests aus

Ich würde gerne hinzufügen.

Recommended Posts

Erstellen einer Umgebung, die automatisch mit Github-Aktionen erstellt wird (Android-Version)
Hinweise beim Erstellen einer Umgebung mit Python
Erstellen Sie eine Datenanalyseumgebung mit Kedro + MLflow + Github-Aktionen
Erstellen Sie eine Umgebung mit virtualenv
Ein Ei mit Python erstellen
Pipenv mit GitHub-Aktionen getestet
Beim Erstellen einer Umgebung, die Python Django unter Ubuntu 12.04 LTS verwendet
Python studieren Teil 1 Erstellen einer Umgebung
Ein Memo beim Erstellen einer Umgebung, die vorerst mit Lambda @ Edge debuggt werden kann
[Python] Erstellen einer Umgebung mit Anaconda [Mac]
Erstellen einer Ubuntu 18.04 + MAAS 2.4-Umgebung ab 0
Erstellen eines unbekannten Pokémon mit StyleGAN2 [Teil 1]
Automatische Umschaltung der virtuellen Umgebung mit conda + direnv
[Golang] Erstellen Sie ein Docker-Image mit Github-Aktionen
Erstellen einer virtuellen Umgebung in einer Anaconda-Umgebung
[kotlin] Erstellen Sie eine App, die Fotos erkennt, die mit einer Kamera auf Android aufgenommen wurden
Erstellen Sie eine Datenanalyseumgebung, die die GitHub-Authentifizierung und Django mit JupyterHub verbindet