2013-10-22 66 views
5

我需要通過某些Java程序來生成或構建APK文件,我選擇Android源項目。假設我在網頁上有一個按鈕。點擊後,它會生成一個.apk文件。如何通過Java代碼以編程方式生成apk文件

我已經看到我們可以通過Ant和Gradle構建APK文件。但是這通過命令shell運行。我不想在命令行中執行它。我想寫一個Java程序。或者也許我可以通過Java程序運行shell命令。

有人能指導我嗎?謝謝

感謝您提供的答案。對於這些答案,我需要通過Gradle或Ant。如果必須的話,我會這樣做的。但是,我正在尋找替代品。

回答

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 =>您的項目=>右鍵=>導出=>常規=>螞蟻構建文件。 之後,你將需要運行:

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

是否需要執行此「android更新項目...」? – syed99

+0

我能夠執行程序,但得到的錯誤這樣的「構建失敗 目標‘發佈MYPROJECT‘’不存在於該項目。’ – syed99

+0

你必須編輯文件 local.properties project.properties 指正確的路徑sdk.dir = 以及 build.properties和ant.properties 如果您想簽署APK ,並且您必須在具有build.xml文件的項目模板中執行此android更新項目 – user1283633

2

我想你會回答自己的問題:使用Runtime.getRuntime()並使用ant或gradle構建apk。

+0

所以你不想在Java中使用命令行? – lithos35

+1

是的,你是對的,我會用,如果我知道命令,我可以建立它在螞蟻或gradle。 – syed99

+0

您有[Android doc](http://developer.android.com/tools/building/building-cmdline.html)中的基礎知識,您也可以自定義構建規則。以基本方式使用非常簡單。 – lithos35

0

一個apk文件基本上是zip文件。它包含您的資源和類dex文件。 Zygote創建dalvik進程,dalvikvm執行你的java代碼。你不能創建apk文件,因爲它看起來像classdex + resourcesmap。如果你創建程序化的apk在文本文件中寫一些ascii字符,那麼你的drawable是什麼?你的應用程序圖標在哪裏?但是你會執行java類使用dalvikvm。 (Basiccally run class command -c ...)

相關問題