web-dev-qa-db-fra.com

Application "Hello world" pour Android avec le moins de fichiers possible, aucun IDE et éditeur de texte uniquement

Dans presque toutes les langues que j'ai utilisées (Python, C, C++, etc.), il est possible d'écrire une application "hello world" avec un éditeur de texte seulement et de l'exécuter à partir de la ligne de commande (interprétée langages) ou compiler/construire à partir de la ligne de commande (langages compilés), par exemple cl.exe helloworld1.cpp.

Par contre, chaque fois que je crée une application Android, je dois utiliser Android Studio (ce qui est lent sur ma machine), créer un nouveau projet avec l'EDI, etc. 

Question: Quel est le plus petit nombre de fichiers de code source/fichiers de projet Java minimalistes permettant de créer une application .apk Android? Comment le construire en ligne de commande? (et jamais devez ouvrir l'IDE)

NB: J'ai lu de nombreux hello world pour Android mais tous impliquent l'utilisation de l'IDE.

NB2: Je recherche des applications standard écrites en Java, pas des solutions comme Kivy, etc.

NB3: même si un IDE est probablement plus pratique pour programmer une application Android, je ne vois aucune technique raison pour laquelle compiler/créer un certain nombre de fichiers serait absolument nécessaire un IDE/programmation avec une interface graphique. Certaines personnes (comme moi) préfèrent uniquement la ligne de commande et l'éditeur de texte, et une telle solution sans IDE serait utile.

NB4: Je travaille sur la plate-forme Windows, j'ai lancé un "Bonjour le monde sans IDE" github repo ici basé sur cette réponse , mais j'ai quelques problèmes tels que celui-ci . Par contre, la méthode utilisée semble être déconseillée ...

19
Basj

Oui, vous pouvez facilement le faire TOUS à partir de la ligne de commande (NO IDE impliqué, je le promets).
.__ Ceci utilise le vieux fidèle _ ​​ Apache Ant . Not utilise Gradle, cela demande plus de travail.

Résumer

Ce que vous tapez est (seulement 2 lignes pour produire un apk):

    Android create project --target "Android-16" --path basj --activity TestActivity --package com.Android.basj 

(Ceci produit un fichier de construction Apache Ant appelé fichier build.xml qui est semblable à le fichier build.gradle. Écrivez maintenant du code mais TestActivity.Java est déjà là et sera compilé)

    ant debug

Installer

(Note: La commande "Android.bat" est obsolète puisque Build Tools v26, utilisez donc un ancien (voir le lien ci-dessous), obsolète dans ce cas, signifie TOTALEMENT supprimé! {Google méchant}).

  1. Installez JDK Java s'il n'est pas déjà installé (vous pouvez utiliser jdk-8u151-windows-x64.exe par exemple) et assurez-vous que la variable d'environnement Java_HOMEest définie e.g .:

    Java_HOME = C:\Program Files\Java\jdk1.8.0_112
    Java_PATH = C:\Program Files\Java\jre1.8.0_112\bin

JDK est le kit de développement Java.
JRE est l'environnement d'exécution Java.

  1. Installez Android SDK Tools (par exemple, installer_r24.4.1-windows.exe , voir cette réponse ) si ce n'est déjà fait, puis dans l'interface graphique du gestionnaire de SDK, désélectionnez tout et choisissez "SDK Android Build- Outils "(par exemple, Android SDK Build-Tools 19.1) + une (ou plusieurs) plateformes (par exemple, Android 4.1.2 (API 16) JELLY_BEAN). Pour prouver que vous n'avez pas besoin de Android Studio, n'alliez pas le télécharger! (uniquement le SDK).

  2. Télécharger Apache Ant _ (par exemple _ { Apache-ant-1.9.9-bin.Zip _)

Détail

Pour créer un projet à partir de la ligne de commande en utilisant Android SDK:

Choisissez un endroit pour mettre votre projet:

cd c:\Android
mkdir antTest
cd antTest

Exécutez la commande:

C:\Android\sdk1\tools\Android create project --target "Android-16" --path basj --activity TestActivity --package com.Android.basj 
              ^
              |
--------------+ (here's where I keep an old version of tools (version 25 in my case)

Voici la structure de répertoires créée (et tous les fichiers que vous devez créer):

C:.
+---basj
    +---bin
    +---libs
    +---res
    ¦   +---drawable-hdpi
    ¦   +---drawable-ldpi
    ¦   +---drawable-mdpi
    ¦   +---drawable-xhdpi
    ¦   +---layout
    ¦   +---values
    +---src
        +---com
            +---Android
                +---basj

sortie détaillée de create projet:

Created project directory: C:\Android\antTest\basj
Created directory C:\Android\antTest\basj\src\com\Android\basj
Added file C:\Android\antTest\basj\src\com\Android\basj\TestActivity.Java
Created directory C:\Android\antTest\basj\res
Created directory C:\Android\antTest\basj\bin
Created directory C:\Android\antTest\basj\libs
Created directory C:\Android\antTest\basj\res\values
Added file C:\Android\antTest\basj\res\values\strings.xml
Created directory C:\Android\antTest\basj\res\layout
Added file C:\Android\antTest\basj\res\layout\main.xml
Created directory C:\Android\antTest\basj\res\drawable-xhdpi
Created directory C:\Android\antTest\basj\res\drawable-hdpi
Created directory C:\Android\antTest\basj\res\drawable-mdpi
Created directory C:\Android\antTest\basj\res\drawable-ldpi
Added file C:\Android\antTest\basj\AndroidManifest.xml
Added file C:\Android\antTest\basj\build.xml
Added file C:\Android\antTest\basj\proguard-project.txt

Téléchargez Apache Ant à partir de http://ant.Apache.org/ .

Voir ce tutoriel pour l’installation: http://www.vogella.com/tutorials/ApacheAnt/article.html

Voir également ce tutoriel: http://blog.vogella.com/2011/03/16/creating-Android-applications-via-the-command-line-ant/ _

Écrivez votre code (Bonjour tout le monde).

Exécutez cette commande et vous obtenez un Android Apk sur l'autre côté (appelé TestActivity-debug.apk):

ant debug

Hey, vous avez un apk Android!
Avec la nouvelle structure ajoutée:

C:.
├───bin
│   ├───classes
│   │   └───com
│   │       └───Android
│   │           └───basj
│   ├───dexedLibs
│   └───res
│       ├───drawable-hdpi
│       ├───drawable-ldpi
│       ├───drawable-mdpi
│       └───drawable-xhdpi
├───gen
│   └───com
│       └───Android
│           └───basj

Pour une construction finale:

ant release

Si vous êtes intéressé par un exemple plus complet de fichiers Ant build.xml ou DEX et par le fonctionnement plus approfondi d'Android, regardez ici

Comment signer un apk déjà compilé

Voir comment signer un apk déjà compilé et aussi ceci
D'après une réponse de @ for3st, voici un extrait pertinent de cet article:

Processus manuel:

Étape 1: générer le magasin de clés (une seule fois)

Vous devez générer un magasin de clés une fois et l'utiliser pour signer votre unsigned apk . Utilisez le keytoolfourni par le JDK trouvé dans %Java_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

Étape 2 ou 4: Zipalign

(zipalign _ { c'est un outil fourni par le SDK Android } trouvé par exemple dans. %Android_HOME%/sdk/build-tools/24.0.2/ est une étape d'optimisation obligatoire si vous souhaitez télécharger l'apk sur le Play Store.

zipalign -p 4 my.apk my-aligned.apk

Remarque: lorsque vous utilisez l'ancienne jarsigner, vous devez zipalignAPRÈS LA SIGNATURE DE. Lorsque vous utilisez la nouvelle méthode apksigner, vous le faites AVANT LA SIGNATURE DE (ce qui est déroutant, je le sais). _ { Invoquer zipalign avant apksigner fonctionne bien } parce que apksigner préserve APK alignement et compression (contrairement à jarsigner).

Vous pouvez vérifier l'alignement avec:

zipalign -c 4 my-aligned.apk

Étape 3: signer et vérifier

Utiliser les outils de compilation 24.0.2 et plus anciens

Utilisez jarsigner qui, comme l'outil de clé, est fourni avec la distribution JDK trouvé dans %Java_HOME%/bin/ et utilisez-le comme suit:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

et peut être vérifié avec

jarsigner -verify -verbose my_application.apk

Utilisation des outils de construction 24.0.3 et plus récents

Android 7.0 introduit APK Signature Scheme v2, un nouveau schéma de signature d'application offrant des temps d'installation plus courts et une protection accrue contre les modifications non autorisées des fichiers APK (voir ici et ici pour plus de détails). Par conséquent, Google a implémenté son propre apk signataire appelé: apksigner (duh!) Le fichier de script se trouve dans %Android_HOME%/sdk/build-tools/24.0.3/ (le fichier .jar est dans le sous-dossier /lib). Utilisez-le comme ceci:

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

et peut être vérifié avec:

apksigner verify my-app.apk
17
Jon Goodwin

Quel est le plus petit nombre de code source Java minimaliste fichiers/fichiers de projet pour produire une application .apk Android?

Seuls ces 2 fichiers sont nécessaires pour générer le fichier classes.dex et AndroidManifest.xml sous Apk Android, consultez cet article de blog pour des informations complètes.

La plus petite taille d'apk faite à ce jour est de 678 bytes.checkez ceci repo

3
Manohar Reddy

C'est une méthode prête à l'emploi pour créer une application Android sans avoir à installer/ouvrir Android Studio même une fois (c'est un IDE génial, mais certaines personnes comme moi préfèrent tout simplement un éditeur de texte + une ligne de commande). Vous obtiendrez un fichier APK entièrement signé/aligné à la fin, prêt à être utilisé sur le Google Play Store.

Tout crédit à JonGoodwin answer , je viens de le résumer ici avec un seul lot createproject.bat qui fait tout.

Conditions préalables (voir sa réponse pour plus de détails à leur sujet): ces outils doivent être installés:

  • JDK Java

  • Outils SDK Android

  • Apache Ant

Modifiez maintenant les premières lignes de ce createproject.bat pour définir votre propre APPNAME, VENDORNAME et modifiez le chemin de adb.exe, keytool.exe, etc. en fonction de votre système.

Puis lancez createproject.bat. Cela créera un nouveau dossier helloworld. Vous y trouverez quelques fichiers .bat qui construiront votre application!


createproject.bat

@echo off
SET APPNAME=helloworld
SET VENDORNAME=demo
SET SIGNKEYPASSWORD=abcdef12
SET ANTBATPATH="..\..\Apache-ant-1.9.9-bin\bin\ant.bat"
SET ADBPATH="C:\Users\User\AppData\Local\Android\android-sdk\platform-tools\adb.exe"
SET KEYTOOLPATH="C:\Program Files\Java\jdk1.8.0_151\bin\keytool.exe"
SET JARSIGNERPATH="C:\Program Files\Java\jdk1.8.0_151\bin\jarsigner.exe"
SET ZIPALIGNPATH="C:\Users\User\AppData\Local\Android\android-sdk\build-tools\19.1.0\zipalign.exe"
SET ANDROIDBATPATH="C:\Users\User\AppData\Local\Android\android-sdk\tools\Android.bat"

call %ANDROIDBATPATH% create project --target "Android-16" --path %APPNAME% --activity %APPNAME% --package com.%VENDORNAME%.%APPNAME%

(
echo call %ANTBATPATH% debug
echo copy bin\*debug.apk .
) > %APPNAME%\1makedebug.bat


echo %ADBPATH% logcat > %APPNAME%\2adb_logcat.bat
echo %ADBPATH% devices > %APPNAME%\2adb_devices.bat
echo %ADBPATH% install -r %APPNAME%-debug.apk > %APPNAME%\2adb_install.bat
echo %ADBPATH% Shell > %APPNAME%\2adb_Shell.bat

(
echo call %ANTBATPATH% release
echo %JARSIGNERPATH% -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore "bin\%APPNAME%-release-unsigned.apk" app -storepass %SIGNKEYPASSWORD%
echo %ZIPALIGNPATH% 4 "bin\%APPNAME%-release-unsigned.apk" "%APPNAME%-release.apk"
echo pause
) > %APPNAME%\3makerelease_signed.bat

%KEYTOOLPATH% -genkey -keystore %APPNAME%\my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app -dname "cn=Unknown, ou=Unknown, o=Unknown, c=Unknown" -storepass %SIGNKEYPASSWORD% -keypass %SIGNKEYPASSWORD%

echo Finished.
pause
3
Basj

Au lieu d'essayer de comprendre cela, pourquoi ne pas simplement créer un projet vide à partir d'Android Studio. Il aura tout ce dont vous avez besoin et une configuration de gradle que vous pouvez construire via gradlew. Puis enregistrez-le quelque part sur votre disque dur et utilisez-en une copie pour démarrer vos nouveaux projets.

1
Gabe Sechan

Si vous trouvez le développement d'Android trop complexe et souhaitez une solution plus simple, je vous conseillerais d'essayer Flutter.

Vous pouvez écrire des applications plus simples à comprendre et fonctionnant sous Android ou sur iPhone. Il utilise le langage Dart qui présente de nombreuses similitudes avec Java.

Voici un tutoriel Hello World qui utilise un IDE et une ligne de commande sous Windows pour créer une application Android.

https://www.youtube.com/watch?v=CEPCGXQ7IQg

0
Rockvole