2013-10-22 17 views
5

Potrzebuję wygenerować lub zbudować plik APK za pośrednictwem jakiegoś programu Java, w którym wybieram projekt źródłowy Androida. Załóżmy, że mam przycisk na stronie internetowej. Po kliknięciu generuje plik .apk.Jak wygenerować plik APK programowo za pomocą kodu Java

Widziałem, że możemy zbudować plik APK przez Ant i Gradle. Ale to działa poprzez powłokę poleceń. Nie chcę tego robić w powłoce poleceń. Chcę napisać program Java. A może mogę uruchamiać polecenia powłoki za pośrednictwem programu Java.

Czy ktoś mógłby mnie o tym poinformować? Dzięki

Dzięki za odpowiedzi, które podałeś. Aby uzyskać te odpowiedzi, muszę przejść przez Gradle lub Ant. Zrobię to, jeśli będę musiał. Ale szukam alternatyw.

Odpowiedz

5

Możesz użyć słoików ANT ant.jar i ant-launcher.jar.
W tym przypadku ścieżka dla build.xml powinna być w pełni określona. Zadzwoń go z klasy Java w ten sposób:

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); 
    } 
    } 
    } 

utworzyć plik build.xml iść do Eclipse => Twój projekt => Kliknij prawym przyciskiem myszy => Export => Ogólne => Ant Buildfiles. Po tym czasie musisz uruchomić:

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

Chcesz uruchomić ten "projekt aktualizacji Androida ..."? – syed99

+0

jestem w stanie uruchomić program ale coraz błąd jak ten „budować FAILED docelowa«zwolnienie»nie istnieje w projekcie«myproject». – syed99

+0

trzeba edytować pliki local.properties project.properties do odnoszą się do właściwą ścieżkę sdk.dir = oraz build.properties i ant.properties jeśli chcesz podpisać APK i musisz wykluczyć ten projekt aktualizacji Androida w szablonie projektu, który ma plik build.xml – user1283633

0

Zapoznaj się z this question i zamień polecenia cmd w tym przykładzie za pomocą poleceń kompilacji.

2

Myślę, że odpowiadasz na swoje pytanie: użyj Runtime.getRuntime() i skompiluj apk używając ant lub gradle.

+0

Nie chcesz używać wiersza poleceń w Javie? – lithos35

+1

Tak, rację, użyłbym, gdybym znał komendy, dzięki którym mógłbym je zbudować na ant lub gradle. – syed99

+0

Masz podstawy w [dokumencie Android] (http://developer.android.com/tools/building/building-cmdline.html) i możesz również dostosować reguły kompilacji. Jest bardzo prosty w użyciu w prosty sposób. – lithos35

0

Plik apk jest w zasadzie plikiem zip. Zawiera twoje zasoby i pliki dex klasy. Zygote tworzy proces dalvik, dalvikvm wykonuje swoje kody java. Nie można utworzyć pliku APK programowo, ponieważ wygląda on jak classdex + resourcesmap. Jeśli tworzysz programowo apk, napisz jakieś znaki ASCII w pliku tekstowym, czy twoja możliwość rysowania? Gdzie jest ikona Twojej aplikacji? Ale będziesz wykonywać dalvikvm w klasie java. (Basiccally uruchom polecenie klasy -c ...)

Powiązane problemy