本文章麦子学院跟小伙伴们详细的分享一下关于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即可

代码如下

# Setup Java Home

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

# Setup android Home

ANDROID_HOME="~/android-sdk-macosx"

# Setup path

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

# Update current project

android update project --path .

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

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

# Remove keystore

rm -f product.keystore

# Make keystone

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"

# Clean

ant clean

# Remove ant.properties

rm -f ant.properties

# Make ant.properties

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

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

# Build apk

ant release

# Sign APK

# jarsigner -verbose -keystore product.keystore -signedjar

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

# Zip align apk

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

说明:

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

代码如下

# Update current project

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= 国家代码

代码如下

# Make keystone

keytool -genkey -alias product.keystore -keyalg RSA -validity 40000

-keystore product.keystore -storepass password -keypass password

-www.maiziedu.com -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

代码如下

# Sign APK

jarsigner -verbose -keystore product.keystore -signedjar bin/product_signed.apk bin/product-release-unsigned.apk product.keystore

手动对APK进行对齐

代码如下

# Zip align apk

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

Android开发中Ant命令编译和APK签名的一些心得的更多相关文章

  1. Android开发中adb命令的常用方法

    Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于 ...

  2. Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包

    官方文档:https://developer.Android.com/tools/publishing/app-signing.html 1. 默认为debug mode,使用的签名文件在: $HOM ...

  3. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  4. Android开发学习总结(六)—— APK反编译

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  5. Android开发学习总结(六)—— APK反编译(转)

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  6. 关于Android开发中的证书和密钥等问题

    关于Android开发中的证书和密钥等问题 引言 除了Android发布应用签名时需要用到证书外,在进行google Map Api开发和Facebook SDK API开发等时都需要申请API Ke ...

  7. 如何在Android开发中让你的代码更有效率

    最近看了Google IO 2012年的一个视频,名字叫做Doing More With Less: Being a Good Android Citizen,主要是讲如何用少少的几句代码来改善And ...

  8. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

  9. Android 开发中,as或者idea对gradle的使用

    原文:Android 开发中,as或者idea对gradle的使用 本文属于转载收藏,侵删,出处:私人博客 ---------------------------------------------- ...

随机推荐

  1. JadClipse eclipse反编译插件

    A.下载JadClipse,http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download,注意选择与eclipse版本一致的版本 ...

  2. MySQL利用Navicat导出数据字典

    这里算是一个小技巧 利用mysql的information_schema中的COLUMNS表 和navicat中的导出功能实现快速导出数据字典 CREATE TEMPORARYTABLE `COLUM ...

  3. Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义(转载)

    From:http://dadekey.blog.51cto.com/107327/119938 我们先写一个简单的脚本,执行以后再解释各个变量的意义   # touch variable # vi ...

  4. 使用系统UITabbarItem自定义图片显示原本颜色和自定义文字颜色

    ...... ThirdViewController *thirdVC = [[ThirdViewControlleralloc]initWithTitle:@"搜索信息"]; / ...

  5. UIView阴影和圆角的关系

    UIView阴影和圆角的关系   UIView 的 clipsToBounds属性和CALayer的setMasksToBounds属性表达的意思是一致的. 取值:BOOL(YES/NO) 作用:决定 ...

  6. centos6.4搭建基于ftp的yum源让本地局域网服务器使用

    1. 挂载centos6.4 DVD镜像[root@centos64 ~]# mount /dev/cdrom /mnt 2. 安装vsftp软件,启动vsftpd服务,拷贝centos6.4 DVD ...

  7. [Java] java中的异常处理-续

    异常处理器,它由try, catch, finally以及随后的程序块组成.finally不是必须的. catch的括号有一个参数,代表所要捕捉的异常的类型.catch会捕捉相应的类型及其衍生类.tr ...

  8. spring-aop示例

    具体案例放在github上,主要是jar包在上面 https://github.com/guoyansi/spring-aop-example knights.xml <?xml version ...

  9. Python之几个技巧特点

    今天偶然看到一篇文章<你可能不知道的30个Python语言的提点技巧>,虽然做python有几年了,但中间还是好多不知道或没想到,特在这里做下摘抄. 原文地址: http://soft.c ...

  10. cocos2d-x 在xcode IOS模拟器中 开启IOS多点触控

    在初始化代码中,开启当前层接受触摸 this->setTouchEnabled(true); 在AppController.mm文件中,设置开启多点触控 在- (BOOL)application ...