Android使用命令行打APK包

来源:互联网 发布:plc编程方法 编辑:程序博客网 时间:2024/05/22 06:09

 接了个需求比较蛋疼的项目,用户的操作会涉及到修改源码,没办法,只好自动打包了。

现贡献出Window环境下的批处理代码如下。如果觉得不方便,本人已整合了一个rar压缩包,只要将以下三个文件中开头部分的参数设置成自己本机环境上的数值,然后依次运行下面三个文件,将自动生成一个已签名(图个方便我使用了signer.jar)可安装的out.apk。

 

step1_R.java_any.class_classes.dex.bat  step2_resources.arsc_out.apk.bat  step3_signer.bat


 

REM ************[START]Do some homework************  SET WORK_SPACE=D:\Sodino\AutoPackage  SET PKG_PATH=lab\sodino\webview  SET OUT_APK=%WORK_SPACE%\out.apk  SET JAVA_SPACE=E:\Java\jdk1.6.0_14\bin  SET ANDROID_SPACE=D:\MissionSetup\Android\android-sdk-r08-windows  REM ************[END]Do some homework************

rar下载地址:http://www.sodino.com/AndroidNotepad/AutoPackage.rar
文件:step1_R.java_any.class_classes.dex.bat

@ECHO OFFREM *****CREATED BY Sodino REM *****2011-03-02 15:00REM ************[START]Do some homework************SET WORK_SPACE=D:\Sodino\AutoPackageSET PKG_PATH=lab\sodino\webviewSET JAVA_SPACE=E:\Java\jdk1.6.0_14\binSET ANDROID_SPACE=D:\MissionSetup\Android\android-sdk-r08-windowsREM ************[END]Do some homework************REM ************[START]FOLDERS************ECHO Creating output directories if needed...SET SOURCE_FOLDER=%WORK_SPACE%\srcSET RESOURCE_FOLDER=%WORK_SPACE%\resSET ASSETS_FOLDER=%WORK_SPACE%\assetsSET GEN_FOLDER=%WORK_SPACE%\genREM folder for the 3rd party java librariesSET EXTERNAL_LIBS_FOLDER=%WORK_SPACE%\libsREM folder for the native librariesSET NATIVE_LIBS_FOLDER=%WORK_SPACE%\libsSET OUT_FOLDER=%WORK_SPACE%\binSET OUT_CLASS_FOLDER=%OUT_FOLDER%\classesREM ************[END]************REM ************[START]Tools************SET JAVA=%JAVA_SPACE%\java.exeSET JAVAC=%JAVA_SPACE%\javac.exeSET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exeSET AIDL=%ANDROID_SPACE%\platform-tools\aidl.exeSET DX=%ANDROID_SPACE%\platform-tools\dx.batREM ************[END]************REM ************[START]Extral jar************SET ANDROID_JAR=%ANDROID_SPACE%\platforms\android-3\android.jarREM ************[END]************REM ************[START]Generate the necessary folders************MKDIR %GEN_FOLDER%MKDIR %OUT_FOLDER%MKDIR %OUT_CLASS_FOLDER%REM ************[END]************REM ************[START]Generate the R.java************ECHO Generating R.java / Manifest.java from the resources...%AAPT% package -m -J %GEN_FOLDER% -M AndroidManifest.xml -S %RESOURCE_FOLDER% -I %ANDROID_JAR%REM ************[END]************REM ************[START]Generate java classes from .aidl files.************REM SET AIDL_FILE_1=D:\Sodino\AutoPackage\ApiDemos\src\com\example\android\apis\app\IRemoteService.aidlREM SET AIDL_FILE_OUT_1=D:\Sodino\AutoPackage\ApiDemos\src\com\example\android\apis\app\IRemoteService.javaREM %AIDL% -p -I %SOURCE_FOLDER% -o %GEN_FOLDER% %AIDL_FILE_1% %AIDL_FILE_OUT_1%REM FAILREM ************[END]************REM ************[START]Compile this project's .java files into .class files.************ECHO Compile this project's .java files into .class files.%JAVAC% -encoding utf-8 -target 1.5 -d %OUT_CLASS_FOLDER% -bootclasspath %ANDROID_JAR% -Xlint:unchecked %SOURCE_FOLDER%\%PKG_PATH%\*.java %GEN_FOLDER%\%PKG_PATH%\*.javaREM ************[END]Compile this project's .java files into .class files.************REM ************[START]Convert this project's .class files into .dex files.************ECHO Convert this project's .class files into .dex files.%DX% --dex --output=%OUT_FOLDER%\classes.dex %OUT_CLASS_FOLDER%REM ************[END]Convert this project's .class files into .dex files.************ECHO EDITED BY SODINOPAUSE@ECHO ON

文件:step2_resources.arsc_out.apk.bat

@ECHO OFFREM *****CREATED BY Sodino REM *****2011-03-02 15:00REM ************[START]Do some homework************SET WORK_SPACE=D:\Sodino\AutoPackageSET PKG_PATH=lab\sodino\webviewSET OUT_APK=%WORK_SPACE%\out.apkSET JAVA_SPACE=E:\Java\jdk1.6.0_14\binSET ANDROID_SPACE=D:\MissionSetup\Android\android-sdk-r08-windowsREM ************[END]************REM ************[START]FOLDERS************ECHO Creating output directories if needed...SET SOURCE_FOLDER=%WORK_SPACE%\srcSET RESOURCE_FOLDER=%WORK_SPACE%\resSET ASSETS_FOLDER=%WORK_SPACE%\assetsSET GEN_FOLDER=%WORK_SPACE%\genREM folder for the 3rd party java librariesSET EXTERNAL_LIBS_FOLDER=%WORK_SPACE%\libsREM folder for the native librariesSET NATIVE_LIBS_FOLDER=%WORK_SPACE%\libsSET OUT_FOLDER=%WORK_SPACE%\binSET OUT_CLASS_FOLDER=%OUT_FOLDER%\classesREM ************[END]************REM ************[START]Tools************SET JAVA=%JAVA_SPACE%\java.exeSET JAVAC=%JAVA_SPACE%\javac.exeSET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exeSET AIDL=%ANDROID_SPACE%\platform-tools\aidl.exeSET DX=%ANDROID_SPACE%\platform-tools\dx.batSET APKBUILDER=%ANDROID_SPACE%\tools\apkbuilder.batREM ************[END]************REM ************[START]Extral jar************SET ANDROID_JAR=%ANDROID_SPACE%\platforms\android-3\android.jarREM ************[END]************REM ************[START]REM Put the project's resources into the output package fileREM This actually can create multiple resource package in caseREM Some custom apk with specific configuration have beenREM declared in default.properties.REM ************ECHO Put the project's resources into the output package file%AAPT% package -a -f -M AndroidManifest.xml -S %RESOURCE_FOLDER% -A %ASSETS_FOLDER% -I %ANDROID_JAR% -F %OUT_FOLDER%\resources.arscREM ************[END]************REM ************[START]REM Package the application and sign it with a debug key.REM This is the default target when building. It is used for debug.REM ************ECHO Put the project's resources into the output package fileREM %APKBUILDER% %OUT_APK% -v -u -z %RESOURCE% -f %CLASSES% -rf %SRC%%APKBUILDER% %OUT_APK% -v -u -z %OUT_FOLDER%\resources.arsc -f %OUT_FOLDER%\classes.dex -rf %SOURCE_FOLDER%REM ************[END]************ECHO EDITED BY SODINOPAUSE@ECHO ON

文件:step3_signer.bat

@ECHO OFFREM *****CREATED BY Sodino REM *****2011-03-02 15:00REM ************[START]Do some homework************SET WORK_SPACE=D:\Sodino\AutoPackageSET PKG_PATH=lab\sodino\webviewSET OUT_APK=%WORK_SPACE%\out.apkSET JAVA_SPACE=E:\Java\jdk1.6.0_14\binSET ANDROID_SPACE=D:\MissionSetup\Android\android-sdk-r08-windowsREM ************[END]Do some homework************REM ************[START]FOLDERS************ECHO Creating output directories if needed...SET SOURCE_FOLDER=%WORK_SPACE%\srcSET RESOURCE_FOLDER=%WORK_SPACE%\resSET ASSETS_FOLDER=%WORK_SPACE%\assetsSET GEN_FOLDER=%WORK_SPACE%\genREM folder for the 3rd party java librariesSET EXTERNAL_LIBS_FOLDER=%WORK_SPACE%\libsREM folder for the native librariesSET NATIVE_LIBS_FOLDER=%WORK_SPACE%\libsSET OUT_FOLDER=%WORK_SPACE%\binSET OUT_CLASS_FOLDER=%OUT_FOLDER%\classesREM ************[END]************REM ************[START]Tools************SET JAVA=%JAVA_SPACE%\java.exeSET JAVAC=%JAVA_SPACE%\javac.exeSET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exeSET AIDL=%ANDROID_SPACE%\platform-tools\aidl.exeSET DX=%ANDROID_SPACE%\platform-tools\dx.batREM ************[END]************REM ************[START]Extral jar************SET ANDROID_JAR=%ANDROID_SPACE%\platforms\android-3\android.jarREM ************[END]************REM ************[START]************ECHO Signed with jarsigner.%JAVA% -jar %WORK_SPACE%\signer.jar %OUT_APK%REM ************[END]************ECHO EDITED BY SODINOPAUSE@ECHO ON

好了,要睡觉了。明天有时间的话,给大家讲讲如何使用signer.jar来实现APK的静默安装。



原创粉丝点击