我想以编程方式从给定路径创建一个APK文件到一个目录(包含Java源代码)。我知道这可以使用android工具从命令行完成,但是如何用Java代码完成?
答案 0 :(得分:2)
正如我在评论中所指出的,构建过程的大部分是从命令行二进制文件处理的,您不太可能将其移植到Java,例如 javac
, dx
和 aapt
。
如果我参与其中,我会关注Gradle的IDE集成挂钩,并使用它以及合适的build.gradle
及相关文件从Java代码中驱动构建过程。能够使用Gradle作为一个真正的构建自动化系统是Gradle for Android工作背后的关键点之一。
否则,您提议的是不使用Android的任何现有构建自动化选项(Gradle,Ant,Maven,以及Eclipse构建过程的东西),而是构建另一个。如果您有几十个开发人员需要几个月的时间,并且您想要走这条路,那么您肯定会这样做。您可能希望查看上述实现的想法。
答案 1 :(得分:0)
我有类似的担忧,经过一些研究后,我最终通过调用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”部件。