android开发之应用打包签名混淆流程

ant打包apk,对其签名和混淆,防止反编译。

大家好,又见面了,我是全栈君。

项目做的差不多了,要签名,然后混淆防治被反编译,记录下流程
默认各种环境都是配置好了的。

主要分以下几步
1、生成ant打包所需的配置文件
2、生成应用签名的keystore,对apk签名
3、编写混淆文件,混淆代码,防止反编译

第一步,生成ant打包的配置文件
在项目根目录下执行指令:android update project path .
会自动生成三个目录: build.xml,local.properties,proguard-project.txt
还有一个要自己建的ant.properties

一共四个文件
build.xml:Ant的默认生成文件,描述了打包的任务和流程,其语法参考
点击打开链接

local.properties:包含本地的环境变量
sdk.dir=
/Users/xx
/eclipse/
adt
-bundle-
mac
-x86_64-20131030/
sdk

proguard-project.txt:混淆文件,对代码进行混淆,语法参考点击打开链接

ant.properties:签名文件的相关配置。

这一步完成就可以用ant打包应用了,进入到应用根目录,运行ant release,就会在bin目录下生成打包好的apk,只是都是没有签名的,这时候还没有配置签名。

第二步、生成keystore,配置签名
命令:keytool -genkey -keystore jason0539.keystore -keyalg RSA -validity 10000 -alias jason0539.keystore
输入密钥库口令: *********
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  blog.csdn.net/jason0539
您的组织单位名称是什么?
  [Unknown]:  jason0539
您的组织名称是什么?
  [Unknown]:  jason0539
您所在的城市或区域名称是什么?
  [Unknown]:  秦皇岛
您所在的省/市/自治区名称是什么?
  [Unknown]:  河北
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=huodianditu.bmob.cn, OU=jason0539, O=jason0539, L=秦皇岛, ST=河北, C=CN是否正确?
  [否]:  y

输入 <jason0539.keysotre> 的密钥口令

(如果和密钥库口令相同, 按回车):  
回车之后就会在目录下生成jason0539.keystore文件,就是用来对应用签名的文件了。

命令参数说明: 

-genkey    产生证书文件 

-keystore  指定密钥库的.keystore文件中 
-keyalg     指定密钥的算法 
-validity    为证书有效天数,这里我们写的是10000天。 
-alias       产生别名 

在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,切忌需要记下来后面还要用,
注意:

1、CN(Common Name – 名字与姓氏):其实这个“名字与姓氏”应该是域名,比如说localhost或是blog.devep.net之类的。输成了姓名,和真正运行的时候域名不符,会出问题。浏览器访问时,弹出一个对话框,提示“安全证书上的名称无效,或者与站点名称不匹配”,用户选择继续还是可以浏览网页。但是用http client写程序访问的时候,会抛出类似于“javax.servlet.ServletException: HTTPS hostname wrong: should be ”的异常。


2、在用keytool生成数字证书时必须保证:-keystore androidapp.keystore -alias androidapp.keystore 两者名称必须相同。否则下一步签名时会出现错误:jarsigner: 找不到 androidapp.keystore 的证书链。androidapp.keystore 必须引用包含专用密钥和相应的公共密钥证书链的有效密钥库密钥条目。

第三步、接下来配置ant.properties,使用keystore对apk签名
在ant.properties文件中,添加如下内容:
key.store=jason0539.keystore
key.alias=jason0539.keystore
key.store.password=***
key.alias.password=***
android.library=
false

其中:
keystore为私钥库文件。
key为签名需要使用的私钥。
key.store.password为私钥库的密码。
key.alias.password为私钥的密码。

这一步完成,然后命令行直接运行ant release就会打包成功了,并且是签名过的,在bin目录下。

这一步遇到的问题:
第一次把别名的keystore输成了keystroe,结果一直提示build.xml:1151: Signing key jason0539.keystore not found
后来把这个删掉,想重新生成一个新的keystore,结果提示android Keystore was tampered with, or password was incorrect: Password verification
后来意识到可能跟两个keystore的名字相同有关,就又删掉,重新生成一个,名字不叫jason0539.keystore了,改为jason.keystore,这下就成功了。

第四步、混淆文件

在project.properties里面有一行被注释掉的代码如下

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

把这行注释取消,然后根据自己的项目,去编写proguard-project.txt这个文件作混淆就可以了。
具体的混淆语法可参考
点击打开链接
这一步主要注意的是,如果项目中用了第三方的jar包,比如百度地图的,要注意保持里面一些类不被混淆,否则会crash,具体保持哪些类,在百度开放平台会有说明,去对应jar包的官网看就好了。
如果用了很多第三方sdk,混淆后可能启动应用就会crash,
建议根据log找到对应出问题的sdk,然后去对应开放平台查看混淆注意事项,把需要保持的类保护好。以此类推,把所有第三方sdk配置好就没问题了。

更多参考


作者:jason0539

博客:http://blog.csdn.net/jason0539(转载请说明出处)

扫码关注微信公众号,看点不一样的东西

android开发之应用打包签名混淆流程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121316.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java线上问题排查神器Arthas快速上手与原理浅谈

    Java线上问题排查神器Arthas快速上手与原理浅谈前言当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题:程序在稳定运行了,可是实现的功能点了没反应。为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题?想到可能出现问题的地方,却发现那里没打日志,没法在运行中看到问题,只能加了日志输出重新打包——部署——上线程序功能正常了,可是为啥响应时间这么慢,在哪里出现了问题?程序不但稳定运行,而且功能完美,但…

    2025年5月24日
    1
  • Database(Mysql)发版控制二

    Database(Mysql)发版控制二

    2022年1月27日
    115
  • dpkg 命令详解[通俗易懂]

    dpkg 命令详解[通俗易懂]名词解释    “dpkg”是“DebianPackager”的简写。为“Debian”专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自“Debian”的“Linux”发行版都会使用“dpkg”,例如“Ubuntu”、“Knoppix”等。名词由来    dpkg是Debian软件包管理器的基础,它由伊恩·默多克于1993年创

    2022年5月21日
    87
  • vbs整人代码,表白+提醒 两段代码就OK

    vbs整人代码,表白+提醒 两段代码就OK在沉闷的工作环境下,有时玩玩整人代码也不错,整人代码一般使用VBS脚本来实现,简单的两行代码就可以实现表白+提醒了,不过大家也要警惕VBS脚本的危险性,下面小编分享的只是整人简单脚本,大家可以随便玩!并不损坏电脑文件。 先来第一段弹窗代码:MSGBOX“内容A”+CHR(13)+“内容B”+CHR(13)+“内容C”,1,“标题”将它们复制到文本中,将后缀改成“.VBS”就可以双…

    2022年5月7日
    126
  • Ubuntu 12.04下SimpleScalar_PISA 的安装

    Ubuntu 12.04下SimpleScalar_PISA 的安装(1)首先准备需要的安装文件,如果没有可到以下地址下载:simpletools‐2v0.tgz:http://www.simplescalar.com/tools.htmlsimplesim‐3v0d‐with‐cheetah.tar.gz:http://www.ict.kth.se/courses/IS2202/softwaresimpleutils‐990811.tar.

    2022年6月5日
    35
  • vue中的ajax_创建vue实例

    vue中的ajax_创建vue实例AJAXAJAX指的是异步JavaScript和XML(AsynchronousJavaScriptandXML)。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用AJAX)如果需要更新内容,必需重载整个网页面。XMLHtt…

    2022年9月30日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号