本文章麦子学院跟小伙伴们详细的分享一下关于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. git 常用命令 (git did not exit cleanly)

    Git常用操作命令收集: git clonegit git remote -v git remote add [name] [url] git remote rm [name] git remote ...

  2. 4个理由告诉你Java为何排行第一

    Java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式.忽略它的年龄不看,Java依然排行第一.它的实用性.性能和向后兼容性都彰显其价值所在.2016年伊始,标志着我们已经走过了 ...

  3. 安装程序无法复制文件 convlog.exe的解决方法

    在安装的时候出现一个错误提示“安装程序无法复制文件CONVLOG.EX_”,上网找了很多资料,都说是因为版本问题,考虑到自己的服务器安装的是2003 SP1,后来打了补丁到SP2的,也就认为是版本问题 ...

  4. ArcGIS上根据经纬度求地球表面两点间距离的实现

    ArcGIS上根据经纬度求地球表面两点间距离的实现 以米为单位..Net2.0,C#实现.        public static double DistanceOfTwoPoints(double ...

  5. 启用 CORS 来解决这个问题(ajax跨域请求)

    <input type="file" name="btn_Upload" value="上传" id="btn_Upload ...

  6. java——操作文件

    Java文件操作,共实现了文件复制(单个文件和多层目录文件),文件移动(单个文件和多层目录文件),文件删除(单个文件和多层目录文件),文件压缩 (单个文件),文件解压(单个文件),文件分割(将一个大文 ...

  7. RDD缓存策略

    Spark支持将数据集放置在集群的缓存中,以便于数据重用. Spark缓存策略对应的类: class StorageLevel private( private var useDisk_ : Bool ...

  8. ELK部署

    一.logstash 版本:2.4.0 要求:Java 7 + 下载:https://download.elastic.co/logstash/logstash/logstash-2.4.0.tar. ...

  9. canvas-7globleCompositeOperation2.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 【Unity Shaders】学习笔记——SurfaceShader(一)认识结构

    [Unity Shaders]学习笔记——SurfaceShader(一)认识结构 转载请注明出处:http://www.cnblogs.com/-867259206/p/5595747.html 写 ...