首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android-Proguard(混淆)

.*  # 一颗星只保持本包的类名(不包含内容) -keep class com.xzt.demotwo.** # 二颗星表示保持本包和子包下的类名(不包含内容) # 只保持本包的类名和内容 -keep...(否则反射可能出现问题); 3,AndroidMainfest中的类不混淆,所以四大组件和Application的子类和Framework层下所有的类默认不会进行混淆。...,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象; 5,使用第三方开源库或者引用其他第三方的SDK包时,如果有特别要求,也需要在混淆文件中加入对应的混淆规则; 6,有用到WebView的...JS调用也需要保证写的接口方法不混淆,原因和第一条一样; 7,Parcelable的子类和Creator静态成员变量不混淆,否则会产生Android.os.BadParcelableException异常...; -keepclass*implementsAndroid.os.Parcelable{# 保持Parcelable不被混淆          publicstaticfinalAndroid.os.Parcelable

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 代码混淆语法讲解及常用模板

    { public static final android.os.Parcelable$Creator CREATOR; } 表示不混淆 Parcelable 的实现类中的 CREATOR,我们知道序列化与反序列化的过程都需要...,这样 Test 类中的 test 方法都不会被混淆,不管该方法含有什么类型的参数和该方法的返回类型。...*都是无法匹配的,因为*无法匹配包名中的分隔符,正确的匹配方式是com.exmaple.*.*,或者com.exmaple.test.*,这些都是可以的。...但如果你不写任何其它内容,只有一个*,那就表示匹配所有的东西。 ** 匹配任意长度字符,并且包含包名分隔符(.)。...*** 匹配任意参数类型。比如void set*(***)就能匹配任意传入的参数类型,*** get*()就能匹配任意返回值的类型。 … 匹配任意长度的任意类型参数。

    1.7K20

    Android点将台:外交官

    实现的接口:[Parcelable, Cloneable] 包名:android.content' 依赖类个数:52 内部类/接口个数:3 源码行数:10086 源码行数(除注释)...):扩展信息 Flags(标志位):期望这个意图的运行模式 二、Intent的隐式使用 即不指定组件名,通过action,category,data,type等信息打开组件 系统中内置了很多应用,我们可以通过这些信息来匹配打开需要的应用...与Serializable的比较 此小点参考文章,讲得挺好 Parcelable 所属包android.os Serializable 所属包java.io |---所属包说明了Parcelable...的性能要强于Serializable 在读写数据的时候,Parcelable是在内存中直接进行读写 而Serializable是通过使用IO流的形式将数据读写入在硬盘上 Parcelable无法将数据进行持久化...(磁盘存储),Serializable可以 (在不同的Android版本当中,Parcelable可能会不) 五、Intent的数据传递 Intent 除来一大堆对属性的set之外,还有一大堆的putExtra

    19810

    31 天,从浅到深轻松学习 Kotlin

    将$放在变量名的前面去表达字符串中的变量和表达式。使用 ${expression} 求表达式的值。 Day 4:When 表达式 强大的 switch!...您也可以将 sealed 类用在 RecyclerView 的 adapter 中,非常适合于 ViewHolders —— 用一组干净的类型明确地分派给每个持有者。...用作表达式时,如果有类型不匹配,编译器将会出错。...第三周学习小结: 本周主要讨论一些基本的 Kotlin 特性,如运算符重载,内联,运算符重载,懒加载,以及非常强大的 inLine,并展示了使用 Android KTX 处理内容值,捆绑包和回调时如何编写更简洁的代码...Android KTX 具有一系列功能,可以使您的代码在使用图形包中的类时更加简洁。 Day 28:Sequences, lazy 和 generators 序列是从未存在的列表。

    2.2K30

    Android安全攻防战,反编译与混淆技术完全解析(下)

    $Creator CREATOR; } 表示不混淆Parcelable实现类中的CREATOR字段,毫无疑问,CREATOR字段是绝对不能改变的,包括大小写都不能变,不然整个Parcelable工作机制都会失败...> 匹配类中的所有方法 匹配类中的所有构造函数 * 匹配任意长度字符,但不含包名分隔符(.)。...*都是无法匹配的,因为*无法匹配包名中的分隔符,正确的匹配方式是com.exmaple.*.*,或者com.exmaple.test.*,这些都是可以的。...但如果你不写任何其它内容,只有一个*,那就表示匹配所有的东西。 ** 匹配任意长度字符,并且包含包名分隔符(.)。...*** 匹配任意参数类型。比如void set*(***)就能匹配任意传入的参数类型,*** get*()就能匹配任意返回值的类型。 … 匹配任意长度的任意类型参数。

    1.7K70

    Android:关于 Intent组件的那些小事(介绍、使用方法等)

    一个标签下可以有多组,只需匹配其中1组即可 详细说明 声明条件含:动作(Action)、类型(Category)、数据(Data) 实例说明...Serializable对象、Parcelable及其对应数组、CharSequence 类型 d. ArrayList,泛型参数类型为:、Parcelable>、、 4.3 具体使用 在当前Activity把要传递的数据暂存在Intent中、在新启动的Activity中取出Intent...中的数据 方法1:putExtra() // 目的:将FristActivity中的一个字符串传递到SecondActivity中,并在SecondActivity中将Intent对象中的数据(FristActivity...总结 本文对Android中的Intent组件进行了全面的介绍 接下来我将继续介绍 Android开发中的相关知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记 请帮顶 / 评论点赞!

    1K50

    Android 代码混淆规则

    Proguard作用 Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系...2.2 资源压缩 资源压缩将移除项目及依赖的库中未被使用的资源,这在减少 apk 包体积上会有不错的效果,一般建议开启。...main -> 渠道 -> 构建类型 举个例子,假如重复资源同时存在于main文件夹和不同渠道中,gradle 会选择保留渠道中的资源。...通配符**,匹配任意长度字符,并且包含包名分隔符(.) 通配符***,匹配任意参数类型 …,匹配任意长度的任意类型参数。...*; } 4.2 不混淆某个包所有的类 -keep class com.android.proguard.example.** { *; } 4.3 不混淆某个类的子类 -keep public

    2.6K10

    Android 混淆从入门到精通

    ,而只是希望保护类下的特定内容,就可以使用 ; //匹配所有构造器 ; //匹配所有域 ; //匹配所有方法方法 你还可以在或前面加上private...(否则反射可能出现问题); AndroidMainfest中的类不混淆,所以四大组件和Application的子类和Framework层下所有的类默认不会进行混淆。...,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象; 使用第三方开源库或者引用其他第三方的SDK包时,如果有特别要求,也需要在混淆文件中加入对应的混淆规则; 有用到WebView的JS调用也需要保证写的接口方法不混淆...,原因和第一条一样; Parcelable的子类和Creator静态成员变量不混淆,否则会产生Android.os.BadParcelableException异常; -keep class * implements...Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator

    1.4K90

    Android 反序列化漏洞攻防史话

    根据官方文档的介绍,Parcelable 和 Bundle 对象主要的作用是用于跨进程边界的数据传输(IPC/Binder),但 Parcel 并不是一个通用的序列化方法,因此不建议开发者将 Parcel...这就引发了历史上出现过多次的 Android 反序列化漏洞,本文就按照时间线对其进行简单的分析和梳理。...CVE-2021-0928 在前面反序列化的示例中,漏洞主要出在一个自定义的 Vulnerable 类中,即手工编写的 readFromParcel/writeToParcel 不匹配问题。...该漏洞本身并不复杂,是个很常见的 Parcel 序列化/反序列化不匹配问题,关键是这个漏洞如何利用?...从中我们可以看到,Parcel 作为轻量级的序列化方案,许多操作都需要手动管理,这导致了许多读写不匹配的问题,虽然后续引进了 LazyBundle 优化,但又引发了新的内存管理问题,使得传统二进制的 UAF

    1.9K60

    Android Aidl跨进程通讯的简单使用

    List类型:List中的所有元素必须是AIDL支持的类型之一,或者是一个其他AIDL生成的接口,或者是定义的parcelable(下文关于这个会有详解)。List可以使用泛型。...Map类型:Map中的所有元素必须是AIDL支持的类型之一,或者是一个其他AIDL生成的接口,或者是定义的parcelable。Map是不支持泛型的。...02 创建数据类实现Parcelable接口 前面简介中提到过,AIDL数据类通讯需要实现Parcelable接口,为了省去接口实现的代码,Kotlin中通过kotlin-parcelize即可实现了。...在aidl中使用了数据类TestData,所以Aidl文件和数据类的文件必须保证在同一包名下,并不是说放在同一文件夹下,实体类TestData文件在主Code文件夹下(java目录下),包名和aidl文件夹中放置...这块单独放在一个类中,方便后续别的页面调用接口,所以单独摘了出来,放在了AidlProcessUtil类中。

    91550

    Art of Android Development Reading Notes 2

    2.2 Android中的多进程模式 (1)通过给四大组件指定android:process属性就可以开启多进程模式,默认进程的进程名是包名packageName,进程名以:开头的进程属于当前应用的私有进程...在Android开发中,Binder主要用在Service中,包括AIDL和Messenger,其中普通Service中的Binder不涉及进程间通信,较为简单;而Messenger的底层其实是AIDL...下面分析其中的方法: 1.asInterface(android.os.IBinder obj):用于将服务端的Binder对象转换成客户端所需的AIDL接口类型的对象,这种转换过程是区分进程的,如果客户端和服务端是在同一个进程中...1.AIDL支持的数据类型:基本数据类型、String和CharSequence、ArrayList、HashMap、Parcelable以及AIDL; 2.某些类即使和AIDL文件在同一个包中也要显式...2.5 Binder连接池 (1)当项目规模很大的时候,创建很多个Service是不对的做法,因为service是系统资源,太多的service会使得应用看起来很重,所以最好是将所有的AIDL放在同一个

    50920

    Android跨进程通信IPC之4——AndroidIPC基础1

    解决这个问题就需要用到线程,把一些耗时的任务放在线程即可。...那我们就来详细了解下 (一)、如何开启多进程模式 正常情况下,在Android中多进程是指一个应用中存在多个进程的情况下,因此这里不讨论两个应用之间的多进程情况。...Parcelable 是属于 Android 专用。不过不同于Serializable,Parcelable实现的原理是将一个完整的对象进行分解。而分解后的每一部分都是Intent所支持的数据类型。...(3)、取值规范 由于可能存在读取值的偏差,一个默认的取值规范为: 1、读取复杂对象时:对象匹配时,返回当前偏移位置的对象;对象不匹配时,返回null。...2、读取简单对象时:对象匹配时,返回当前偏移位置的对象:对象不匹配时,返回0。 (4)、存放空间图 下面,给出一张浅显的Parcel的存放空间图 ?

    1.3K30

    堪比阿里插件的Android Studio插件集合(IDE通用)(上)

    code generator自动生成Parcelable序列化 Android Parcelable code generator(for kotlin)使用kotlin开发时自动生成Parcelable...首先,我分门别类,按类型把功能类似的的都放在一起。 其次,我对每一个插件做了一个很精确的讲解,图文并茂。另外把一些注意事项,以及优缺点都写的清清楚楚,这是我自己使用中总结出来的(极个别的除外)。...4.Android Code Generator 用法: 找到布局文件名称,右键,选择Generate Android Code → 选择要生成的类型(默认是6种类型可供选择), 选择生成的代码存放的路径以及包名...5.Android Studio Prettify 作用: 1. 可以将代码中的字符串写在string.xml文件中,选中字符串鼠标右键选择Extract String resource ?...3) 生成的全局变量的导包是在变量类型上的,而不是在类外面导包,很不规范。

    1.5K20

    Activity之间的数据传递方法汇总

    但是,全局变量在 APP 运行期间一直存在,如果通过全局变量存放的数据量比较大,变量个数多;并且在不需要使用后,没有及时的将全局变量置为 null,好让 GC 去回收,那么是有可能会引发 OOM 问题的...3、通过 SharedPreferences 传递 SharedPreferences 是 Android 提供的一种实现数据存储的方式,它可以将数据以 xml 格式存储在机器中,通常用来存储 APP...apply:立即刷新 In-memory 中的数据,然后启动异步任务将修改写到 Storage,无返回值。...不过我们还是可以通过一些手段去访问到它,比如反射、将源码的库导出到 AS 使用、将 APP 放在源码中编译等等。...既然如此,我们也可以在自己 APP 中创建数据库,然后通过数据库来实现 Activity 之间的数据传递。 栗子煮太多,吃不动,不煮了,有兴趣的可以自己去查一下数据库的知识。

    3.2K40
    领券