8

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

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

有人可以指导我吗?谢谢

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

4

4 回答 4

5

您可以使用 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=>Right click=>Export=>General=>Ant Buildfiles。之后,您将需要运行:

android update project --name <project_name> --target <target_ID> --path <path_to_your_project>
于 2013-10-22T12:28:08.343 回答
1

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

于 2013-10-22T07:58:07.883 回答
0

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

于 2013-10-22T07:59:44.830 回答
-1

查看此问题并将示例中的 cmd 命令替换为您的构建命令。

于 2013-10-22T07:56:50.750 回答