2016-12-14 89 views
2

我写了一个不使用依赖或模块的Android应用程序,只有一个活动,并且有一个布局文件。如何在命令行上无需Gradle创建Android apk?

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

+1

如果您不喜欢Gradle,您可以查看另一个构建系统(例如Maven,Buck)。如果这不是问题......避免Gradle的原因是什么? – CommonsWare

+1

我不想要构建系统。我想建立。 – aoeu

+0

构建一个Android应用程序[涉及大量工作](http://tools.android.com/tech-docs/new-build-system/build-workflow)。该页面上的图表将帮助您根据涉及的不同工具和部分开始工作。 – CommonsWare

回答

9

使用以下步骤要手动构建你的apk,如果你不想用ant/gralde来构建。但您至少必须安装Android SDK。

  • aapt

  • 使用javac创建R.java所有Java源代码编译到*.class

  • 使用dx把所有*.classdex文件,如输出为classes.dex

  • 创建来自资产的APK的初始版本,资源和AndroidManfiest.mk,e。克输出是MyApplication.apk.unaligned

  • 使用aapt添加classes.dex在步骤3中生成的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/

+0

谢谢,那正是我想知道的!漂亮的shell脚本,也感谢文章。 – aoeu

0

简短的回答是: 你无法

而且长:

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

您不仅需要:

  • 玛吉资源,创建R档
  • 源代码编译为Java,然后类的Dalvik
  • 包装资源,然后用所有创建zip必要的文件
  • 登录它与你的钥匙,

但好做很多,一个,我真的mean it

有一点。

在哪里,如果ü使用Android工作室

  • 只要按一下绿色三角形来构建和安装
  • 或者,如果你想realease APK,建设 - >组装发布的.apk

更妙的是你可以使用简单的命令来执行这些任务

./gradlew assembleRelease 
+0

得到温暖....感谢烦扰提及*任何Gradle实际上在幕后做的事情(而不是说“只是使用它”),但是当我说“在命令行上没有gradle”时,我的意思是不使用Gradle包装器。 – aoeu

+0

你能告诉我为什么你要“建立”? 因为我真的没有看到进入所有使用构建系统的麻烦的一点:)我的意思是构建系统是为了让程序员只用一个命令来构建应用程序。为什么不使用它? – Inverce

0

alijandro了一份完美的答卷。我设法编写了简单的ANT脚本,该脚本使用AdMob构建生产APK并且无需使用Gradle。一对夫妇有用的意见:

  1. 如果你想混淆你必须罐子(javacdx步骤之间)编译的类类和在其上运行proguard

  2. 对于AdMob你必须提取以下从ZIP档案罐(如 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

这些档案也应传递javacdx

  • 对于AdMob有几个附加的简单配置步骤以及
  • Gradle做了很多与机器人项目乱,所以自己的脚本看起来像单一溶液即将投入生产的项目