Android实用图文教程之代码混淆、第三方平台加固加密、渠道分发
作者:hebedich 发布时间:2022-06-23 18:12:44
第一步:代码混淆(注意引入的第三方jar)
在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。
新建一个项目的时候,会自动生成project.properties和proguard-project.txt文件,无需自己新建,如果你的项目无法自动生成,那么你就要检查一下你的ADT版本了
如果需要对项目进行全局混码,只需要进行一步操作:
将project.properties的中
“#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉就可以了。
如果有一些代码不能被混淆,比如需要加入了so文件,需要调用里面的方法,那么调用JNI访问so文件的方法就不能被混码。在导出的时候,可能不会报错。但是在手机上运行的时候,需要调用so文件的时候,就会报某某方法无法找到。这个时候就需要用到proguard-project.txt。
在新版本的代码混淆,已经变得很智能,不过引入的第三方jar还是需要手动编写混淆规则
案例:引入了BaiduLBS_Android.jar,android-support-v4.jar两个包
proguard-project.txt脚本编写规则:
#工程中含有第三方jar包
-libraryjars libs/android-support-v4.jar
-libraryjars libs/BaiduLBS_Android.jar
#项目里面包含的包也不能混淆
-keep class com.baidu.** {*;}
-dontwarn com.baidu.**
-keep class vi.com.gdi.bgl.android.java.** {*;}
-dontwarn vi.com.gdi.bgl.android.java.**
-keep class android.** {*;}
-dontwarn android.**
第二步:导出apk(部分第三方加密平台需要导出签名的apk)
请根据第三方加密平台的要求导出apk,带签名的apk导出速度稍慢。右击项目选择 Android Tools再根据需求导出
第三步:第三方平台加固(生成多渠道包)
现在比较流行的加密平台有:
http://www.bangcle.com
http://***
http://dev.360.cn/protect/welcome
如果你的项目里面包含了百度统计、友盟统计等功能,那么肯定需要了解不同应用商店的下载量,所以生成渠道包就很重要。这些平台都可以帮助生成多个去到apk
下图是使用“爱加密”平台,项目集成了友盟统计
加固需要花费十几分钟的时候,加固完成后就能下载到不同渠道的包,但是没有签名,无法安装
第四步:apk重新签名
加固后的apk是没有签名的,没有签名的apk是无法安装到手机里面的,需要使用签名工具重新签名
可以使用adt自带的,但是过于麻烦,建议使用第三方的签名工具
比如:爱加密提供的http://***/apply/Sign


猜你喜欢
- 前言列表是移动应用中用得最多的组件了,我们也会经常对列表元素进行增加或删除操作,最简单的方法是列表数据变动后,直接 setStat
- 在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较
- 这篇文章主要介绍了java通过Jsoup爬取网页过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- SpringBoot @NotBlank错误java 验证出现如下错误:javax.validation.UnexpectedTypeExc
- 摘要:介绍使用Java Stream流排序器Comparator对List集合进行多字段排序的方法,包括复杂实体对象多字段升降序排序方法。综
- 本文实例讲述了Android编程实现定时发短信功能。分享给大家供大家参考,具体如下:第一,要实现发短信的功能,必须要用到android系统中
- 一:背景1.讲故事前段时间分析了一个dump,一顿操作之后,我希望用外力来阻止程序内部对某一个com组件的调用,对,就是想借助外力实现,如果
- 苹果上的UI基本上都是这个效果,然而Android机上的顶部状态栏总是和app的主题颜色不搭。还好如今的api19以上的版本,我们也能做出这
- 本文实例讲述了C#数据结构之单链表(LinkList)实现方法。分享给大家供大家参考,具体如下:这里我们来看下“单链表(LinkList)”
- 前言在开发 Flutter 应用程序时,我们需要有一个组件来管理全局设置,包括主题、导航和路由。这就是 MaterialApp 的用途。作为
- 方式一 通过Map.keySet使用iterator遍历@Testpublic void testHashMap1() { Map<I
- 1.1 概述分布式系统:分布式系统指由很多台计算机组成的一个整体!这个整体一致对外,并且处理同一请求!系统对内透明,对外不透明!内部的每台计
- 支付宝的接入相对比较简单,看看支付宝官网的文档基本都能搞定,但是切记一点让你们的后台也要搞清楚支付宝的流程,重中之重。1、注意事项 开发前一
- 本文实例为大家分享了C#实现QQ聊天窗口的具体代码,供大家参考,具体内容如下效果图:using System;using System.Co
- 简介本文用示例介绍使用MyBatis-Plus进行多表查询的方法,包括静态查询和动态查询。代码controllerpackage com.e
- 前言最近有一项需求,要定时判断任务执行条件是否满足并触发 Spark 任务,平时编写 Spark 任务时都是封装为一个 Jar 包,然后采用
- 需求是在我按下按钮时,该变按钮颜色,使用户感觉到自己按了按钮,当松开的时候,变回原来的颜色。正常时:按下时:有人说,直接监听按钮的按下事件不
- 本文实例分析了C#反射内存的处理。分享给大家供大家参考。具体分析如下:这段时间由于公司的项目的要求,我利用c#的反射的机制做了一个客户端框架
- @ConfigurationProperties注入创建一个新的模板此过程就不在这介绍了,在我SpringBoot专栏里有详细过程。⭐⭐⭐注
- 这篇文章主要介绍了java内存泄漏与内存溢出关系解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友