如何在命令行上构建没有Gradle的Android apk?

时间:2016-12-14 00:14:45

标签: android gradle build apk

我写了一个Android应用程序,它不使用依赖项或模块,只有一个活动,并且只有一个布局文件。

如何在不使用Gradle(或其他“构建系统”或“依赖关系管理”软件)的情况下在命令行上构建我的应用程序的apk文件?

4 个答案:

答案 0 :(得分:16)

如果您不想使用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.apkMyApplication-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/

答案 1 :(得分:1)

alijandro 给出了一个完美的答案。我设法编写简单的ANT脚本,使用AdMob构建生产APK,无需使用gradle。一些有用的评论:

  1. 如果你想混淆类,你必须对已编译的类进行jar(在javacdx步骤之间)并在其上运行proguard

  2. 对于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):

    • 播放服务的广告,10.2.6.jar
    • 播放服务的广告 - 精简版 - 10.2.6.jar
    • 播放服务碱基10.2.6.jar
    • 播放服务,地下室10.2.6.jar
    • 播放服务,皆伐-10.2.6.jar
    • 播放服务 - 盖斯 - 10.2.6.jar
    • 播放服务的任务,10.2.6.jar
  3. 这些档案应在javacdx

    中传递
    1. 对于AdMob,还有其他几个简单的配置步骤
    2. Gradle对android项目造成了很大的麻烦,所以自己的脚本对于即将投入生产的项目来说就像是一个单一的解决方案

答案 2 :(得分:0)

简短的回答是: 你不能

长期是:

创建apk的过程并不像接缝那么容易。 https://developer.android.com/studio/build/index.html

因此,您不仅需要:

  • Marge资源,创建R文件
  • 将源代码编译为java,然后将类编译为dalvik
  • 打包资源,然后使用所有必要文件创建zip
  • 使用您的密钥签名

但做得很好,我真的mean it

有一点。

如果您使用Android studio

  • 只需点击绿色三角形即可构建并安装
  • 或者,如果你想重新发布apk,Build - &gt;组装发布Apk

更好的是,您可以使用简单的命令来运行这些任务

./gradlew assembleRelease

答案 3 :(得分:0)

尝试使用此命令从命令行构建带有支持库的应用程序。 https://github.com/HemanthJabalpuri/AndroidExplorer