1.配置好环境变量
- $JAVA_HOME\bin;
- $ANDROID_HOME\sdk\tools;
- $ANDROID_HOME\platform-tools;
- $ANDROID_HOMEG\build-tools\23.0.3;
2.创建一个Android项目
- 使用以下命令创建一个Android项目:
android create project -n HelloWorld -t 24 -p J:\CK_23\第四阶段Android\20170317手动编译\code -k com.test.helloworld -a HelloWorld - 参数的意义
-n 项目的名称
-t 项目针对的android平台
-p 项目保存的路径
-k 项目的包名
-a 指定的Activity名称
3.使用aapt编译资源生成R.java
- 新建一个文件夹gen,使用下列命令生成R.java
aapt package -f -m -J gen -S res -I G:\android-sdk-windows\platforms\android-19\android.jar -M AndroidManifest.xml - 命令参数的意义
-f 如果编译出来的文件已经存在,强制覆盖。
-m 使生成的包的目录放在-J参数指定的目录。
-J 指定生成的R.java的输出目录
-S res文件夹路径
-A assert文件夹的路径
-M AndroidManifest.xml的路径
-I 某个版本平台的android.jar的路径
-F 具体指定apk文件的输出
没有错误提示就是成功了,并且会在\gen\com\test\helloworld文件夹中创建一个R.java文件,其中记录着资源ID
4.使用javac编译java源码生成.class文件
- 使用javac命令编译.java文件:
javac -d bin src\com\test\helloworld*.java gen\com\test\helloworld*.java -bootclasspath G:\android-sdk-windows\platforms\android-19\android.jar - 命令参数的意义
-target:表示编译之后的class文件运行的环境版本
-bootclasspath:表示编译需要用到的系统库
-d:表示编译之后的class文件存放的目录
在\bin\com\test\helloworld目录下生成了.class文件
5.使用dx命令生成.dex文件
- 使用dx命令生成.dex文件
dx –dex –output= bin\classes.dex bin
特别值得注意的是在这个地方特别容易出错,第一次生成.dex文件时,就产生了一堆unsupported class file version 52.0的错误;
在网上找到的答案就是说jdk版本太高,然后换把版本换成了jdk1.7, 结果还是出现了一个错误,最后换成jdk1.6错误还是存在;
最后差点放弃了。然后看到此链接中所讲的Android使用 Java 8 语言功能 中所讲的,
因此猜测是不是使用的build版本太高了(刚开始使用的是24.0.3版本),然后把环境变量中的build-tools\24.0.3改成了build-tools\23.0.3,jdk的版本低于1.8,最后dx命令就成功了。
6.使用aapt命令生成资源包文件(包括res、assets、androidmanifest.xml等)
- 使用aapt命令生成资源包
aapt package -f -m -J gen -S res -I G:\android-sdk-windows\platforms\android-19\android.jar -M AndroidManifest.xml -F bin\HelloWorld.ap_
7.生成未签名的apk
- 使用java命令生成未签名的apk包:
java -cp G:\android-sdk-windows\tools\lib\sdklib.jar com.android.sdklib.build.ApkBuilderMain HelloWorld_unsigner.apk -v -u -z bin\HelloWorld.ap_ -f bin\classes.dex -rf src
sdk更新3.0以后貌似apkbuilder已经被删除了
8.利用JAVASDK提供的keytools工具生成证书文件
- 使用KeyTool命令生成证书:
keytool -genkey -alias HelloWorld.keystore -keyalg RSA -validity 1000 -keystore HelloWorld.keystore -dname “CN=w,OU=w,O=localhost,L=w,ST=w,C=CN” -keypass 123456 -storepass 123456
9.通过jarsigner命令用证书文件对未签名的APK文件进行签名
- 使用jarsigner命令签名:
jarsigner -verbose -keystore HelloWorld.keystore -signedjar HelloWorld_signer.apk HelloWorld_unsigner.apk HelloWorld.keystore
10.安装,启动
- 使用adb命令安装apk:
adb install HelloWorld_signer.apk