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

Proguard -为什么不需要保留可打包创建者的createFromParcel名称

Proguard是一种Java字节码优化工具,用于缩小、优化和混淆Android应用程序的代码。它可以在应用程序构建过程中自动地分析、优化和混淆代码,以减小应用程序的大小并提高其性能和安全性。

在Android开发中,Parcelable接口用于在不同组件之间传递复杂对象。当使用Parcelable接口时,通常需要实现createFromParcel方法来从Parcel对象中恢复对象的状态。然而,由于Proguard的混淆特性,它会对代码进行重命名和优化,可能会导致createFromParcel方法的名称被修改。

为了确保Parcelable接口的正确性,开发人员通常需要在Proguard配置文件中添加规则,以防止createFromParcel方法被重命名或删除。这样可以确保在应用程序构建过程中,该方法的名称保持不变,从而避免在反序列化对象时出现问题。

在腾讯云的产品生态系统中,与Proguard相关的产品和服务可能包括:

  1. 腾讯云移动应用安全解决方案:提供应用加固、代码混淆等功能,以保护移动应用程序的安全性和代码的完整性。了解更多信息,请访问:腾讯云移动应用安全解决方案

请注意,以上仅为示例,实际上可能还有其他与Proguard相关的产品和服务。建议在使用任何产品或服务之前,仔细阅读相关文档和官方指南,以确保选择适合您需求的解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ProGuard 在 Android 上使用姿势

如果以上还不足以说服您使用 ProGuard,其实移除无用代码和混淆所有名称还有其他更多优化效果: 在一些版本 Android 设备上,DEX 代码会在安装或者运行时被编译成机器码。...混淆通过两种方式来减少代码:让表示名称字符串更短;在这些方法或者属性有相同签名情况,下这些字符串更容易被复用,最终减少了字符串池数目。 使用 ProGuard 是开启资源压缩前提条件....想要正确配置 ProGuard,最重要就是让它知道运行时您哪些代码不应该被移除(如果开启混淆的话,当然也要保持他们名称不变)。...另外这三个 keep 规则也各有一个不同版本支持仅保留混淆(重命名),不保留压缩。您可以在 ProGuard 官网表格看一下概览。...在 APK Analyzer 中追踪是什么在 DEX 中 keep 住了这些类和方法 另一种方法不那么精准,但在任何应用都不需要重新构建和额外工作量。

2.6K40

Android 混淆那些事儿

为什么要混淆 我们apk在打包发布之前,都要进行混淆处理来避免源代码和资源文件被小白用户通过反编译拿到。...混淆不仅能将代码中类名、字段、方法名变为无意义名称,保护代码,也由于移除无用类、方法,并使用简短名称对类、字段、方法进行重命名缩小了程序size。...构建输出 构建时Proguard都会输出下列文件: (1)dump.txt —- 说明APK中所有类文件内部结构 (2)mapping.txt —- 提供原始与混淆过类、方法和字段名称之间转换...csh代码方便,我们需要在proguard_rules.pro中手动添加抛出异常时保留代码行号,并且重命名抛出异常时文件名称,这样能方便定位问题: 抛出异常时保留代码行号 -keepattributes...是proguard四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。

3.3K50
  • 在 Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)

    在共享即时应用程序/安装应用程序项目中,功能模块替换旧 com.android.library 模块。 当构建一个安装应用程序时,ProGuard(混淆)会在构建过程结束时运行。...**因此,与安装应用程序构建相反,ProGuard(混淆)可以独立运行在每个功能模块代码中。...现在我们明白了为什么 ProGuard(混淆)会失败了,是时候解决这个问题了:确保我们为项目配置添加必要保留规则,以防止在不同模块(在一个模块中定义,在另一个中使用)之间类被移除或混淆。...由于非基本模块会被独立地 ProGuard(混淆),因此这些模块中类可以在混淆期间轻松地分配相同名称。...请记住通过运行应用程序并检查所有可能情况来彻底进行测试,因为某些错误只能在运行时发生。 ---- 希望本指南能够让你更好地理解为什么 ProGuard(混淆)可以使你即时应用程序崩溃。

    2.6K30

    如何在10分钟内让Android应用大小减少 60%?

    //打包语言类型(语种翻译) resConfigs "en", "de", "fr", "it" //打包文件夹 resConfigs "nodpi", "hdpi", "...或者isparta将其它格式图片转换成webP格式,isparta实现批量转换。...提示:要想做进一步代码压缩,尝试使用位于同一位置proguard-android-optimize.txt文件。...每次构建时 ProGuard 都会输出下列文件 dump.txt 说明 APK 中所有类文件内部结构。mapping.txt:提供原始与混淆过类、方法和字段名称之间转换。...在类上添加@Keep原样保留整个类。在方法或字段上添加它可完整保留方法/字段(及其名称)以及类名称。请注意,只有在使用注解支持库时,才能使用此注解。

    85520

    如何在10分钟内让Android应用大小减少 60%?

    //打包语言类型(语种翻译) resConfigs "en", "de", "fr", "it" //打包文件夹 resConfigs "nodpi", "hdpi", "...或者isparta将其它格式图片转换成webP格式,isparta实现批量转换。...提示:要想做进一步代码压缩,尝试使用位于同一位置proguard-android-optimize.txt文件。...每次构建时 ProGuard 都会输出下列文件 dump.txt 说明 APK 中所有类文件内部结构。mapping.txt:提供原始与混淆过类、方法和字段名称之间转换。...在类上添加@Keep原样保留整个类。在方法或字段上添加它可完整保留方法/字段(及其名称)以及类名称。请注意,只有在使用注解支持库时,才能使用此注解。

    1.6K10

    android代码混淆

    缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素名称,否则就会这样就会导致程序出错。 一, 我们用到反射地方。...-keep 指定类和类成员被保留作为 入口 。 -keepclassmembers 指定类成员被保留。...告诉我来修改配置文件(已经保留不需要了) 目前系统部检查第三方库为 -dontwarn android.support.** -dontwarn com.tencent.** -dontwarn...打包出来程序如何调试 一旦打包出来,就不能用eclipselogcat去看了,这里可以用android sdk中ddms.battool来看,一用就发现和logcat其实还是一个东西,就是多了个设备选择...参考http://code.google.com/p/libgdx-users/wiki/Ant 验证打包效果 利用了apktool反编译工具,把打包文件又解压了看了一下,如果包路径、类名、变量名

    1.6K80

    一篇文章带你领略Android混淆魅力

    只要是我们亲身经历过 App 打包上线过程,或多或少都需要了解一些代码混淆基本操作。那么,混淆到底是什么?它好处有哪些?具体效果如何?别急,下面我们来一一探索它"独特"魅力?。...1.1 混淆好处 混淆好处就是它目的:令 APK 难以被逆向工程,即很大程度上增加反编译成本。此外,Android 当中"混淆"还能够在打包时移除无用资源,显著减少 APK 体积。...首先,我们来了解一下常见混淆命令。 3.1 -keep 这里说 keep 命令指的是一系列以 -keep 开头命令,它主要用来保留 Java 中不需要进行混淆元素。...由于方法名称和类名称都经过混淆处理,即使程序发生崩溃问题,也很难定位问题所在。...Android ProGuard 为我们提供了默认"混淆字典",即将元素名称转为英文小写字母形式。那么,我们可以定义自己混淆字典吗?卖个关子,我们先来看一张效果图: ?

    97020

    Android开发:请你吃一顿史上最全Android混淆大餐

    在 Android 日常开发过程中,混淆是我们开发 App 一项必不可少技能。只要是我们亲身经历过 App 打包上线过程,或多或少都需要了解一些代码混淆基本操作。那么,混淆到底是什么?...混淆好处 混淆好处就是它目的:令 APK 难以被逆向工程,即很大程度上增加反编译成本。此外,Android 当中"混淆"还能够在打包时移除无用资源,显著减少 APK 体积。...首先,我们来了解一下常见混淆命令。 keep 命令 这里说 keep 命令指的是一系列以 -keep 开头命令,它主要用来保留 Java 中不需要进行混淆元素。...由于方法名称和类名称都经过混淆处理,即使程序发生崩溃问题,也很难定位问题所在。...Android ProGuard 为我们提供了默认"混淆字典",即将元素名称转为英文小写字母形式。那么,我们可以定义自己混淆字典吗?卖个关子,我们先来看一张效果图: ?

    4.8K30

    Maven - 代码混淆proguard-maven-plugin vs 代码加密classfinal

    maven插件参数名称与直接运行参数相同,请参考上节参数说明。 无密码模式 加密时-pwd参数设为#,启动时可不用输入密码; 如果是war包,启动时指定参数 -nopwd,跳过输密码过程。...机器绑定同时支持机器码+密码方式加密。 启动加密后jar 加密后项目需要设置javaagent来启动,项目在启动过程中解密class,完全内存解密,不留下任何解密后文件。...解密功能已经自动加入到 yourpaoject-encrypted.jar中,所以启动时-javaagent与-jar相同,不需要额外jar包。...机器绑定同时支持机器码+密码方式加密。...将此生成好机器码,放到maven插件中code里面即可。这样,打包项目只能在生成机器码机器运行,其他机器则启动不了项目

    96800

    Android混淆你了解多少?

    在 Android 日常开发过程中,混淆是我们开发 App 一项必不可少技能。只要是我们亲身经历过 App 打包上线过程,或多或少都需要了解一些代码混淆基本操作。那么,混淆到底是什么?...混淆好处 混淆好处就是它目的: 令 APK 难以被逆向工程,即很大程度上增加反编译成本。此外,Android 当中"混淆"还能够在打包时移除无用资源,显著减少 APK 体积。...首先,我们来了解一下常见混淆命令。 keep 命令 这里说 keep 命令指的是一系列以 -keep 开头命令,它主要用来保留 Java 中不需要进行混淆元素。...由于方法名称和类名称都经过混淆处理,即使程序发生崩溃问题,也很难定位问题所在。...Android ProGuard 为我们提供了默认"混淆字典",即将元素名称转为英文小写字母形式。那么,我们可以定义自己混淆字典吗?

    1.9K00

    android混淆那些坑

    混淆(Obfuscate):使用a、b、c、d这样简短而无意义名称,对类、字段和方法进行重命名。 预检(Preveirfy): 在java平台上对处理后代码进行预检。...说到这里我们需要对Android打包原理有一个简单了解,首先来看一下在Proguard帮助文档中给出了一个Proguard工作流程图 ?...# 不做预检验,preverify是proguard四个步骤之一 # Android不需要preverify,去掉这一步可以加快混淆速度 -dontpreverify # 有了verbose这句话...,混淆后就会生成映射文件 # 包含有类名->混淆后类名映射关系 # 然后使用printmapping指定映射文件名称 -verbose -printmapping priguardMapping.txt...* { void *(**On*Event); } 一般第三方和自己bean文件是不需要混淆

    3.2K60

    Duang~ Android堆栈慘遭毁容?精神哥揭露毁容真相!

    但被Proguard还原过堆栈,应该有“方法返回类型”及“方法参数”。 那么这里有两个问题: 为什么堆栈会是Unknown Source?是Bugly崩溃克星没有上报吗?...如图3所示,我们发布时源码信息会先经过javac编译,再经过proguard混淆,才被打包进发布apk中,最终Crash崩溃后Bugly获取到堆栈中有木有源码及行号就要看这两步了。 ?...所以想让Crash崩溃堆栈不再Unknown Source,需要两个保证: 保证一:javac编译保留源文件名及行号 【TODO】javac编译保留源文件名及行号 源文件名、行号、变量名称,都存在class...文件debug信息中,javac编译时可以选择是否保留debug信息,那么我们肯定是要保留!...保证二:Proguard混淆中保留原文件名及行号 【TODO】Proguard中keep住源文件及行号 -keepattributes SourceFile,LineNumberTable 为什么com.xx.a.a

    1.4K50

    SpringBoot 玩一玩代码混淆,防止反编译代码泄露

    一共就两步 第一步, 在项目路径下,新增一份文件 proguard.cfg : proguard.cfg #指定Java版本 -target 1.8 #proguard会对代码进行优化压缩,他会删除从未使用类或者类成员变量等...*; } #保留参数名,因为控制器,或者Mybatis等接口参数如果混淆会导致无法接受参数,xml文件找不到参数 -keepparameternames # 保留枚举成员及方法 -keepclassmembers...-- 就是输入Jar名称,我们要知道,代码混淆其实是将一个原始jar,生成一个混淆后jar,那么就会有输入输出。...-- 输出jar名称,输入输出jar同名时候就是覆盖,也是比较常用配置。...--这里特别重要,此处主要是配置混淆一些细节选项,比如哪些类不需要混淆,哪些需要混淆-->

    80230

    SpringBoot 玩一玩代码混淆,防止反编译代码泄露

    一共就两步 第一步, 在项目路径下,新增一份文件 proguard.cfg : proguard.cfg #指定Java版本 -target 1.8 #proguard会对代码进行优化压缩,他会删除从未使用类或者类成员变量等...*; } #保留参数名,因为控制器,或者Mybatis等接口参数如果混淆会导致无法接受参数,xml文件找不到参数 -keepparameternames # 保留枚举成员及方法 -keepclassmembers...-- 就是输入Jar名称,我们要知道,代码混淆其实是将一个原始jar,生成一个混淆后jar,那么就会有输入输出。...-- 输出jar名称,输入输出jar同名时候就是覆盖,也是比较常用配置。...--这里特别重要,此处主要是配置混淆一些细节选项,比如哪些类不需要混淆,哪些需要混淆--> <!

    96920

    Android性能优化之APK 极限压缩(资源越多,效果越显著)

    去除无用资源 Link 检查(谨慎删除) 概念 Lint 是 Android Studio 提供 代码扫描分析工具,它可以帮助我们发现代码结构 / 质量问题,同时提供一些解决方案,而且这个过程不需要我们手写测试用例...构建不会将该文件打包到 APK 之中。 指定要舍弃资源可能看似愚蠢,因为您本可将它们删除,但在使用构建变体时,这样做可能很有用。...严格模式 正常情况下,资源压缩器准确判定系统是否使用了资源。...不过,如果您代码调用 Resources.getIdentifier()(或您任何库进行了这一调用 - AppCompat 库会执行该调用),这就表示您代码将根据动态生成字符串查询资源名称。...为什么使用 AndResGuard 在以往开发中,我们通常只混淆了代码,资源文件却暴露在他人面前,res 文件夹下所有文件名可读性过强。 使用后效果 ? ?

    3.9K30

    android开发笔记之 Android代码混淆打包

    那就让我们了解下这个东西吧 作用:为了防止自己劳动成果被别人窃取,混淆代码能有效防止被反编译 缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素名称,否则就会这样就会导致程序出错...三, 是我们java 元素名称是在配置文件中配置好。 所以使用proguard时,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆。...-keep 指定类和类成员被保留作为 入口 。 -keepclassmembers 指定类成员被保留。...告诉我来修改配置文件(已经保留不需要了) 目前系统不检查第三方库为 -dontwarn android.support.** -dontwarn com.tencent.** -dontwarn...先说如何使用别人写好,我们引用第三方 库无论开源还是闭源如有特殊情况我们都可以在他User Guide中找到混 淆代码配置,如我们引用了大名鼎鼎guillep PullToRefresh,我们

    81820

    Android 代码混淆 混淆方案

    请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地,打包完成以后而又不不可以了,导致了许多困惑,本片文章来问大家解决困惑,希望对大家有帮助。...把类名、属性名、方法名替换为简短且无意义名称; 预校验。添加预校验信息。这个预校验是作用在Java平台上,Android平台上不需要这项功能,去掉之后还可以加快混淆速度。...,不需要开发者额外配置)。...“合并资源”流程中,名称相同资源被视为重复资源会被合并。...四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。

    2.6K30

    Maven - 代码混淆Proguard踩坑记

    ProGuard会自动混淆大部分代码,但有些代码不应该被混淆,比如注解、native方法、反射用到方法等,需要在配置文件中指定保留 -keep class com.example.** { *; }...所以ProGuard只是增加了反编译难度,并不能完全防止代码被反编译。 总之,ProGuard是一个很好用Java代码混淆工具,可以保护你代码,让你程序变小变快。...SourceFile,LineNumberTable,*Annotation*,EnclosingMethod # 保留所有接口原始名称不进行混淆 -keepnames interface ** {...混淆包 常见问题和解决方法 类/方法未找到错误:确保Proguard配置中保留了所有必要类和方法。...可以尝试使用Proguard-keep指令保留这些类。 反射相关错误:如果项目中使用了反射,确保在Proguard配置中保留相关类和方法。

    58300
    领券