我正在开发一个 Java 程序,它可以构建 Android apk 文件,然后将其安装到模拟器,然后运行测试。代码如下:
/*
* Generate APK through ANT API Method
*/
public static void generateApkThroughAnt(String buildXMLPath) {
File antBuildFile = new File(buildXMLPath);
Project p = new Project();
p.setUserProperty("ant.file", antBuildFile.getAbsolutePath());
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(ps);
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("debug"); // build a new apk file
//p.executeTarget("test"); // run test against project
//p.executeTarget("installd"); //install new apk file to vd
try {
// test for capturing output results
String output = os.toString("UTF8");
System.out.println("this is captured output: "+ output);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} catch (BuildException e) {
ex = e;
} finally {
p.fireBuildFinished(ex);
}
}
到目前为止,使用 Apache Ant,我的程序能够毫无问题地完成上述任务。感谢这篇文章中的答案 Run ant from Java
但是,现在越来越多的安卓开源应用开始使用gradle。我想知道是否有可能用gradle实现上述类似的任务? gradle 是否有我可以使用的类似 API? 谢谢!
最佳答案
这是我找到的解决方案。希望它可以帮助任何人也有类似的需求。 Gradle 工具 API 完美解决了这个问题。
/*
* perform Gradle tasks such as compile, build, test
*/
public static void performGradleTasks(String path, String ... tasks)
{
GradleConnector connector = GradleConnector.newConnector();
connector.forProjectDirectory(new File(path));
ProjectConnection connection = connector.connect();
try {
// Configure the build
BuildLauncher launcher = connection.newBuild();
launcher.forTasks(tasks);
launcher.setStandardOutput(System.out);
launcher.setStandardError(System.err);
// Run the build
launcher.run();
} finally {
// Clean up
connection.close();
}
}
关于java - 如何使用 gradle API 从 Java 程序生成 apk 文件?如果可能的话,如何将它也安装到模拟器上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26984642/