Android-приложение "Hello world" с минимальным количеством файлов, без IDE и текстового редактора

Почти во всех языках, которые я использовал (Python, C, С++ и т.д.), можно написать приложение "hello world" только с текстовым редактором и запустить его из командной строки (интерпретируемые языки) или компилировать/строить из командной строки (скомпилированные языки), например cl.exe helloworld1.cpp.

С другой стороны, каждый раз, когда я занимаюсь Android-приложением, мне нужно использовать Android Studio (который медленный на моей машине), создать новый проект с IDE и т.д.

Вопрос: Какое минимальное количество минималистических файлов исходного кода Java/файлов проекта для создания приложения .apk для Android? Как его создать из командной строки? (и никогда не нужно открывать IDE)

NB: я прочитал много hello world для Android, но все они связаны с использованием IDE.

NB2: Я ищу стандартные приложения, написанные на Java, а не такие решения, как Kivy и т.д.

NB3: даже если IDE, вероятно, более удобна для программирования приложения Android, я не вижу никаких технических причин, по которым компиляция/создание нескольких файлов потребует разработки IDE/программирования с помощью графического интерфейса. Некоторые люди (например, я) предпочитают только командный и текстовый редактор, и такое решение без IDE было бы полезно.

NB4: Я работаю на платформе Windows, я начал здесь "Привет, мир без IDE" здесь, на основе этот ответ, но у меня есть несколько проблем, таких как этот. С другой стороны, используемый там метод кажется устаревшим...

Ответ 1

Да, вы можете легко сделать это ВСЕ из командной строки (я не согласен с предложением IDE).
Это использует старый верный Apache Ant. Он использует не Gradle, что требует больше работы.

Подводя итоги

Что вы набираете ( всего 2 строки для создания apk):

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

(Это создает файл сборки Apache Ant с именем build.xml, который похож на файл build.gradle. Теперь напишите некоторый код, но TestActivity.java уже существует и будет скомпилирован)

    ant debug

Настройка

( Примечание: команда < <27 > устарела, поскольку Build Tools v26, поэтому используйте старый (см. ссылку ниже), устаревший в этом случае означает TOTALLY удален! {озорной Google}).

  • Установите Java JDK, если он еще не установлен (например, вы можете использовать jdk-8u151-windows-x64.exe), и убедитесь, что переменная окружения JAVA_HOME определена, например:

    JAVA_HOME = C:\Program Files\Java\jdk1.8.0_112
    JAVA_PATH = C:\Program Files\Java\jre1.8.0_112\bin

JDK - это Java Development Kit.
JRE - это среда выполнения Java.

  1. Установите Android SDK Tools (например, installer_r24.4.1-windows.exe, см. этот ответ), если это еще не сделано, а затем в графическом интерфейсе SDK Manager отмените выбор и выберите "Android SDK Build-Tools" (например, Android SDK Build-Tools 19.1) + одна (или многие) платформы (например, Android 4.1.2 (API 16) JELLY_BEAN). Чтобы доказать, что вам не нужно Android Studio, не собираетесь его загружать! (только SDK).

  2. Загрузите Apache Ant (например apache-ant-1.9.9-bin.zip)

Detail

Чтобы создать проект из командной строки с помощью Android SDK:

Определите место для размещения вашего проекта:

cd c:\android
mkdir antTest
cd antTest

Запустите команду:

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

Вот созданная структура каталогов (и все файлы, которые вам нужно собрать):

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

подробный вывод проекта создания:

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

Загрузите Apache Ant из http://ant.apache.org/.

См. этот учебник для настройки: http://www.vogella.com/tutorials/ApacheAnt/article.html

Также см. этот учебник: http://blog.vogella.com/2011/03/16/creating-android-applications-via-the-command-line-ant/

Напишите свой код (Hello world).

Запустите эту команду, и вы получите Android Apk с другой стороны (называемый TestActivity-debug.apk):

ant debug

Эй, престо, у вас есть андроид apk!
Добавлена ​​новая структура:

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

Для окончательной сборки:

ant release

Если вам интересен более обширный пример файлов Ant build.xml или DEX, а более глубокие работы Android выглядят здесь

Как подписать уже скомпилированный apk

Смотрите как подписать уже скомпилированный apk, а также this
Из ответа на @for3st здесь можно найти соответствующую часть этого сообщения:

Ручной процесс:

Шаг 1: Генерация Keystore (только один раз)

Вам нужно создать хранилище ключей один раз и использовать его для подписи unsigned apk. Используйте keytool предоставленный JDK, найденный в %JAVA_HOME%/bin/

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

Шаг 2 или 4: Zipalign

zipalign который является инструментом, предоставляемым Android SDK в частности %ANDROID_HOME%/sdk/build-tools/24.0.2/ является обязательным этапом оптимизации, если вы хотите загрузить apk в Play Store.

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

Примечание: при использовании старого jarsigner вам нужно zipalign ПОСЛЕ подписания. При использовании нового метода apksigner вы делаете это перед тем, как подписываться (запутываю, я знаю). Вызов zipalign до apksigner отлично работает, потому что apksigner сохраняет APK выравнивание и сжатие (в отличие от jarsigner).

Вы можете проверить выравнивание с помощью:

zipalign -c 4 my-aligned.apk

Шаг 3: Подпишите и подтвердите

Использование встроенных инструментов 24.0.2 и старше

Используйте jarsigner, который, как и keytool, поставляется с дистрибутивом JDK найдено в %JAVA_HOME%/bin/ и использовать его так:

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

и может быть проверено с помощью

jarsigner -verify -verbose my_application.apk

Использование встроенных инструментов 24.0.3 и более новых

Android 7.0 представляет APK Signature Scheme v2 новую схему подписки на приложения, которая предлагает более быстрое время установки приложений и большую защиту от несанкционированных изменений в файлах APK (см. здесь и здесь для получения более подробной информации). Поэтому Google реализовал свой собственный APK подписчик: apksigner (duh!) Файл script можно найти в %ANDROID_HOME%/sdk/build-tools/24.0.3/ (.jar находится в подпапке /lib). Используйте его так:

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

и может быть проверено с помощью:

apksigner verify my-app.apk

Ответ 2

Какое минимальное количество минималистского исходного кода Java файлы/файлы проекта для создания приложения .apk для Android?

Для создания файла Android Apk classes.dex и AndroidManifest.xml требуется только эти 2 файла, проверьте  этот пост в блоге для полной информации.

Наименьший размер apk, сделанный до сих пор, составляет 678 байт. Отметьте это repo

Ответ 3

Это готовый к использованию метод для создания приложения для Android без необходимости устанавливать/открывать Android Studio хотя бы один раз (это классная среда IDE, но некоторые люди вроде меня просто предпочитают текстовый редактор + командная строка). Вы получите полностью подписанный/выровненный APK в конце, готовый пойти в Google Play Store.

Полный ответ на ответ JonGoodwin, я просто обобщил его здесь с одной createproject.bat которая делает все.

Предварительные требования (см. Его ответ для получения дополнительной информации о них): вам необходимо установить эти инструменты:

  • Java JDK

  • Android SDK Tools

  • Apache Ant

Теперь просто измените первые строки этого createproject.bat чтобы установить свой собственный APPNAME, VENDORNAME и изменить путь к adb.exe, keytool.exe и т.д. В соответствии с вашей системой.

Затем запустите createproject.bat. Он создаст новую папку helloworld. Здесь вы найдете несколько файлов .bat которые будут создавать ваше приложение!


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

Ответ 4

Вместо того, чтобы пытаться понять это, почему бы просто не создать пустой проект из Android Studio. Он будет иметь все, что вам нужно, и конфигурацию gradle, которую вы можете построить с помощью gradlew. Затем сохраните это где-то на вашем жестком диске и используйте копию этого как начало ваших новых проектов.

Ответ 5

Если вы обнаруживаете, что разработка Android слишком сложна и требует более простого решения, я бы предложил попробовать трепетать.

Вы можете писать приложения, которые проще понять и будут работать на Android или IPhone. Он использует язык Dart, который имеет много общего с Java.

Вот приветственный мир, в котором используется среда IDE и командной строки в Windows для создания приложения для Android.

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