本文章麦子学院跟小伙伴们详细的分享一下关于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. JAVA实例,判断是否是瑞年

    题目:用户输入一个年份,返回是否是瑞年. 瑞年规则:能被4整除,并且不能能被100整除,或者能被400整除的年份称之为瑞年. 实例: import java.util.Scanner; public ...

  2. android之datepicker控件用法

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  3. 微信企业号开发--手机删除键keyup事件无效

    $('#input').keyup(function(){}); 其他的按键都是有效的,但是唯独删除按键无效. 以下方法可以解决: $('#input').bind('input propertych ...

  4. Arcgis9.3下栅格数据的坐标转换出错

    Arcgis9.3下栅格数据的坐标转换出错 在win7系统下的arcgis9.3,使用toolbox里raster project工具总是出错,后来打了sp1补丁就没问题了,想不到arcgis还有这样 ...

  5. bitmap size exceeds VM budget

    bitmap size exceeds VM budget we can avoid this error by the following parts:1  its not how much ima ...

  6. java自定义注解注解方法、类、属性等等【转】

    http://anole1982.iteye.com/blog/1450421 http://www.open-open.com/doc/view/51fe76de67214563b20b385320 ...

  7. Android——ImageSwitcher 图片切换

    public class ImageSwitcherActivity extends Activity implements OnClickListener,        ViewFactory { ...

  8. JavaScript对象的创建之构造函数

    通过构造函数的方式创建和基于工厂的创建类似,最大的区别就是函数的名称就是类的名称,按照java的约定,第一个字母大写. 使用构造函数创建对象时,在函数内部是通过this关键字来完成属性的定义. fun ...

  9. jad 反编译 jar包

    1.利用winrar解压缩jar包 或者CMD>jar -xvf test.jar -C classes 2.下载jad,利用jad反编译jar包 CMD>[jad_home]/jad.e ...

  10. 请慢慢移动……由于操作快慢导致的bug

    最近的工作中,遇到一个由于操作快慢不同导致的bug,原因是,操作慢的时候程序接收到了停止操作,继续处理正确,而快速操作的时候程序来不及处理操作停止的动作,导致需要传入的数据值已经改变,程序报错.这种缺 ...