博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android打包
阅读量:6005 次
发布时间:2019-06-20

本文共 8667 字,大约阅读时间需要 28 分钟。

 

  • 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.bat

6.编译资源文件,生成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脚本使用环境变量

 

工具软件

 

快速搜索软件:

 

转载于:https://www.cnblogs.com/nangongyibin/p/10354597.html

你可能感兴趣的文章
正则与sed,grep,awk三剑客
查看>>
诊断一句SQL不走索引的原因
查看>>
iOS开发拓展篇—UIDynamic(简单介绍)
查看>>
Linux pipe函数
查看>>
图片标注工具LabelImg使用教程
查看>>
(原創) 如何設計一個數位相框? (SOC) (Quartus II) (SOPC Builder) (Nios II) (TRDB-LTM) (DE2-70)...
查看>>
/etc/profile文件内容
查看>>
量词 匹配优先与忽略优先
查看>>
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
汽车知识:车内异味的清除方法
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
android - ADT本地配置、sdk配置
查看>>
I.MX6 dhcpcd 需要指定网卡
查看>>
js递归原理之return
查看>>
浏览器的回流和重绘及其优化方式
查看>>
centos配置ssh免密码登录后,仍提示输入密码
查看>>
gulp+browser-sync实现前端自动化刷新
查看>>
python学习笔记 --- 来看看 random_state 这个参数
查看>>
基于angular2实现用户登录并信息持久化的一些理解(三)
查看>>
新框架 - 收藏集 - 掘金
查看>>