- 01.android打包流程图
注意:
-(1)必须使用AS的SDK(纯净版),避免出问题不能Eclipse-(2)建议使用Eclipse学习打包,Eclipse目录结构简单
1.生成R文件,调用命令aapt.exe(sdk\build-tools\23.0.3)
2.编译aidl文件,调用命令aidl(sdk\build-tools\23.0.3) 3.编译所有的java文件,调用命令jdk的javac.exe 4.解压第三方jar包,调用命令jdk的jar 5.生成dex文件,调用命令dx.bat(sdk\build-tools\23.0.3) 6.生成资源包文件resources.ap_,调用命令aapt.exe 7.生成未签名apk,调用命令apkbuilder.bat(sdk\tools) 8.生成签名apk,调用命令jdk的jarsigner.exe- 02.命令行打包生成R文件
任何图形化解密底层都是命令
为了在任何目录都能够调用aapt.exe命令,需要配置到path环境变量
命令E:\bakclass\CmdDemo>aapt p -f -m -J build\gen -S res -I D:\ProgramFiles\Android\sdk\platforms\android-18\android.jar -M AndroidManifest.xml
- 03.命令行打包编译java文件
先跳过编译aidl文件
注意:使用jdk不能使用1.8,建议使用1.7命令
E:\bakclass\CmdDemo>D:\ProgramFiles\Java1.7\jdk1.7.0_80\bin\javac.exe -encoding utf-8 -bootclasspath D:\ProgramFiles\Android\sdk\platforms\android-18\android.jar -cp libs\android-support-v4.jar -d build\classes src\com\ngyb\cmddemo\MainActivity.java build\gen\com\ngyb\cmddemo\R.java
- 04.命令行打包解压第三方jar包
调用jdk的jar.exe命令
命令
jar xvf ..\..\libs\android-support-v4.jar
- 05.命令行打包生成dex文件
非常非常注意:必须使用AS的SDK(纯净版)、必须使用jdk1.7
命令所在目录sdk\build-tools\23.0.3\dx.bat
使用jdk1.8,生成dex文件报错:建议使用jdk1.7
解决上述问题:重新编译java文件,使用jdk1.7
dx --dex --output=E:\bakclass\CmdDemo\build\classes.dex E:\bakclass\CmdDemo\build\classes
- 06.命令行打包编译资源文件
命令
E:\bakclass\CmdDemo>aapt p -f -M AndroidManifest.xml -S res -A assets -I D:\ProgramFiles\Android\sdk\platforms\android-18\android.jar -F build\resoures.ap_
- 07.命令行打包生成未签名apk文件
调用命令:sdk\tools\apkbuilder.bat
命令
E:\bakclass\CmdDemo>apkbuilder E:\bakclass\CmdDemo\build\Demo_unsigned.apk -u -z E:\bakclass\CmdDemo\build\resoures.ap_ -f E:\bakclass\CmdDemo\build\classes.dex -rf E:\bakclass\CmdDemo\src -rj E:\bakclass\CmdDemo\libs
- 08.生成keystore
没有签名不能安装,没有证书信息
debug.keystore目录:C:\Users\用户名.android\debug.keystore
debug.keystore运行测试项目,给apk签名,上线项目必须使用公司自己的keystore
生成keystore图形化界面
生成keystore命令(秘钥对称:公钥和使用)
E:\bakclass\CmdDemo>keytool -genkeypair -alias ngyb -keyalg "RSA" -validity 3650 -keystore ngyb.jks
- 09.命令行打包生成签名apk文件
命令所在目录:jdk/bin/jarsigner.exe
通过命令行获取keystore别名
keytool -list -keystore ngyb.jks -v
命令
E:\bakclass\CmdDemo>jarsigner -keystore ngyb.jks -storepass 123456 -keypass 123456 -signedjar build\Demo_signed.apk build\Demo_unsigned.apk ngyb
- 10.手机卫士打包生成R文件
命令
aapt p -f -m -J build\gen -S res -I D:\ProgramFiles\Android\sdk\platforms\android-18\android.jar -M AndroidManifest.xml
- 11.手机卫士打包编译aidl文件
aidl目录所在目录:sdk\build-tools\23.0.3\aidl.exe
编译2个aidl文件
E:\南宫燚滨\day1\MobileSafe>aidl -Isrc -pD:\ProgramFiles\Android\sdk\platforms\android-18\framework.aidl -obuild\gen src\android\telephony\NeighboringCellInfo.aidl E:\南宫燚滨\day1\MobileSafe>aidl -Isrc -pD:\ProgramFiles\Android\sdk\platforms\android-18\framework.aidl -obuild\gen src\com\android\internal\telephony\ITelephony.aidl
- 12.手机卫士打包编译java文件
调用jdk1.7的javac.exe命令
D:\ProgramFiles\Java1.7\jdk1.7.0_80\bin\javac.exe -encoding utf-8 -bootclasspath D:\ProgramFiles\Android\sdk\platforms\android-18\android.jar -cp libs\android-support-v4.jar;libs\nineoldandroids-2.4.0.jar; -d build\classes build\gen\com\android\internal\telephony\ITelephony.java build\gen\com\ngyb\safe\R.java src\com\ngyb\safe\activity\AppManagerActivity.java src\com\ngyb\safe\activity\BlackEditActivity.java src\com\ngyb\safe\activity\CallSmsSafeActivity.java src\com\ngyb\safe\activity\CommonNumberActivity.java src\com\ngyb\safe\activity\CommonNumberActivity.java src\com\ngyb\safe\activity\CommonToolActivity.java src\com\ngyb\safe\activity\HomeActivity.java src\com\ngyb\safe\activity\NumberAdressActivity.java src\com\ngyb\safe\activity\SelectContactActivity.java src\com\ngyb\safe\activity\SelectContactActivity2.java src\com\ngyb\safe\activity\SettingActivity.java src\com\ngyb\safe\activity\SjfdActivity.java src\com\ngyb\safe\activity\SjfdBaseSetupActivity.java src\com\ngyb\safe\activity\SjfdSetupActivity1.java src\com\ngyb\safe\activity\SjfdSetupActivity2.java src\com\ngyb\safe\activity\SjfdSetupActivity3.java src\com\ngyb\safe\activity\SjfdSetupActivity4.java src\com\ngyb\safe\activity\SjfdSetupActivity5.java src\com\ngyb\safe\activity\SplashActivity.java src\com\ngyb\safe\bean\AddressBean.java src\com\ngyb\safe\bean\AppBean.java src\com\ngyb\safe\bean\BlackBean.java src\com\ngyb\safe\bean\ContactBean.java src\com\ngyb\safe\bean\HomeBean.java src\com\ngyb\safe\business\AppProvider.java src\com\ngyb\safe\db\BlackDao.java src\com\ngyb\safe\db\BlackDB.java src\com\ngyb\safe\db\BlackDBOpenHelper.java src\com\ngyb\safe\db\CommonNumberDao.java src\com\ngyb\safe\db\NumberAddressDao.java src\com\ngyb\safe\receiver\BootcompletedReceiver.java src\com\ngyb\safe\receiver\SafeAdminReceiver.java src\com\ngyb\safe\receiver\SmsReceiver.java src\com\ngyb\safe\service\CallSmsSafeService.java src\com\ngyb\safe\service\GPSService.java src\com\ngyb\safe\service\NumberAddressService.java src\com\ngyb\safe\test\TestBlackDao.java src\com\ngyb\safe\utils\Constants.java src\com\ngyb\safe\utils\ContactUtils.java src\com\ngyb\safe\utils\GZipUtils.java src\com\ngyb\safe\utils\PackageUtils.java src\com\ngyb\safe\utils\PreferenceUtils.java src\com\ngyb\safe\utils\ServiceStateUtils.java src\com\ngyb\safe\view\AddressDialog.java src\com\ngyb\safe\view\AddressToast.java src\com\ngyb\safe\view\FocusedTextView.java src\com\ngyb\safe\view\ProgressStateView.java src\com\ngyb\safe\view\SettingItemView.java
- 13.手机卫士打包解压第三方jar包
解压2个jar包
jar xvf ..\..\libs\android-support-v4.jarjar xvf ..\..\libs\nineoldandroids-2.4.0.jar
- 14.手机卫士打包生成dex文件
命令
E:\南宫燚滨\day1\MobileSafe>dx --dex --output=E:\南宫燚滨\day1\MobileSafe\build\classes.dex E:\南宫燚滨\day1\MobileSafe\build\classes
- 15.手机卫士打包生成资源包文件
命令
E:\南宫燚滨\day1\MobileSafe>aapt p -f -M AndroidManifest.xml -S res -A assets -I D:\ProgramFiles\Android\sdk\platforms\android-18\android.jar -F build\resources.ap_
- 16.手机卫士打包生成未签名apk
命令
E:\南宫燚滨\day1\MobileSafe>apkbuilder E:\南宫燚滨\day1\MobileSafe\build\MobileSafe_unsigned.apk -u -z E:\南宫燚滨\day1\MobileSafe\build\resources.ap_ -f E:\南宫燚滨\day1\MobileSafe\build\classes.dex -rf E:\南宫燚滨\day1\MobileSafe\src -rj E:\南宫燚滨\day1\MobileSafe\libs
- 17.手机卫士打包生成签名apk
调用jdk命令jarsigner.exe
E:\南宫燚滨\day1\MobileSafe>jarsigner -keystore ngyb.jks -storepass 123456 -keypass 123456 -signedjar build\MobileSafe_signed.apk build\MobileSafe_unsigned.apk ngyb
签名apk多出目录:META-INF
- 18.回顾打包流程图
1.生成R.java文件,调用sdk的aapt.exe
2.编译aidl文件 -> 生成java文件,调用sdk的aidl.exe 3.编译所有的java文件,生成class文件,调用1.7jdk的javac.exe 4.解压第三方jar包,生成class文件,调用jdk的jar.exe 5.生成classes.dex文件,调用命令dx.bat6.编译资源文件,生成resources.ap_,调用命令aapt
7.生成未签名apk,调用apkbuilder.bat,不能安装
8.生成签名apk,调用jdk的jarsigner.exe- 19.简单了解非对称加密RSA
RSA:非对称加密算法
秘钥对:公钥和私钥
公钥加密私钥解密;私钥加密公钥解密
- 20.ant打包集成ant
借助代码提示:ant.dtd导入Eclipse(导入类型文件系统)
项目根目录创建build.xml- 21.ant打包简单语法
明天项目自动化:jenkins
执行ant命令,需要安装环境apache-ant-1.9.7,需要调用ant.bat命令编译ant脚本文件
调用语法:ant target任务名称
22.ant打包常用语法
- 23.ant打包手机卫士初始化
- 24.ant打包手机卫士-生成R文件
- 25.ant打包手机卫士-编译aidl文件
- 26.ant打包手机卫士-编译java文件
- 27.ant打包手机卫士-解压第三方jar包
- 28.ant打包手机卫士-生成dex文件
报错:前面编译java文件使用jdk1.8
- 28.ant打包手机卫士-生成资源包文件
- 29.ant打包手机卫士-生成未签名apk
- 31.ant打包手机卫士-生成签名apk
- 32.ant打包手机卫士-收尾
优化:便于回去使用,修改代码
1.所有property统一管理 2.环境变量
ant脚本使用环境变量
工具软件
快速搜索软件: