[打包、发布] [Android]使用命令行打APK包

来源:互联网 发布:如何登录windows账户 编辑:程序博客网 时间:2024/05/20 02:26

http://www.devdiv.com/forum.php?mod=viewthread&tid=51207



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


现贡献出Window环境下的批处理代码如下。如果觉得不方便,本人已整合了一个rar压缩包,只要将以下三个文件中开头部分的参数设置成自己本机环境上的数值,然后依次运行下面三个文件,将自动生成一个已签名(图个方便我使用了signer.jar)可安装的out.apk。
  1. step1_R.java_any.class_classes.dex.bat  
  2. step2_resources.arsc_out.apk.bat  
  3. step3_signer.bat
复制代码
  1. REM ************[START]Do some homework************  
  2. SET WORK_SPACE=D:\Sodino\AutoPackage  
  3. SET PKG_PATH=lab\sodino\webview  
  4. SET OUT_APK=%WORK_SPACE%\out.apk  
  5. SET JAVA_SPACE=E:\Java\jdk1.6.0_14\bin  
  6. SET ANDROID_SPACE=D:\MissionSetup\Android\android-sdk-r08-windows  
  7. REM ************[END]Do some homework************
复制代码
rar下载地址:http://www.sodino.com/AndroidNotepad/AutoPackage.rar
文件:step1_R.java_any.class_classes.dex.bat
  1. @ECHO OFF
  2. REM *****CREATED BY Sodino 
  3. REM *****2011-03-02 15:00
  4. REM ************[START]Do some homework************
  5. SET WORK_SPACE=D:\Sodino\AutoPackage
  6. SET PKG_PATH=lab\sodino\webview
  7. SET JAVA_SPACE=E:\Java\jdk1.6.0_14\bin
  8. SET ANDROID_SPACE=D:\MissionSetup\Android\android-sdk-r08-windows
  9. REM ************[END]Do some homework************

  10. REM ************[START]FOLDERS************
  11. ECHO Creating output directories if needed...
  12. SET SOURCE_FOLDER=%WORK_SPACE%\src
  13. SET RESOURCE_FOLDER=%WORK_SPACE%\res
  14. SET ASSETS_FOLDER=%WORK_SPACE%\assets
  15. SET GEN_FOLDER=%WORK_SPACE%\gen
  16. REM folder for the 3rd party java libraries
  17. SET EXTERNAL_LIBS_FOLDER=%WORK_SPACE%\libs
  18. REM folder for the native libraries
  19. SET NATIVE_LIBS_FOLDER=%WORK_SPACE%\libs
  20. SET OUT_FOLDER=%WORK_SPACE%\bin
  21. SET OUT_CLASS_FOLDER=%OUT_FOLDER%\classes
  22. REM ************[END]************

  23. REM ************[START]Tools************
  24. SET JAVA=%JAVA_SPACE%\java.exe
  25. SET JAVAC=%JAVA_SPACE%\javac.exe
  26. SET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exe
  27. SET AIDL=%ANDROID_SPACE%\platform-tools\aidl.exe
  28. SET DX=%ANDROID_SPACE%\platform-tools\dx.bat
  29. REM ************[END]************

  30. REM ************[START]Extral jar************
  31. SET ANDROID_JAR=%ANDROID_SPACE%\platforms\android-3\android.jar
  32. REM ************[END]************

  33. REM ************[START]Generate the necessary folders************
  34. MKDIR %GEN_FOLDER%
  35. MKDIR %OUT_FOLDER%
  36. MKDIR %OUT_CLASS_FOLDER%
  37. REM ************[END]************

  38. REM ************[START]Generate the R.java************
  39. ECHO Generating R.java / Manifest.java from the resources...
  40. %AAPT% package -m -J %GEN_FOLDER% -M AndroidManifest.xml -S %RESOURCE_FOLDER% -I %ANDROID_JAR%
  41. REM ************[END]************

  42. REM ************[START]Generate java classes from .aidl files.************
  43. REM SET AIDL_FILE_1=D:\Sodino\AutoPackage\ApiDemos\src\com\example\android\apis\app\IRemoteService.aidl
  44. REM SET AIDL_FILE_OUT_1=D:\Sodino\AutoPackage\ApiDemos\src\com\example\android\apis\app\IRemoteService.java
  45. REM %AIDL% -p -I %SOURCE_FOLDER% -o %GEN_FOLDER% %AIDL_FILE_1% %AIDL_FILE_OUT_1%
  46. REM FAIL
  47. REM ************[END]************

  48. REM ************[START]Compile this project's .java files into .class files.************
  49. ECHO Compile this project's .java files into .class files.
  50. %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%\*.java
  51. REM ************[END]Compile this project's .java files into .class files.************

  52. REM ************[START]Convert this project's .class files into .dex files.************
  53. ECHO Convert this project's .class files into .dex files.
  54. %DX% --dex --output=%OUT_FOLDER%\classes.dex %OUT_CLASS_FOLDER%
  55. REM ************[END]Convert this project's .class files into .dex files.************

  56. ECHO EDITED BY SODINO
  57. PAUSE
  58. @ECHO ON
复制代码
文件:step2_resources.arsc_out.apk.bat
  1. @ECHO OFF
  2. REM *****CREATED BY Sodino 
  3. REM *****2011-03-02 15:00

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

  11. REM ************[START]FOLDERS************
  12. ECHO Creating output directories if needed...
  13. SET SOURCE_FOLDER=%WORK_SPACE%\src
  14. SET RESOURCE_FOLDER=%WORK_SPACE%\res
  15. SET ASSETS_FOLDER=%WORK_SPACE%\assets
  16. SET GEN_FOLDER=%WORK_SPACE%\gen
  17. REM folder for the 3rd party java libraries
  18. SET EXTERNAL_LIBS_FOLDER=%WORK_SPACE%\libs
  19. REM folder for the native libraries
  20. SET NATIVE_LIBS_FOLDER=%WORK_SPACE%\libs
  21. SET OUT_FOLDER=%WORK_SPACE%\bin
  22. SET OUT_CLASS_FOLDER=%OUT_FOLDER%\classes
  23. REM ************[END]************

  24. REM ************[START]Tools************
  25. SET JAVA=%JAVA_SPACE%\java.exe
  26. SET JAVAC=%JAVA_SPACE%\javac.exe
  27. SET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exe
  28. SET AIDL=%ANDROID_SPACE%\platform-tools\aidl.exe
  29. SET DX=%ANDROID_SPACE%\platform-tools\dx.bat
  30. SET APKBUILDER=%ANDROID_SPACE%\tools\apkbuilder.bat
  31. REM ************[END]************

  32. REM ************[START]Extral jar************
  33. SET ANDROID_JAR=%ANDROID_SPACE%\platforms\android-3\android.jar
  34. REM ************[END]************

  35. REM ************[START]
  36. REM Put the project's resources into the output package file
  37. REM This actually can create multiple resource package in case
  38. REM Some custom apk with specific configuration have been
  39. REM declared in default.properties.
  40. REM ************
  41. ECHO Put the project's resources into the output package file
  42. %AAPT% package -a -f -M AndroidManifest.xml -S %RESOURCE_FOLDER% -A %ASSETS_FOLDER% -I %ANDROID_JAR% -F %OUT_FOLDER%\resources.arsc
  43. REM ************[END]************

  44. REM ************[START]
  45. REM Package the application and sign it with a debug key.
  46. REM This is the default target when building. It is used for debug.
  47. REM ************
  48. ECHO Put the project's resources into the output package file
  49. REM %APKBUILDER% %OUT_APK% -v -u -z %RESOURCE% -f %CLASSES% -rf %SRC%
  50. %APKBUILDER% %OUT_APK% -v -u -z %OUT_FOLDER%\resources.arsc -f %OUT_FOLDER%\classes.dex -rf %SOURCE_FOLDER%
  51. REM ************[END]************

  52. ECHO EDITED BY SODINO
  53. PAUSE
  54. @ECHO ON
复制代码
文件:step3_signer.bat
  1. @ECHO OFF
  2. REM *****CREATED BY Sodino 
  3. REM *****2011-03-02 15:00
  4. REM ************[START]Do some homework************
  5. SET WORK_SPACE=D:\Sodino\AutoPackage
  6. SET PKG_PATH=lab\sodino\webview
  7. SET OUT_APK=%WORK_SPACE%\out.apk
  8. SET JAVA_SPACE=E:\Java\jdk1.6.0_14\bin
  9. SET ANDROID_SPACE=D:\MissionSetup\Android\android-sdk-r08-windows
  10. REM ************[END]Do some homework************

  11. REM ************[START]FOLDERS************
  12. ECHO Creating output directories if needed...
  13. SET SOURCE_FOLDER=%WORK_SPACE%\src
  14. SET RESOURCE_FOLDER=%WORK_SPACE%\res
  15. SET ASSETS_FOLDER=%WORK_SPACE%\assets
  16. SET GEN_FOLDER=%WORK_SPACE%\gen
  17. REM folder for the 3rd party java libraries
  18. SET EXTERNAL_LIBS_FOLDER=%WORK_SPACE%\libs
  19. REM folder for the native libraries
  20. SET NATIVE_LIBS_FOLDER=%WORK_SPACE%\libs
  21. SET OUT_FOLDER=%WORK_SPACE%\bin
  22. SET OUT_CLASS_FOLDER=%OUT_FOLDER%\classes
  23. REM ************[END]************

  24. REM ************[START]Tools************
  25. SET JAVA=%JAVA_SPACE%\java.exe
  26. SET JAVAC=%JAVA_SPACE%\javac.exe
  27. SET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exe
  28. SET AIDL=%ANDROID_SPACE%\platform-tools\aidl.exe
  29. SET DX=%ANDROID_SPACE%\platform-tools\dx.bat
  30. REM ************[END]************

  31. REM ************[START]Extral jar************
  32. SET ANDROID_JAR=%ANDROID_SPACE%\platforms\android-3\android.jar
  33. REM ************[END]************

  34. REM ************[START]************
  35. ECHO Signed with jarsigner.
  36. %JAVA% -jar %WORK_SPACE%\signer.jar %OUT_APK%
  37. REM ************[END]************

  38. ECHO EDITED BY SODINO
  39. PAUSE
  40. @ECHO ON
复制代码
好了,要睡觉了。明天有时间的话,给大家讲讲如何使用signer.jar来实现APK的静默安装。