手工打包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

手工打包APK_第1张图片 编译命令

手工打包APK_第2张图片 命令参数

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或者名称)

手工打包APK_第3张图片 查看当前安装的版本


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
手工打包APK_第4张图片 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           //源目录
手工打包APK_第5张图片 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

手工打包APK_第6张图片 成功图


10. 卸载APK

adb uninstall org.test.test

填写应用的包名


Tips

Android 版本号说明

手工打包APK_第7张图片 安卓版本

更多相关文章

  1. Android studio project文件结构翻译
  2. Eclipse中Android项目XML文件的格式化配置
  3. Android找不到Manifest系统文件
  4. androidUI设计之旅 ----布局文件属性解析
  5. 制作linux根文件系统
  6. android -h 'xcopy' 不是内部或外部命令
  7. Android常用DOS命令
  8. android中如何获取文件的路径总结

随机推荐

  1. Android基本之SharedPreferences和File
  2. 通过超链接打开一些常见app(android:schem
  3. 六款值得推荐的android(安卓)开源框架简介
  4. Android 老罗视频教程笔记
  5. zjujoe的专栏都是月亮惹的祸--linux andr
  6. Android Linux Kernel 移植流程
  7. android获取手机流量使用情况
  8. Android Tombstone/Crash的log分析和定位
  9. cocos2d-x 从C++调Java
  10. Android 6.0 运行时权限 处理