首页 > 解决方案 > 在命令行上开发 Android kotlin 应用程序与 Android Java 应用程序的差异(没有 android studio)

问题描述

我正在尝试在命令行上编译一个用 kotlin编写的示例 Android 应用程序(原始源代码)。

它的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 中,而不是 shkschneider 建议的 Java+Kotlin 的混合。MainActivity.java 与 MainActivity.kt 本质上是相同的代码,我只想切换到 Kotlin。

标签: androidkotlincommand-line

解决方案


我解决了问题。该R.kt文件必须通过 JetBrains IDE 从R.java文件中生成,因为它们不提供独立工具。如果有人知道,请分享一个链接:D


推荐阅读