手动编译打包Android APP

来源:互联网 发布:手机炒股软件下载 编辑:程序博客网 时间:2024/06/02 20:48
一,准备ant

ant 官网可下载
http://ant.apache.org/
ant 环境配置: 
1。解压ant的包到本地目录。 
2。在环境变量中设置ANT_HOME,值为你的安装目录。 
3。把ANT_HOME/bin加到你系统环境的path。

更多的介绍可以去google相信有很多

二,详细步骤和说明,这里我们要知道一些Android命令。

前提条件已配置好android sdk 环境,所以可以在任意目录下执行android 命令,不然则要切换到 android-sdk\tools目录下 

我这里已经配置好了,所以无论我在什么路径下了。
1.创建一个android项目 
参数说明:
-k /--package 为命名空间(包名)-a /--name 工程名 
-p /--path 项目 -t 为目标平台的版本编号

C:\Documents and Settings\Administrator>android create project -k com.android.Ta
nk -a Tank -t 4 -p F:\tank


列出不同版本平台的对应id编号 android.bat list targets /android list
C:\Documents and Settings\Administrator>android.bat list targets


对已经存在的android工程,我们可以update下(修改平台的版本),这样会自动添加build.xml 等ant 的配置文件
C:\Documents and Settings\Administrator>android update project --name Tank -t 11
-p F:\tank

编译:直接ant 是不会有文件输出的,所以后面一定要带上参数
ant 参数如下:

* debug:带调试用签名的构建
* release:构建应用程序,生成的apk必须签名才可以发布
* install:安装调试构建的包到运行着的模拟器或者设备;
* reinstall
* uninstall

开始执行编译:

E:\MyLiB\Android\AndroidAnt\MyBoardCastReciver>ant debug
Buildfile: E:\MyLiB\Android\AndroidAnt\MyBoardCastReciver\build.xml
[setup] Android SDK Tools Revision 7
[setup] Project Target: Android 2.2
[setup] API level: 8
[setup]
[setup] ------------------
[setup] Resolving library dependencies:
[setup] ------------------
[setup] Ordered libraries:
[setup] ------------------
[setup]
[setup] WARNING: No minSdkVersion value set. Application will install on all
Android versions.
[setup]
[setup] Importing rules file: tools\ant\ant_rules_r3.xml
[javac]****警告:编码 ascii 的不可映射字符********


出现“警告:编码 ascii 的不可映射字符”错误

编译乱码解决办法:
查看输出提示:
[setup] Importing rules file: tools\ant\ant_rules_r3.xml
找到sdk目录下的<sdkpath>\tools\ant\ant_rules_r3.xml
打开找到节点:
<javac encoding="ascii" target="1.5" debug="true" extdirs="" ....>
把ascii改为gbk即可。


启动相应模拟器:emulator -avd avdName
E:\MyLiB\Android\AndroidAnt\Toast>emulator -avd tank

列出已有avd 的列表
E:\MyLiB\Android\AndroidAnt\Toast\bin>adb devices
List of devices attached
emulator-5554 device

安装到指定avd 
E:\MyLiB\Android\AndroidAnt\Toast\bin>adb -s emulator-5554 install Toast-debug.a

pk

Android 命令行手动编译打包过程图 
 


【详细步骤】: 

1使用aapt生成R.java类文件: 
例: 
F:\explorer\android-sdk-windows2.2\tools>f:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -m -J F:\explorer\AndroidByread\gen -S res -I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -M AndroidManifest.xml 
其中  -f -m -J F:\explorer\AndroidByread\gen 代表按覆盖的形式在gen目录下生成带包路径的R.java,-S res指定资源文件 ,-I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar 指定使用的android类,-M AndroidManifest.xml指定程序的配置文件 

aapt Usage: 
 


2使用android SDK提供的aidl.exe把.aidl转成.java文件: 
usage: aidl OPTIONS INPUT [OUTPUT] 
       aidl --preprocess OUTPUT INPUT... 

OPTIONS: 
   -I<DIR>    search path for import statements. 
   -d<FILE>   generate dependency file. 
   -p<FILE>   file created by --preprocess to import. 
   -o<FOLDER> base output folder for generated files. 
   -b         fail when trying to compile a parcelable. 

INPUT: 
   An aidl interface file. 

OUTPUT: 
   The generated interface files. 



3第三步 编译.java类文件生成class文件: 
例:F:\explorer\AndroidByread>javac -encoding GB18030 -target 1.5 -bootclasspath F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -d bin src\com\byread\reader\*.java gen\com\byread\reader\R.java 
 


4使用android SDK提供的dx.bat命令行脚本生成classes.dex文件: 
 
例: 
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\dx.bat --dex --output=F:\explorer\AndroidByread\bin\classes.dex f:\explorer\AndroidByread\bin\classes 
其中classes.dex为生成的目标文件,f:\explorer\AndroidByread\bin\classes为class文件所在目录 

5使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等): 
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -F bin\byreadreader 
将AndroidManifest.xml,res和assets文件夹中的资源文件打包生成byreadreader,用法参见1 

6第六步 生成未签名的apk安装文件: 
apkbuilder  ${output.apk.file} -u -z  ${packagedresource.file} -f  ${dex.file}  -rf  ${source.dir}  -rj  ${libraries.dir} 
 
例: 
F:\explorer\AndroidByread>f:\explorer\android-sdk-windows2.2\tools\apkbuilder.bat f:\explorer\byreadreader.apk –v -u -z f:\explorer\AndroidByread\bin\byreadreader -f f:\explorer\AndroidByread\bin\class.dex -rf F:\explorer\AndroidByread\src 
其中f:\explorer\byreadreader.apk为生成的apk ,-z f:\explorer\AndroidByread\bin\byreadreader为资源包,f:\explorer\AndroidByread\bin\class.dex为类文件包 


7使用jdk的jarsigner对未签名的包进行apk签名: 
use jarsigner 
jarsigner  -keystore ${keystore} -storepass  ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias} 
例如: 
F:\explorer\android-sdk-windows2.2\tools>jarsigner –keystore f:\explorer\eclipse3.5\bbyread.keystore -storepass byread002 -keypass byread002 -signedjar f:\explorer\byread.apk f:\explorer\byreadreader.apk byread 
其中–keystore f:\explorer\eclipse3.5\bbyread.keystore 为密钥文件  -storepass byread002为密钥文件密码 byread 为密钥别名 -keypass byread002为密钥别名密码,-signedjar f:\explorer\byread.apk为签名后生成的apk文件 f:\explorer\byreadreader.apk为未签名的文件。 

原创粉丝点击