我写了一个 Android 应用程序,它不使用任何依赖项或模块,只有一个活动,并且只有一个布局文件。
如何在不使用 Gradle(或其他“构建系统”或“依赖管理”软件)的情况下在命令行上构建我的应用程序的 apk 文件?
如果您不想使用 ant/gralde 来构建,请使用以下步骤手动构建您的 apk。但你必须至少安装 Android SDK。
从
R.java
创建aapt
使用
javac
将所有java源代码编译为*.class
使用
dx
将所有*.class
转换为dex
文件,例如输出为classes.dex
从资产、资源和
AndroidManfiest.mk
创建APK的初始版本,例如输出是MyApplication.apk.unaligned
使用
aapt
将第3步生成的classes.dex
添加到MyApplication.apk.unaligned
使用 jarsigner 来签名
MyApplication.apk.unaligned
使用调试或释放密钥使用
zipalign
对齐最终的 APK,例如如果使用发布密钥签名,则输出为 MyApplication-debug.apk
或 MyApplication-release.apk
完成
我已经创建了一个示例脚本来完成上面的所有事情,请参阅here
其实有些文章已经讨论过这个话题,见以下链接
https://www.apriorit.com/dev-blog/233-how-to-build-apk-file-from-command-line
https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/
尝试使用命令行支持库构建应用程序。 https://github.com/HemanthJabalpuri/AndroidExplorer
alijandro 给出了完美的答案。我设法编写了简单的 ANT 脚本,它使用 AdMob 构建了生产 APK,并且没有使用 gradle。一些有用的评论:
如果你想混淆类,你必须对编译的类进行 jar(在
javac
和 dx
步骤之间)并在其上运行 proguard
对于
AdMob
,您必须从 zip 存档中提取以下 jar(例如
C:\Users\<User>\AppData\Local\Android\sdk\extras\google\m2repository\com\google\android\gms\play-services-ads\10.2.6\play-services-ads-10.2.6.aar
):
这些档案应该通过
javac
和dx
AdMob
还有几个额外的简单配置步骤Gradle
对 android 项目造成了很多混乱,因此对于即将投入生产的项目来说,自己的脚本看起来像是一个单一的解决方案
不久前,我对 Android Studio 和 Gradle 感到沮丧后偶然发现了这个线程。受到 alijandro 的回答和 authmane512 的这个模板的启发,我编写了一系列脚本来在没有任何外部构建系统的情况下用 Java 或 Kotlin 编译 Android 应用程序(包括依赖项/包)。
链接:https://github.com/jbendtsen/tiny-android-template
这里涉及一些 DIY,但鉴于这是 Gradle 之类的东西可以为您做的事情,我认为了解它是有用的。此外,它就像 wayyyy 不那么慢,而且您可以更好地控制应用程序的组装方式。