命令行开发、编译、打包Android应用程序
2016-02-17 15:37
399 查看
Android SDK提供了一系列命令行工具,用来进行Android应用的开发、调试、打包等工作!Eclipse能够进行Android应用开发的相关工作,也是调用了这些工具而已.
只有掌握了命令下的工作方式,工作起来才会更加的得心应手.下面就抛开Eclipse集成开发工具,徒手走一遍Android开发、编译、打包的流程!
注:本文只作参考之用,因为LBSDemo工程中有本人自己加入的代码,有第三方jar包,so文件等等!故一步一步按照本文操作是行不通的!
1:创建Android应用程序
Android SDK提供了一个android.bat批处理工具,它可以用来处理以下工作,这里只介绍它的子命令create project来进行程序的创建.
--create project子命令的用法如下:
了解了相关命令及其用法,现在就可以用之来创建应用程序:在D:\Android工作目录下创建LBSDemo程序
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210507625.png)
命令自动创建了如下内容:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201092229279259.png)
2:编译Android应用程序
A:生成R.java文件
Android程序代码中会大量地引用各类资源文件,这些资源文件不是通过手动进行引用的,AndroidSDK提供了一个R.java类来进行资源的管理,方便程序员对资源文件的引用及管理,所以如果要让程序编译通过,首先就需要生成R.java类。
编译R.java类需要用到AndroidSDK提供的aapt工具,aapt参数众多,以下是主要参数:
aapt编译R.java文件具体如下:
需要进入LBSDemo应用程序目录,新建一个gen目录,没有gen目录,命令将会出现找不到文件的错误!
命令成功执行后将会在gen目录下生成成包结构的目录树,及R.java文件!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210515640.png)
参数说明
B:根据.aidl定义文件生成java文件
将.aidl文件生成.java文件需要用到AndroidSDK自带的aidl工具,此工具具体参数如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210511986.png)
C:用JAVASDK提供的javac命令工具将.java源文件编译为.class文件
javac命令用法如下:
具体如下[因为需要编译的.java文件分布在不同的文件夹下,故写了多个*.java文件路径.引用了第三方Jar包,故要将jar包指定入classpath]:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/20120110221053982.png)
D:使用Android SDK提供的dx.bat命令行脚本生成classes.dex文件
将工程bin目录下的class文件编译成classes.dex,Android虚拟机只能执行dex文件!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/20120110221053949.png)
命令生成的.dex文件如下
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102104161166.png)
E:使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等):
aapt用法参考上面!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210543358.png)
命令生成的.ap_文件如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102104279421.png)
F:利用AndroidSDK提供的apkbuilder工具生成未签名的APK文件
重要参数如下:
注:1,如果需要将so文件打包进apk,一定要加上-nf参数
2,如果第三方jar包里含有图片资源,一定要加上-rj参数,不然jar包里资源文件解不出来,程序会因为无法引用资源而报错!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210551067.png)
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210568983.png)
命令生成的.apk文件
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/20120110210452924.png)
H:利用JAVASDK提供的keytools工具生成证书文件!
上面只是生成了一个没有证书的apk文件,Android是不会去安装一个没有数字证书签名的apk包的,所以需要安装apk的话,必须用一个数字证书对其签名后,才可!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210577455.png)
此处输入命令后,此命令会与用户产生交互,如果你不想产生交互的情况,那么就要提前把命令想问的都告诉它!
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
命令生成的.keystore文件如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102105032309.png)
I:最后一步,通过jarsigner命令用证书文件对未签名的APK文件进行签名
重要参数如下:
具体用法如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210581260.png)
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210591128.png)
大功告成,终于完成了!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102105287716.png)
总结:
通过对这些命令的运用,你才能清楚地知道程序开发、编译、打包的每一个细节、才知道Eclipse是如何工作的、就算换了一个集成开发工具、也能很快得心应手!甚至能开发一套与Eclipse里打包一样功能的工具呢!下面的就是本人对上面命令的一个总结!如果公司需要,你也可以动手写一个!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102211001585.png)
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102211023372.png)
只有掌握了命令下的工作方式,工作起来才会更加的得心应手.下面就抛开Eclipse集成开发工具,徒手走一遍Android开发、编译、打包的流程!
注:本文只作参考之用,因为LBSDemo工程中有本人自己加入的代码,有第三方jar包,so文件等等!故一步一步按照本文操作是行不通的!
1:创建Android应用程序
Android SDK提供了一个android.bat批处理工具,它可以用来处理以下工作,这里只介绍它的子命令create project来进行程序的创建.
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210507625.png)
命令自动创建了如下内容:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201092229279259.png)
2:编译Android应用程序
A:生成R.java文件
Android程序代码中会大量地引用各类资源文件,这些资源文件不是通过手动进行引用的,AndroidSDK提供了一个R.java类来进行资源的管理,方便程序员对资源文件的引用及管理,所以如果要让程序编译通过,首先就需要生成R.java类。
编译R.java类需要用到AndroidSDK提供的aapt工具,aapt参数众多,以下是主要参数:
需要进入LBSDemo应用程序目录,新建一个gen目录,没有gen目录,命令将会出现找不到文件的错误!
命令成功执行后将会在gen目录下生成成包结构的目录树,及R.java文件!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210515640.png)
参数说明
将.aidl文件生成.java文件需要用到AndroidSDK自带的aidl工具,此工具具体参数如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210511986.png)
C:用JAVASDK提供的javac命令工具将.java源文件编译为.class文件
javac命令用法如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/20120110221053982.png)
D:使用Android SDK提供的dx.bat命令行脚本生成classes.dex文件
将工程bin目录下的class文件编译成classes.dex,Android虚拟机只能执行dex文件!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/20120110221053949.png)
命令生成的.dex文件如下
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102104161166.png)
E:使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等):
aapt用法参考上面!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210543358.png)
命令生成的.ap_文件如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102104279421.png)
F:利用AndroidSDK提供的apkbuilder工具生成未签名的APK文件
重要参数如下:
2,如果第三方jar包里含有图片资源,一定要加上-rj参数,不然jar包里资源文件解不出来,程序会因为无法引用资源而报错!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210551067.png)
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210568983.png)
命令生成的.apk文件
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/20120110210452924.png)
H:利用JAVASDK提供的keytools工具生成证书文件!
上面只是生成了一个没有证书的apk文件,Android是不会去安装一个没有数字证书签名的apk包的,所以需要安装apk的话,必须用一个数字证书对其签名后,才可!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210577455.png)
此处输入命令后,此命令会与用户产生交互,如果你不想产生交互的情况,那么就要提前把命令想问的都告诉它!
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
命令生成的.keystore文件如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102105032309.png)
I:最后一步,通过jarsigner命令用证书文件对未签名的APK文件进行签名
重要参数如下:
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210581260.png)
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102210591128.png)
大功告成,终于完成了!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102105287716.png)
总结:
通过对这些命令的运用,你才能清楚地知道程序开发、编译、打包的每一个细节、才知道Eclipse是如何工作的、就算换了一个集成开发工具、也能很快得心应手!甚至能开发一套与Eclipse里打包一样功能的工具呢!下面的就是本人对上面命令的一个总结!如果公司需要,你也可以动手写一个!
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102211001585.png)
![](http://images.cnblogs.com/cnblogs_com/wujd/201201/201201102211023372.png)
相关文章推荐
- Android TouchEvent事件传递机制
- Android单元测试中insert数据入DB异常
- android 的onCreate 方法
- 自己个人总结,Android Studio 中SVN的使用步骤
- Android线程池(二)
- Android实现登录界面键盘不遮挡登录按钮
- Android中Handler的简析
- Android 使用PorterDuff实现刮刮卡效果
- android 电话状态的监听(来电和去电)
- Android开发笔记(六十五)多样的菜单
- Android 签名验证机制
- android studio Error:Cause: peer not authenticated的解决方案
- Android组件之间 数据传递数据
- Kotlin 1.0 Released: Pragmatic Language for JVM and Android
- 搜索关键字变红,指定字段变色 一行代码简单集成 搜索关键字变红,Android字体变红,指定字段变红
- Android线程池(一)
- Android内存优化一
- 在ubuntu上搭建git-server及android studio使用git
- Android中SQLite应用详解
- Android未来前景甚优扣丁春季开班收获秋季