Android APK 手动命令编译、打包、签名步骤
转:http://blog.csdn.net/xmobile/article/details/7979210
一、概述步骤
APK的生成需要经过以下几个步骤:
1、使用Android SDK提供的aapt.exe生成R.java类文件
2、使用Android SDK提供的aidl.exe把.aidl转成.java文件(如果没有aidl,则跳过这一步)
3、使用JDK提供的javac.exe编译.java类文件生成class文件
4、使用Android SDK提供的dx.bat命令行脚本生成classes.dex文件
5、使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等)
6、使用Android SDK提供的apkbuilder.bat生成未签名的apk安装文件
7、使用jdk的jarsigner.exe对未签名的包进行apk签名
二、详细步骤
1)、准备工作
A、安装好JDK,配置环境变量;
B、将android-sdk-windows\platform-tools和 android-sdk-windows\tools 添加到CLASSPATH 环境变量中;
C、打CMD命令行界面,将当前目录切换到工程所在目录;
D、准备一个目录,以下例子是以MyNotification项目;
2)、使用aapt生成R.java类,aapt所在路径android-sdk-windows\platform-tools\aapt.exe。
aapt package -f-m -J gen -S res -M AndroidManifest.xml -IF:\Android\Installs\android-sdk-windows\platforms\android-9\android.jar
说明:-J后面跟的是生成目录;-S后面跟的是资源目录;-M后面跟的是AndroidManifest.xml;-I后面跟的是使用的AndroidAPI的jar
3)、使用aidl把.aidl转成.java文件(如果没有aidl,则跳过这一步),aidl所在路径android-sdk-windows\platform-tools\aidl.exe。
4)、javac.exe编译.java类文件生成class文件,javac所在路径jdk1.6.0_33\bin\javac.exe。
javac -encodingutf-8 -target 1.6 -d bin -bootclasspathF:\Android\Installs\android-sdk-windows\platforms\android-9\android.jargen\com\my\notification\*.java src\com\my\notification\*.java
说明:-target:生成特定 VM 版本的类文件;-d:指定存放生成的类文件的位置;-bootclasspath:覆盖引导类文件的位置;
5)、使用dx.bat命令行脚本生成classes.dex文件,dx.bat所在路径android-sdk-windows\platform-tools\dx.bat。
dx.bat--dex --output=F:\Android\Workspace\MyNotification\bin\classes.dex F:\Android\Workspace\MyNotification\bin\
说明:--output:生成的dex文件;最后带上class文件所在目录;
6)、使用aapt.exe生成资源包文件,aapt.exe所在路径android-sdk-windows\platform-tools\aapt.exe。
aaptpackage -f -S res -M AndroidManifest.xml -IF:\Android\Installs\android-sdk-windows\platforms\android-9\android.jar -FF:\Android\Workspace\MyNotification\bin\resources.ap_
说明:-S:资源目录;-M:AndroidManifest.xml文件;-I:导入用的jar文件;-F:生成的资源文件;
7)、使用apkbuilder.bat生成未签名的apk安装文件,apkbuilder.bat所在路径android-sdk-windows\tools\apkbuilder.bat。(使用该命令时:会提示该工具已过时,Google不推荐使用。而推荐使用的是:com.android.ant.ApkBuilderTask)
apkbuilderF:\Android\Workspace\MyNotification\bin\MyNotification.apk -u -zF:\Android\Workspace\MyNotification\bin\resources.ap_ -fF:\Android\Workspace\MyNotification\bin\classes.dex -rfF:\Android\Workspace\MyNotification\src\
说明:-z:资源打包文件;-f:类打包文件;-rf:源代码目录;
8)、使用jarsigner.exe对未签名的包进行apk签名,jarsigner.exe所在路径jdk1.6.0_33\bin\jarsigner.exe。
jarsigner-verbose -keystore D:\my.kestore -signedjarF:\Android\Workspace\MyNotification\bin\signed.apk F:\Android\Workspace\MyNotification\bin\MyNotification.apkmy.keystore
说明:-keystore:keystore文件;-signedjar:签名后的文件;后面还有未签名文件和key的alias