2014-05-20 2 views
0

주어진 경로에서 Java 소스 코드가 들어있는 디렉터리로 APK 파일을 프로그래밍 방식으로 만들고 싶습니다. 이것이 명령 행에서 안드로이드 도구를 사용하여 수행 할 수 있다는 것을 알고 있지만 Java 코드로 어떻게 할 수 있습니까? 내가 코멘트에서 언급 한 바와 같이프로그래밍 방식으로 APK 보관 파일에 파일을 패키지화하는 방법

+0

달성하려는 목표는 무엇입니까? Java에서 APK를 만들 수 없습니다. – Booger

+0

명령 줄을 통해이 작업을 수행 할 수 있다는 것을 알고 있다면 Java에서 명령 줄을 호출 해보십시오. –

+0

@Booger 디렉토리를 APK 보관소에 패키지하려고합니다. Java에서 정확히 수행 할 수없는 이유는 무엇입니까? 그것은 zip과 같은 단순한 아카이브 일뿐입니다. – Pawan

답변

2

, 빌드 프로세스의 많은, 당신은 자바 포트 위치에있을 가능성이 명령 줄 바이너리, 같은 javac로에서 dxaapt를 처리 .

제가 신발을 신은다면 Gradle의 IDE 통합 후크를보고 해당 build.gradle 및 관련 파일을 사용하여 Java 코드에서 빌드 프로세스를 유도 할 것입니다. One True Build Automation System으로 Gradle을 사용할 수 있다는 것은 Gradle for Android의 핵심 요소 중 하나입니다.

그렇지 않으면 안드로이드 (Gradle, Ant, Maven 및 Eclipse 빌드 프로세스 항목)의 기존 빌드 자동화 옵션을 사용하지 말고 또 다른을 빌드하는 것이 좋습니다. 여유가있는 수십 달의 개발자 개월이 있고 그 길로 가고 싶다면 그렇게 할 수 있습니다. 당신은 위에서 언급 한 아이디어 구현을보고 싶을 것이다.

+0

지금 당신의 요지를 얻었을 것입니다. 그러나 그것은 제가 생각하기에 이미 Maven을 사용하고 있기 때문에 제가 고집한다면 더 좋을 것이라고 생각합니다. Gradle 대신 Maven을 사용하십시오 아니면 Gradle 방식을 사용 하시겠습니까? – Pawan

+0

@Pawan : I Android에 대한 Maven 지원에 대한 경험이 없으므로 Gradle과 비교하여 언급 할 수 없습니다. 즉, 나는 자신의 것을 만드는 것이 더 나은 해결책이라고 확신합니다. – CommonsWare

+0

안드로이드 apk를 빌드하는 방법을 정의하는 Ant 파일의 소스 코드를 가르쳐 주시겠습니까? 또는 그 문제에 대한 Gradle 플러그인? – Pawan

0

나는 비슷한 관심사가 있었지만 약간의 연구 끝에 Java (Eclipse)에서 명령 줄을 호출 한 다음 필자가 사용한 명령을 인수로 사용하여 결과를 얻었습니다. 나는 이것을 구축하기를 원하는 모든 프로젝트마다 반복했다.

http://geosoft.no/development/android.html이 사이트는 명령 줄에서 Android 프로그램을 제작할 때 따라야 할 모든 단계를 보여줍니다. 저는 .apk 부분에 대해서만 염려했기 때문에 14 단계에서 충분했지만 전체 페이지를 확인할 수 있습니다. APK는 해당 페이지에서, 나는 ProcessBuilder를 코드 생성 명령을 사용하여

: ANDROID_HOME이 SDK 경로가

ProcessBuilder pb = new ProcessBuilder 
     (new String[] {ANDROID_HOME + "\\build-tools\\android-4.4W\\aapt.exe", 
       "package", 
       "-v", 
       "-f", 
       "-M", projectRootDirPath + "\\AndroidManifest.xml", 
       "-S", projectRootDirPath + "\\res", 
       "-I", ANDROID_HOME + "\\platforms\\android-20\\android.jar", 
       "-F", projectRootDirPath + "\\bin\\" + [APK_file_name] + ".apk", 
       projectRootDirPath + "\\bin"}); 

입니다

는 projectRootDirPath는 프로젝트 디렉토리의 경로이며, 물론 [APK_file_name] 원하는 이름이어야합니다 .apk 파일 용.

또한 사용중인 버전에 따라 "android-4.4W"및 "android-20"부품을 변경해야 할 수도 있습니다.