android - 在命令行上开发 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 版本,我会发出以下命令:
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 中,而不是 shkschneider 建议的 Java+Kotlin 的混合。MainActivity.java 与 MainActivity.kt 本质上是相同的代码,我只想切换到 Kotlin。
解决方案
我解决了问题。该R.kt
文件必须通过 JetBrains IDE 从R.java
文件中生成,因为它们不提供独立工具。如果有人知道,请分享一个链接:D
推荐阅读
- r - 无法在 ggmap::qmplot 中运行最简单的示例(错误:没有适用于 'as.raster' 的方法应用于“NULL”类的对象)
- javascript - *Uncaught (in promise) TypeError:) 无法从 MongoDB Atlas 检索数组/集合
- macos - 如何在 MacOS 中为所有应用程序*永久*设置一个变量?
- java - 只需要 Java 循环一次并创建单个列/行
- sql - SELECT COUNT 个子记录作为 UNION 中的子查询
- javascript - 如何在javascript中以json数据的列为中心
- javascript - 我可以重构这个简单功能的最佳方法是什么?变量流通过所有这些函数,按特定顺序变异
- javascript - 不包括页眉和页脚的过渡页面内容
- r - 如何使用带有 BigQuery 的 dbplyr 访问列表中的列表?[R]
- django - 如何创建指向特定 django 管理表的软链接