Различия в разработке приложений Android kotlin и приложений Android Java в командной строке (без Android Studio) - PullRequest
5 голосов
/ 14 марта 2019

Я пытаюсь скомпилировать пример приложения для 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, я выполняю следующие команды:

  1. aapt package -f -m -J ./src -M ./AndroidManifest.xml -S ./res -I /opt/android-sdk/platforms/android-28/android.jar
  2. javac -d obj -classpath src -bootclasspath /opt/android-sdk/platforms/android-28/android.jar src/com/example/helloandroid/*.java
  3. dx --dex --output=./bin/classes.dex ./obj
  4. aapt package -f -m -F ./bin/hello.unaligned.apk -M ./AndroidManifest.xml -S ./res -I /opt/android-sdk/platforms/android-28/android.jar
  5. cp ./bin/classes.dex .
  6. aapt add ./bin/hello.unaligned.apk classes.dex
  7. apksigner sign --ks mykey.keystore ./bin/hello.apk
  8. Установите приложение через adb на Google Pixel, и оно работает.

Теперь вопрос: как бы я повторил этот «рабочий процесс» с kotlin?

Насколько я понимаю, единственные шаги, которые мне нужно изменить, - это первые два. Мне нужно сгенерировать файл R.kt, потому что в противном случае R не определен, и на втором этапе я на самом деле компилирую исходники в классы. После этого не должно быть никакой разницы?

Я не хочу использовать gradle. Я просто хочу понять, как я могу использовать утилиты командной строки.

Заранее спасибо за любой полезный ответ: D

РЕДАКТИРОВАТЬ: Источник полностью на Kotlin, а не смесь Java + Kotlin, как предложил shkschneider. MainActivity.java по сути тот же код, что и MainActivity.kt. Я просто хочу перейти на Kotlin.

1 Ответ

0 голосов
/ 20 марта 2019

Я решил проблему. Файл R.kt должен быть создан с помощью среды IDE JetBrains из файла R.java, поскольку он не предоставляет отдельного инструмента. Если кто-то знает, пожалуйста, поделитесь ссылкой: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...