Créer une application Kotlin à l'aide du conteneur OpenJDK Docker

Contexte

――Je fais du développement Android avec Kotlin, mais cela devient difficile à construire avec Android Studio à chaque fois.

Installation de Docker

C'est un Mac de développement que j'ai eu récemment, donc je n'avais pas encore Docker orz Je n'écrirai rien ici, alors je vais l'omettre.

Jusqu'à ce que le conteneur démarre

Cette fois, j'utiliserai openjdk8 La raison en est que c'est la valeur par défaut utilisée dans le modèle Android YAML de gitlabci, et cela vous évite d'avoir à installer des packages JAVA (même si je pense qu'il est utilisé).

Premier tirage comme d'habitude La spécification de version est requise

docker pull openjdk:8-jdk

Et démarrer le conteneur

docker run -it openjdk:8-jdk

Installation du package requise

Si vous faites ce qui précède, je pense qu'il sera automatiquement mis dans le conteneur, donc je vais installer le package

apt-get --quiet update --yes
apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1

export ANDROID_COMPILE_SDK=28
export ANDROID_BUILD_TOOLS=29.0.3
export ANDROID_SDK_TOOLS=6514223
export ANDROID_HOME="/android-home"

install -d $ANDROID_HOME
wget --output-document=$ANDROID_HOME/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip

pushd $ANDROID_HOME
unzip -d cmdline-tools cmdline-tools.zip
popd
export PATH=$PATH:${ANDROID_HOME}/cmdline-tools/tools/bin/

sdkmanager --version

yes | sdkmanager --sdk_root=${ANDROID_HOME} --licenses || true
sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-${ANDROID_COMPILE_SDK}"
sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools"
sdkmanager --sdk_root=${ANDROID_HOME} "build-tools;${ANDROID_BUILD_TOOLS}"

chmod +x ./gradlew

Je pense que c'est correct de vérifier s'il y a des erreurs sur la console et de vérifier les variables d'environnement avec printenv au cas où.

git clone Apportez le code source à construire dans le conteneur Ceci est juste un clone, alors omettez-le

Exécution de la construction

La construction elle-même est facile, appuyez simplement sur la commande Gradle

./gradlew assemble

Si vous souhaitez utiliser des variantes et des saveurs, modifiez la commande J'ai fait référence à ici.

Cependant, si cela reste tel quel, une erreur se produira et cela ne fonctionnera pas. J'ai trébuché ici, alors je voudrais introduire deux points.

Créer local.properties

J'ai eu l'erreur suivante lors de la construction

「SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at」

Cela ressemble à une erreur du type "L'emplacement du SDK n'est pas écrit dans les propriétés locales"

J'ai cherché des propriétés locales comme on m'a dit mais je n'ai pas pu les trouver

Je n'étais pas au courant car il a été créé par moi-même (probablement) lors de l'utilisation d'Android Studio, mais il semble que je doive créer des propriétés locales et décrire l'emplacement du SDK.

Je n'ai pas mis vim en premier lieu, donc c'est à partir de là ^^;

apt-get install vim

Accédez au dossier supérieur de l'application

vi local.properties

Le contenu est comme ça

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Wed Jan 07 15:34:05 JST 2015
sdk.dir=/android-home

Maintenant, je frappe à nouveau la commande build, mais cette fois, j'obtiens une autre erreur

Limite supérieure de la mémoire libérée

La prochaine erreur est 「Could not connect to kotlin daemon. Using fallback strategy.」 Contenu

Quand je l'ai recherché, il semble que Demon-chan est mort lorsque la mémoire a atteint la limite supérieure.

Cliquez sur la marque de baleine dans la barre d'état de votre Mac et modifiez les paramètres de l'application Docker pour augmenter la mémoire maximale. Pour plus de détails sur la manière de procéder, consultez ici.

Construisez avec succès! !!

Enfin le mot "BUILD SUCCESSFUL"!

Je crains qu'on ne m'ait pas demandé la signature lors de la construction, alors je l'ajouterai plus tard. Je pensais que c'était à cause du débogage, mais lors de la création avec Android Studio, je ne peux rien dire car Release et Debug doivent être signés.

Je n'ai pas créé de fichier docker cette fois La raison en est qu'il est répertorié dans gitlabci.yaml

la prochaine fois

--Construction automatique lors du commit depuis git labci --Construire avec des variantes et des saveurs

J'aimerais pouvoir faire un hit

c'est tout Merci pour votre relation

Recommended Posts

Créer une application Kotlin à l'aide du conteneur OpenJDK Docker
Créez un projet Maven à la hâte à l'aide du conteneur Docker de Maven
Créer un conteneur pour Docker x Laravel phpMyAdmin
Créer un conteneur Docker pour un serveur Web simple Python
Essayez de créer un environnement de développement Java à l'aide de Docker
Construction de docker multi-projets à l'aide de jib
Créez un conteneur qui formate automatiquement le code Docker x Laravel
Essayez Hello World en utilisant Java brut sur le conteneur Docker
Créer un environnement Node.js avec Docker
Exécuter PureScript sur un conteneur Docker
Comment créer CloudStack à l'aide de Docker
Créer un environnement de test de navigateur à l'aide de Capybara dans l'environnement de développement Docker
Créez rapidement un environnement Web à l'aide de Docker
Créer un environnement d'exécution WAS à partir de Docker
Créer un serveur proxy d'authentification à l'aide de Docker
Créer un environnement de développement Wordpress avec Docker
J'ai créé une application Janken avec kotlin
La construction du conteneur Docker ne parvient pas à installer php-radis
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Ubuntu)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Mac)
Construction d'un environnement de développement simple Docker + Django
Jusqu'au lancement d'un conteneur Docker construit avec RedHat Quarkus
Tester, créer et pousser des images Docker vers GitHub Container Registry à l'aide d'actions GitHub
Créer un environnement de développement pour Docker + Rails6 + Postgresql
Création d'un flux de test sur CircleCI à l'aide de Jib
Comment obtenir un heapdump à partir d'un conteneur Docker
Construire un pipeline CICD à l'aide de Docker (mémorandum personnel)
Créez rapidement un environnement de développement WordPress avec Docker
Écrire dans un fichier en utilisant ShiftJIS ・ Lire un fichier (Kotlin / JVM)
J'ai créé un conteneur Docker pour exécuter Maven
Construction de l'environnement de développement Simple Docker Compose + Django
Créer un environnement de développement pour Docker, Java, vs code
Essayez d'utiliser un autre conteneur de servlet Jetty avec Docker
L'extraction du conteneur Docker a une limite de débit appliquée
Connexion SSH à l'aide de SSHJ à partir de l'application Java 6
Installez Ubuntu 20.04 dans la boîte virtuelle sur Windows10 et créez un environnement de développement à l'aide de docker
[Docker] Comment mettre à jour à l'aide d'un conteneur dans Heroku et comment gérer l'erreur de migration
Petit conteneur Docker
Créer une image docker pour exécuter une application Java simple
[Road_node.js_1-1] La voie de la création de l'environnement Node.js Express MySQL à l'aide de Docker
Comment créer l'application Docker + Springboot (pour l'apprentissage de base)
Entraînez-vous à créer une application de chat simple avec Docker + Sinatra
Créez une application de chat avec WebSocket (Tyrus) + libGDX + Kotlin