【问题标题】:How to generate apk file programmatically through java code如何通过java代码以编程方式生成apk文件
【发布时间】:2013-10-22 07:51:53
【问题描述】:

我需要通过一些 Java 程序生成或构建一个 APK 文件,其中我选择了 Android 源项目。假设我在网页上有一个按钮。单击时,它会生成一个.apk 文件。

我看到我们可以通过 Ant 和 Gradle 构建 APK 文件。但这通过命令外壳运行。我不想在命令外壳中执行此操作。我想写一个Java程序。或者我可以通过 Java 程序运行 shell 命令。

有人可以指导我吗?谢谢

感谢您提供的答案。对于这些答案,我需要通过 Gradle 或 Ant。如果必须,我会这样做。但是,我正在寻找替代品。

【问题讨论】:

    标签: android apk


    【解决方案1】:

    您可以使用 ANT 罐子 ant.jarant-launcher.jar
    在这种情况下,build.xml 的路径应完全指定。 以这种方式从您的 Java 类中调用它:

    public class AntTest {
    public static void main(String[] args) {
        String build = "D:/xampp/htdocs/aud/TempProject/build.xml";
        generateApkThroughAnt(build);
    }
    /*
     * Generate APK through ANT API Method
     */
    public static void generateApkThroughAnt(String buildPath) {
        File antBuildFile = new File(buildPath);
        Project p = new Project();
        p.setUserProperty("ant.file", antBuildFile.getAbsolutePath());
        DefaultLogger consoleLogger = new DefaultLogger();
        consoleLogger.setErrorPrintStream(System.err);
        consoleLogger.setOutputPrintStream(System.out);
        consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
        p.addBuildListener(consoleLogger);
        BuildException ex = null;
        try {
            p.fireBuildStarted();
            p.init();
            ProjectHelper helper = ProjectHelper.getProjectHelper();
            p.addReference("ant.projectHelper", helper);
            helper.parse(p, antBuildFile);
            p.executeTarget("clean");
            p.executeTarget("release");
        } catch (BuildException e) {
            ex = e;
        } finally {
            p.fireBuildFinished(ex);
        }
       }
       }
    

    要创建build.xml 文件,请转到 Eclipse=>Your Project=>右键单击=>Export=>General=>Ant Buildfiles。 之后,您将需要运行:

    android update project --name <project_name> --target <target_ID> --path <path_to_your_project>
    

    【讨论】:

    • 我能够执行该程序,但出现类似“BUILD FAILED Target”release 项目“Myproject”中不存在这样的错误。
    • 你必须编辑文件 local.properties project.properties 以引用正确的路径 sdk.dir= 以及 build.properties 和 ant.properties 如果你想签署 APK 并且你必须在包含 build.xml 文件的项目模板中执行这个 android 更新项目
    • 非常感谢,这段代码可以运行并生成 .apk 文件,但我需要运行“android update project -p”。在我的项目位置生成build.xml(必须从eclipse复制这个bcz项目并且它没有build.xml文件),所以我需要在运行generateApkThroughAnt方法之前执行上面的“更新”命令,我该怎么做也在同一个java文件中。
    【解决方案2】:

    我认为您自己回答了您的问题:使用 Runtime.getRuntime() 并使用 ant 或 gradle 构建 apk。

    【讨论】:

    • 是的,你说得对,如果我知道可以在 ant 或 gradle 中构建它的命令,我会使用它。
    • Android doc 里有基础知识,也可以自定义构建规则。以基本方式使用非常简单。
    • 如果你不想使用SDK自带的构建工具(比如蚂蚁),你必须自己做all process
    • 那是用筷子盖房子
    【解决方案3】:

    apk 文件基本上是 zip 文件。它包含您的资源和类 dex 文件。 Zygote创建dalvik进程,dalvikvm执行你的java代码。您不能以编程方式创建 apk 文件,因为它看起来像 classdex+resourcesmap。如果您以编程方式创建 apk,请在文本文件中写入一些 ascii 字符,您的可绘制对象在哪里?你的应用程序图标在哪里?但是您将使用 dalvikvm 执行 java 类。 (基本运行类命令-c ...)

    【讨论】:

      【解决方案4】:

      查看this question 并将示例中的 cmd 命令替换为您的构建命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多