[英]How to package files into an APK archive programmatically
我想以编程方式从给定路径创建一个APK文件到一个目录(包含Java源代码)。 我知道这可以使用android工具从命令行完成,但是如何用Java代码完成呢?
正如我在评论中指出的那样,大部分构建过程都是从命令行二进制文件处理的,你不太可能将它移植到Java,例如javac
, dx
和aapt
。
如果我在你的位置,我会看看Gradle的IDE集成挂钩,并使用它以及合适的build.gradle
和相关文件从Java代码中驱动构建过程。 能够使用Gradle作为一个真正的构建自动化系统是Gradle for Android工作背后的关键点之一。
否则,你提出的建议是不要使用Android的任何现有构建自动化选项(Gradle,Ant,Maven,以及Eclipse构建过程的东西),而是构建另一个 。 如果您有几十个开发人员需要几个月的时间,并且您想要走这条路,那么您肯定会这样做。 您可能希望查看上述实现的想法。
我有一个类似的担忧,经过一些研究,我最终通过从Java(Eclipse)调用命令行,然后给出我使用的命令作为参数。 我为每个我想要构建的项目循环重复这个,它工作得很好。
http://geosoft.no/development/android.html此站点显示了在命令行中构建Android程序可能需要遵循的每个步骤。 我只关心.apk部分,所以第14步就足够了,但你可以查看整个页面。
使用该页面中的APK命令,我创建了一个ProcessBuilder代码:
ProcessBuilder pb = new ProcessBuilder
(new String[] {ANDROID_HOME + "\\build-tools\\android-4.4W\\aapt.exe",
"package",
"-v",
"-f",
"-M", projectRootDirPath + "\\AndroidManifest.xml",
"-S", projectRootDirPath + "\\res",
"-I", ANDROID_HOME + "\\platforms\\android-20\\android.jar",
"-F", projectRootDirPath + "\\bin\\" + [APK_file_name] + ".apk",
projectRootDirPath + "\\bin"});
ANDROID_HOME是您的sdk路径,projectRootDirPath是项目目录的路径,当然[APK_file_name]应该是.apk文件的所需名称。
此外,您可能需要根据您使用的版本更改“android-4.4W”和“android-20”部件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.