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

    与上一篇文章相比k线图主要的难点 1.tooltip的定制化显示: 当手指触摸手机屏幕上下拖动可能会手指的事件陷入图表无法进行上下拖动 tooltip:{followMouseMove} follow ...

  2. make[1]: *** [pcrecpp.lo] 错误 1

    在安装:pcre-8.30 时,报如下错误: [root@localhost pcre-8.30]# make && make installmake  all-ammake[1]: ...

  3. Python从2.6升级到2.7,使用pip安装module,报错:No Module named pip.log(转载)

    From:http://blog.csdn.net/iefreer/article/details/8086834 python升级后,使用pip安装module,错误: 错误原因:版本升级后,之前的 ...

  4. python 批量重命名文件后缀

    # batch_file_rename.py # Created: 6th August 2012 ''' This will batch rename a group of files in a g ...

  5. JavaScript【面向对象】-静态方法-私有方法-公有方法-特权方法

    JavaScript面向对象是近年来比较火的一个概念了,由于小弟才疏学浅,虽然做过不少的web项目,看了网上很多深奥的资料和教程,还是对他们深奥 的理论一知半解,前段时间看了点书,总算有了自己的理解, ...

  6. 高级Java开发工程师

  7. minicom的安装及使用

    1.下载 sudo apt-get install minicom 2.运行 sudo minicom -s 3.修改端口 首先查看端口:ls /dev/tty...

  8. Mac添加环境变量的三种方法

    法一: sudo vi /etc/paths 来编辑 paths,将环境变量添加到 paths 中. vim 是一个编辑器,另外还有几个,如:Pico,Emacs. Hint:输入环境变量时,不用一个 ...

  9. [Flex] as3xls读取excel,修改保存单表(一)

    经过大神修改过的as3xls支持中文,并可以修改保存单一sheet,保存后原有的excel样式均会消失,目前仅能如此. <?xml version="1.0" encodin ...

  10. SQL递归查询

    WITH cte AS ( AS lvl FROM Department UNION all FROM cte c inner join Department d ON c.Pid = d.Id ) ...