如何以编程方式将文件打包到APK存档中

时间:2014-05-20 19:36:19

标签: java android apk archive

我想以编程方式从给定路径创建一个APK文件到一个目录(包含Java源代码)。我知道这可以使用android工具从命令行完成,但是如何用Java代码完成?

2 个答案:

答案 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”部件。