Ответ 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.
-
Установите
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). -
Загрузите 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