手工打包APK


1. 设置SDK环境变量

添加目录到环境变量....

当前环境为4.0的SDK, 1.8额JDK

JAVA SDK目录

%JAVA_HOME%\bin;

Android SDK根目录

%ANDROID% = Android SDK 的%Path%

sdk工具目录

%ANDROID%\sdk\tools;
%ANDROID%\platform-tools;
%ANDROID%\build-tools\23.0.1;对应版本号的目录


2. 利用命令行创建Android工程

命令: android create project -n Test -t android-14 -p DstPath -k org.test.test -a test

编译命令

命令参数

android create project 的参数

命令 命令解释
-n --name 工程名称
-t --target 项目编译的目标Android版本,详情见查看安卓版本
-p --path 生成的目标目录
-k --package 指定项目的包名
-a --activity Activity名称
-g --gradle 使用Gradle模版
-v --gradle-vers Gradle版本

查看安卓版本

可以使用android.bat list targets命令查看当前安装的AndRoid版本,(ID或者名称)

查看当前安装的版本


3. 编译资源

利用AAPT编译资源文件

  1. 先切换命令行到工程目录,
  2. 根目录新建一个gen目录,
  3. 然后输入命令产生R.java文件
    aapt package -f -m -J gen -S res -I %Android%\platforms\android-14\android.jar -M AndroidManifest.xml
AAPT参数
命令 命令解析
-f 覆盖现有文件
-m 产生包目录在J命令所指目录之下
-J 指定R.java资源文件存放路径
-S 从什么目录找到资源文件,可指定多个文件
-I 指定版本平台的android.jar的路径
-M 指定完整的AndroidManifest.xml路径包含到ZIP中
-A assert文件夹的路径
-F 具体指定apk文件的输出

4. 使用javac编译.java文件为.class

javac -source 1.6 -target 1.6 -bootclasspath %Android%/platforms/android-14/android.jar -d bin gen/org/test/test/*.java src/org/test/test/*.java

javac       -source 1.6     //什么版本JDK源文件-target 1.6     //什么版本JDK目标文件-bootclasspath %Android%/platforms/android-14/android.jar   //编译时可能使用的环境-d bin                                                      //输出目录gen/org/test/test/*.java src/org/test/test/*.java           //源目录
javac
命令 功能
-target 表示编译之后的class文件运行的环境版本
-bootclasspath 表示编译需要用到的系统库
-d 表示编译之后的class文件存放的目录

5. 使用dx 生成 .dex文件

dx版本dx version 1.11 (23.0.1目录下dx文件)

dx --dex --output=bin/classes.dex bin\org\test\test

Tips: 转换时出错了, 给javac编译版本从1.8转换为1.6之后转换成功


5. 使用aapt生成资源包文件

根目录新建assets文件夹
aapt package -f -A assets -S res -I %Android%/platforms/android-14/android.jar -M AndroidManifest.xml -F bin/test


6.打包一个未签名的APK

解决apkbuilder不存在的问题

copy android.bat apkbuilder.bat
修改com.android.sdkmanager.Maincom.android.sdklib.build.ApkBuilderMain

产生未签名的APK

apkbuilder 目标文件路径与文件名.apk -v -u -z 资源包文件路径与文件名 -f dex文件路径与文件名 -rf 源文件路径
路径均为全路径

Apkbuilder
命令 功能
-z 资源打包文件
-f 类打包文件
-rf 源代码目录

7. 使用keytool来产生一个keystore文件

keytool -genkey -alias CR23Test -keyalg RSA -validity 20000 -keystore CR23Test.keystore

命令 功能
-alias KeyName 表示别名
-keyalg RSA 产生键的加密算法
-validity 40000 有效期限4000天
-keystore 保存到本地的文件名

8. 签名APK

jarsigner -verbose -keystore CR23Test.keystore -signedjar HelloWorld_signed.apk HelloWorld.apk CR23Test

jarsigner -verbose
-keystore keystore文件名
-signedjar 签名后的apk名称 需签名apk名称
keystore中的别名(不是文件名)

注意:上面的keystore中的别名,一定记住不是文件名,如果写文件名就会提示
jarsigner: 找不到 xxx 的证书链。xxx 必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目。


9. 安装APK

adb install HelloWorld_signed.apk

成功图


10. 卸载APK

adb uninstall org.test.test

填写应用的包名


Tips

Android 版本号说明

安卓版本

更多相关文章

  1. 修改Android开机画面
  2. Android(安卓)studio project文件结构翻译
  3. Eclipse / Android(安卓): “Errors running builder 'Android(
  4. Eclipse中Android项目XML文件的格式化配置
  5. Android(安卓)XML解析
  6. Myeclispe10+ Android4.4 环境搭建
  7. Android找不到Manifest系统文件
  8. androidUI设计之旅 ----布局文件属性解析
  9. 制作linux根文件系统

随机推荐

  1. Android(安卓)自定义View (一)
  2. [android]Intent意图
  3. android中黑名单的实现
  4. Android实现气泡布局/弹窗效果 气泡尖角
  5. 《Kotlin》 Kotlin Android(安卓)Extensi
  6. Android(安卓)ListView单选CheckBox
  7. Android实现广告图片轮播效果
  8. [置顶] Android常用UI控件之PopupWindow
  9. Android(安卓)线程池
  10. Android(安卓)EditText的光标的显示与隐