预备工作

1
2
3
4
5
6
7
8
sudo ln -s /Users/fang/Workspace/adt-bundle-mac-x86_64-20140321/sdk/platform-tools/adb /usr/bin/

vi ~/.bash_profile
# 编辑.bash_profile文件,加上下面两个路径
# /Users/fang/Workspace/adt-bundle-mac-x86_64-20140321/sdk/platform-tools
# /Users/fang/Workspace/adt-bundle-mac-x86_64-20140321/sdk/tools

export PATH=/Users/fang/Workspace/adt-bundle-mac-x86_64-20140321/sdk/platform-tools:/Users/fang/Workspace/adt-bundle-mac-x86_64-20140321/sdk/tools:$PATH

上述 3 个路径都必须要替换成真实的路径,好了然后重启终端。

获取 target-id

在终端执行

1
android list targets

输出一些信息,如:

1
2
3
4
5
6
7
id: 4 or "android-19"
Name: Android 4.4.2
Type: Platform
API level: 19
Revision: 3
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : default/armeabi-v7a, default/x86

找到实际需要的 Target 对应的 ID,如在这里 android-19 对应的 ID 为 4

更新工程信息

接着切换到工程目录在终端执行

1
android update project --path ./ --target 4

这里的 4,就是前面获得的 ID。 如果该工程有依赖工程,依赖工程也需要执行这条命令 输出信息

1
2
3
4
5
6
7
8
Updated project.properties
Updated local.properties
No project name specified, using Activity name 'XXX'.
If you wish to change it, edit the first line of build.xml.
Added file ./build.xml
Updated file ./proguard-project.txt
It seems that there are sub-projects. If you want to update them
please use the --subprojects parameter.

XXX 为 build.xml 定义的工程名,可以编辑 build.xml 进行修改

签名

在工程目录下,新建ant.properties文件,内容为

1
2
3
4
key.store=release-key
key.alias=Fang
key.store.password=xxxxxx
key.alias.password=xxxxxx

在终端执行

1
keytool -genkey -alias Fang -keyalg RSA -validity 20000 -keystore release-key

按提示填写相关信息,密码为 xxxxxx,ant.properties 信息一致,与将在工程目录下生成名为 release-key 的 keystore 文件。

打包

1
ant release

至此,以及实现了用 SHELL 命令打包。 为了批量打出多个渠道包,需要用脚本去做这件事情。这方面巧用 sed 命令做一些替换,就可以达到预期的效果