banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

Android开发之使用Ant命令行编译和APK签名

最近在做 Android 开发时,需要引用第三方的代码进项目,一般情况下,直接在 Eclipse 下设置需要导入的代码的编译输出为 library 即可,但是很多代码在 Eclipse 下编译会出现很多莫名其妙的错误。因而只能使用命令行方式对代码进行编译。具体方法如下:

1. 安装编译用的 Java,安装 Android Platform-tools,安装 Ant,设置好各种环境变量。部分 Linux 下 Ant 已经默认集成,Windows 下需要自行安装。 2. 使用 Android 工具更新代码的编译配置。 3. 使用 Ant 工具进行编译,可编译 Debug 版和 Release 版本。 4. 生成代码签名用的私钥,并对 APK 进行签名。 5. 对 APK 文件进行对齐,对大文件 APK 有不错的效果。

以下是参考 Bash 代码,可自己需要更改,执行时,sudo bash XXX.sh 即可

# 设置 Java Home
JAVA_HOME = "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home"

设置 android Home#

ANDROID_HOME="~/android-sdk-macosx"

设置路径#

PATH = "$ANDROID_HOME/tools:$JAVA_HOME/bin:$PATH"

更新当前项目#

android update project --path .
#android update project --path ./Library/lib1
#android update project --path ./Library/lib2

删除密钥库#

rm -f product.keystore

生成密钥库#

keytool -genkey -alias product.keystore -keyalg RSA -validity 40000 \
-keystore product.keystore -storepass password -keypass password \
-dname "CN=Product OU=Android Team O=Organization L=Hongkong ST=Hongkong C=China"

清理#

ant clean

删除 ant.properties#

rm -f ant.properties

生成 ant.properties#

echo "key.store=product.keystore" > ant.properties
echo "key.alias=product.keystore" >> ant.properties

构建 apk#

ant release

签名 APK#

jarsigner -verbose -keystore product.keystore -signedjar \#

bin/product_signed.apk bin/product-release-unsigned.apk product.keystore#

对齐 apk#

zipalign -v 4 bin/product_signed.apk bin/product_final.apk#

说明: 更新 Android 的 ant 编译配置,如果代码的结构发生变更,请执行,如果代码中包含引用的第三方库代码,需要分别对这些代码进行更新。

# 更新当前项目
android update project --path .
#android update project --path ./Library/lib1
#android update project --path ./Library/lib2

生成签名用的 Keystore 文件,几个参数的说明 -genkey 生成秘钥证书 -alias 别名 -keyalg 秘钥的计算算法 -validity 有效期 -keystore 秘钥库文件路径 -storepass 秘钥库密码 -keypass 秘钥证书密码 -dname 发行者信息 CN= 发行者姓名 (个人姓名或产品名) OU= 组织单元名 (团队名) O= 组织机构名 (公司名) L= 城市 / 地区 ST= 州 / 省 C= 国家代码

# 生成密钥库
keytool -genkey -alias product.keystore -keyalg RSA -validity 40000 \
-keystore product.keystore -storepass password -keypass password \
-dname "CN=Product OU=Android Team O=Organization L=Hongkong ST=Hongkong C=cn"

生成 ant 自动编译用的 ant.properties 文件,设置 key.store 和 key.alias 两个变量后,ant release 时会自动对生成的 APK 签名和对齐

echo "key.store=product.keystore" > ant.properties
echo "key.alias=product.keystore" >> ant.properties

手动对代码签名,几个参数的说明 -verbose 显示输出 -keystore keystore 别名 -signedjar 签名 apk 文件,第一个参数为目标文件,第二个为未签名 apk

# 签名 APK
jarsigner -verbose -keystore product.keystore -signedjar bin/product_signed.apk bin/product-release-unsigned.apk product.keystore

手动对 APK 进行对齐

# 对齐 apk
zipalign -v 4 bin/product_signed.apk bin/product_final.apk

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。