Я пытаюсь скомпилировать пример приложения для Android ( оригинальный источник ), написанный на kotlin в командной строке.
Java-версия компилируется без проблем.
Это макет иерархии файлов:
.
├── AndroidManifest.xml
├── bin
├── mykey.keystore
├── obj
│ └── com
│ └── example
│ └── helloandroid
├── res
│ ├── drawable
│ ├── layout
│ │ └── activity_main.xml
│ └── values
│ └── strings.xml
└── src
└── com
└── example
└── helloandroid
├── MainActivity.java
└── MainActivity.kt
Если я компилирую версию Java, я выполняю следующие команды:
aapt package -f -m -J ./src -M ./AndroidManifest.xml -S ./res -I /opt/android-sdk/platforms/android-28/android.jar
javac -d obj -classpath src -bootclasspath /opt/android-sdk/platforms/android-28/android.jar src/com/example/helloandroid/*.java
dx --dex --output=./bin/classes.dex ./obj
aapt package -f -m -F ./bin/hello.unaligned.apk -M ./AndroidManifest.xml -S ./res -I /opt/android-sdk/platforms/android-28/android.jar
cp ./bin/classes.dex .
aapt add ./bin/hello.unaligned.apk classes.dex
apksigner sign --ks mykey.keystore ./bin/hello.apk
- Установите приложение через adb на Google Pixel, и оно работает.
Теперь вопрос: как бы я повторил этот «рабочий процесс» с kotlin?
Насколько я понимаю, единственные шаги, которые мне нужно изменить, - это первые два. Мне нужно сгенерировать файл R.kt
, потому что в противном случае R
не определен, и на втором этапе я на самом деле компилирую исходники в классы. После этого не должно быть никакой разницы?
Я не хочу использовать gradle. Я просто хочу понять, как я могу использовать утилиты командной строки.
Заранее спасибо за любой полезный ответ: D
РЕДАКТИРОВАТЬ: Источник полностью на Kotlin, а не смесь Java + Kotlin, как предложил shkschneider. MainActivity.java по сути тот же код, что и MainActivity.kt. Я просто хочу перейти на Kotlin.