二、基本使用
2.1、使用android create创建项目
参数说明:
-k /--package 为命名空间(包名)
-a /--name 工程名
-p /--path 项目
-t 为目标平台的版本编号
实例1
C:\Users\hubin5\Desktop\temp\0503>android create project -k com.android.Tank -a Tank -t 4 -p G:\projects\tank
Error: Project folder ‘G:\projects\tank‘ is not empty. Please consider using ‘android.bat update‘ instead.
Updated file G:\projects\tank\src\com\android\Tank\Tank.java
Updated file G:\projects\tank\res\values\strings.xml
Updated file G:\projects\tank\res\layout\main.xml
Updated file G:\projects\tank\AndroidManifest.xml
Updated file G:\projects\tank\build.xml
Updated file G:\projects\tank\proguard-project.txt
可以通过android-sdk\tools下的android.bat列出不同版本平台的对应id编号
命令1::android.bat list targets
命令2:android list
2.2、android update 更新现有项目
对已经存在的android工程,我们可以update下(修改平台的版本),这样会自动添加build.xml 等ant 的配置文件
示例1
C:\Documents and Settings\Administrator>android update project --name Tank -t 11 -p F:\tank
示例2
G:\temp>android update project --name Test -t 15 -p D:\workspace\test
Updated project.properties
Updated local.properties
Updated file D:\workspace\test\build.xml
D:\workspace\test>ant release
Buildfile: D:\workspace\test\build.xml
在使用ant release或ant debug打apk包时,默认使用当前目录的build.xml配置来进行打包。
当然我们可以使用-buildfile选项来制定build.xml配置文件。
实例3
call ant release -buildfile test\build.xml
实例4
文件1
config.bat
set out_dir=.\out
set out_file_name=Appstore5_Phone
set NO=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set t=%Time%
if "%t:~0,1%" ==" " (
set t=0%t:~1%
)
set NO=%Date:~0,4%%Date:~5,2%%Date:~8,2%%t:~0,2%%t:~3,2%%t:~6,2%
set out_file_name=%out_file_name%_%NO%.apk
文件2
build.bat
call config.bat
pushd dependency
call build.bat
popd
call android update project -p Appstore5_Utils -t android-8
call ant release -buildfile Appstore5_Utils\build.xml
call android update project -p Appstore5_Download_Install -t android-8
call ant release -buildfile Appstore5_Download_Install\build.xml
call android update project -p Appstore5_Common -t android-8
call ant release -buildfile Appstore5_Common\build.xml
call android update project -p Appstore5_Phone -t android-9
call ant release -buildfile Appstore5_Phone\build.xml
if not exist %out_dir%\ mkdir %out_dir%
if exist %out_dir%\%out_file_name% del %out_dir%\%out_file_name% /q
copy /y Appstore5_Phone\bin\Loft-release.apk %out_dir%\%out_file_name%
pause
文件3
dependency\build.bat
call android update project -p lepay_Res -t android-8
call ant release -buildfile lepay_Res\build.xml
call android update project -p lepush_Res -t android-8
call ant release -buildfile lepush_Res\build.xml
call android update project -p leuser_Res -t android-8
call ant release -buildfile leuser_Res\build.xml
三、签名
只要在Android工程的project.properties进行示例3类似的配置,在使用Ant打包时,Ant就会对生成的apk文件进行签名.
示例3
文件project.properties中
has.keystore=true
has.password=true
key.store=debug.keystore
key.alias=androiddebugkey
key.store.password=android
key.alias.password=android
这里的数字签名文件debug.keystore和project.properties处于同一目录。
四、混淆打包
五、引用第三方库
对于引用第三方库,可以直接把jar文件放在Android工程的libs目录中。
这样ant就能找到它们了。
还有一种就是在把${sdk.dir}/tools/ant/build.xml拷贝到的Android工程目录做如下修改project.all.classes.path来添加jar文件就行了:
<property name="jar.libs2.dir" value="./../libs" />
<property name="jar.libs2.absolute.dir" location="${jar.libs2.dir}" />
<path id="libs2.jars.path">
<fileset dir="${jar.libs2.absolute.dir}">
<include name="*.jar" />
</fileset>
</path>
<path id="project.all.classes.path">
<path refid="project.all.classes.path" />
<path refid="libs2.jars.path" />
</path>
对于只是编译,不需求打入包的可以采用这种方式。
第一处
<property name="jar.libs.dir" value="libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<property name="jar.libs2.dir" value="./../libs" />
<property name="jar.libs2.absolute.dir" location="${jar.libs2.dir}" />
<path id="libs2.classpath">
<path path="${jar.libs2.absolute.dir}/alipay_msp.jar" />
<path path="${jar.libs2.absolute.dir}/Android_Location_V1.0.5.jar" />
<path path="${jar.libs2.absolute.dir}/Android_Map_2.1.4.jar" />
<path path="${jar.libs2.absolute.dir}/Android_Services_2.1.4.jar" />
<path path="${jar.libs2.absolute.dir}/android-async-http-1.4.4.jar" />
</path>
第二处
<path id="project.javac.classpath">
<path refid="project.all.jars.path" />
<path refid="tested.project.classpath" />
<path path="${java.compiler.classpath}" />
<path refid="libs2.classpath" />
</path>
<javac encoding="${java.encoding}"
source="${java.source}" target="${java.target}"
debug="true" extdirs="" includeantruntime="false"
destdir="${out.classes.absolute.dir}"
bootclasspathref="project.target.class.path"
verbose="${verbose}"
classpathref="project.javac.classpath"
fork="${need.javac.fork}">
<src path="${source.absolute.dir}" />
<src path="${gen.absolute.dir}" />
<compilerarg line="${java.compilerargs}" />
</javac>
六、其他