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

仅当启用JSONArray时,proguard才不是字符串异常

当启用JSONArray时,proguard不会抛出字符串异常。

首先,让我们了解一下相关的概念和背景知识。

  1. Proguard:Proguard是一个Java字节码优化和混淆工具,用于在应用程序构建过程中减小代码体积、提高运行效率和安全性。它可以删除未使用的代码、优化字节码以及混淆类、方法和字段的名称,使得反编译和逆向工程变得更加困难。
  2. JSONArray:JSONArray是Java中的一个类,用于表示JSON数组。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输和存储。JSONArray可以存储多个JSON对象,并提供了一系列方法用于操作和访问这些对象。

现在回到问题本身,当启用JSONArray时,proguard不会抛出字符串异常。这是因为JSONArray是一个Java类,而Proguard的作用是对字节码进行优化和混淆,它主要针对的是类、方法和字段的名称以及未使用的代码。由于JSONArray是一个已知的类,Proguard会正确地处理它,不会引发任何异常。

在实际开发中,如果你的应用程序中使用了JSONArray,并且你希望使用Proguard进行代码优化和混淆,你可以按照以下步骤操作:

  1. 在Proguard配置文件(通常是proguard-rules.pro)中添加以下规则,以保留JSONArray类和其相关方法:
代码语言:txt
复制
-keep class org.json.JSONArray {
    *;
}

这将告诉Proguard不要对JSONArray类进行任何优化或混淆。

  1. 在构建过程中启用Proguard,并将配置文件与构建脚本(如Gradle或Maven)关联起来。
  2. 构建和发布你的应用程序。Proguard将在构建过程中自动应用配置文件,并对代码进行优化和混淆。

需要注意的是,以上步骤是一般性的指导,具体的操作可能因开发环境和工具链而有所不同。在实际使用中,你应该参考相关的文档和资源,以确保正确配置和使用Proguard。

关于腾讯云的相关产品和服务,由于要求不能提及具体的品牌商,我无法直接给出腾讯云的产品链接。但是,腾讯云作为一家知名的云计算服务提供商,提供了丰富的云计算产品和解决方案,涵盖了计算、存储、数据库、人工智能等多个领域。你可以访问腾讯云的官方网站,查找相关的产品和服务信息。

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

相关·内容

Proguard 常用规则

例如,在处理由JDK 1.2或更早版本编译的库,您可能希望保留合成类$方法的名称。 所以处理使用处理过的库的应用程序时,混淆器可以再次检测到它(尽管ProGuard本身不需要这个)。...如果使用了一个类文件,但它的本地方法都不是,它的名字仍然会被混淆。只有在混淆适用。...在最初的混淆步骤中使用此选项,这种重命名将永远不是必需的。 该选项适用于混淆。...如果没有参数或空字符串(’’),程序包将移动到根程序包中。 该选项是进一步混淆软件包名称的一个示例。它可以使处理后的代码更小,更难理解。 只有在混淆适用。...只有在最终对Android,它不是必需的,因此您可以将其关闭以缩短处理时间。 -android 指定已处理的类文件针对Android平台。

1.6K20

ProGuard 在 Android 上的使用姿势

混淆通过两种方式来减少代码:让表示名称的字符串更短;在这些方法或者属性有相同的签名情况,下这些字符串更容易被复用,最终减少了字符串池的数目。 使用 ProGuard 是开启资源压缩的前提条件....运行时发生了 ClassNotFoundException 或 MethodNotFoundException 异常意味着您肯定缺失了某些类或者方法,也许是 ProGuard 移除了他们,又或者是因为错误配置依赖而导致无法找到他们...您有很多选项来配置您的 ProGuard: **keep **— 保留所有匹配的类和方法 **keepclassmembers **— 它们的类因为其他的原因被保留(被其他调用点引用到或者被其他的规则...keep 住),keep 住指定的一些成员 **keepclasseswithmembers **— 所有的成员在匹配的类中存在,会 keep 住 这些类和它的成员 我建议您从 ProGuard...这样的话您看 ANRs & crashes 页面,上报的堆栈都会现实真实的类名、方法名和行号而不是缩短的混淆后的那些。

2.5K40

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

不难看出,我们一般在打 release 包启用混淆,因为混淆会增加额外的编译时间,所以不建议在 debug 模式下启用。此外,需要注意的是:只有在启用混淆的前提下开启资源压缩才会有效!...不过,如果您的代码(包含库)调用 Resources.getIdentifier(),这就表示您的代码将根据动态生成的字符串查询资源名称。...其实,我们在使用代码混淆ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译出错,我们应该通过 keep 命令保留一些元素不被混淆。...其他应用程序访问组件可能会用到类的包名加类名,如果经过混淆,可能会无法找到对应组件或者产生异常。...这个波操作是不是有点"出类拔萃"了?哈哈,就不卖关子了,其实很简单,只要生成一套自己的 txt 格式的混淆字典,然后在混淆规则 Proguard-rules.pro 中应用一下即可: ?

93620

C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码

连接选择,SDK程序集.(默认为无) Xamarin.Android中的链接器采用静态分析来确定Xamarin.Android应用程序使用或引用了哪些程序集,类型和类型成员。...ProGuard不是Xamarin.Android连接器的替代品。Xamarin.Android链接器链接托管代码,而ProGuard链接Java字节码。...生成过程是首先使用Xamarin.Android链接器来优化应用程序中的托管(C#)代码,然后使用ProGuard(如果启用)在Java字节码级别优化APK。...启用ProGuard的检查,Xamarin.Android上运行所产生的APK ProGuard的工具。ProGuard配置文件在构建ProGuard生成和使用。...写在最后 本篇只是讲解了APP的打包流程,作为一个发布的应用,当然不是这么简单就完事了.

2.8K80

C#-Xamarin的Android项目开发(三)——发布、部署、打包

因为,它不是代码开发,所以很多开发者本能的拒绝学习它。 并且一个项目配置好一次以后,部署的步骤和部署的人通常很固定,所以大部分开发者也没机会去学习它。...针对每个选择的ABI生成一个包(.apk):发布apk时会针对每个cpu会生成不同的apk,cpu的选择在高级中,所以,勾选上这个选项,发布apk,会为各个CPU都创建一个单独的apk。...启用ProGuard:勾选上会使生成的apk变小。 启用Multi-Dex:是一个配套ProGuard的配置,不太常用,鼠标放到该选项上有解释。...启用开发者检测(调试和分析):该属性不勾选【使用快速部署(调试模式)】属性就不可以被勾选,所以,也意味着,该属性不勾选,会出现无法部署到Emulator模拟器上的情况。...取消这三个选项的勾选【使用共享运行时】【使用快速部署(调试模式)】【启用开发者检测(调试和分析)】。 然后勾选上【启用ProGuard】 接下来,重新生成项目。

1.4K40

安卓应用安全指南 4.8 输出到 LogCat

另一方面,为了使开发者输出程序异常的细节来记录,异常发生,在某些情况下,堆栈踪迹通过Log.e(..., Throwable tr)/w(..., Throwable tr)/i(..., Throwable...例如,SQLiteException按原样输出,会输出 SQL 语句的类型,因此可能会提供 SQL 注入攻击的线索。 因此,建议在输出Throwable对象使用Log.d()/v()方法。...除此之外,使用android.util.Log和System.out / err进行日志输出,与使用android.util.Log相比,需要考虑的因素会增加,因此可能会出现一些错误,比如 一些删除被忽略掉了...4.8.3.4 从汇编中移除敏感信息 如果为了删除Log.d()方法而使用 ProGuard 构建以下代码,有必要记住,ProGuard会保留为日志信息构造字符串的语句(代码的第一行),即使它删除了 Log.d...使用Exception#printStackTrace() 隐式输出到System.err异常没有被应用捕获,它会由系统提供给Exception#printStackTrace()。)

39410

net.sf.json.JSONException: null object_json数组转json对象

在C++程序设计中,可以使用RapidJson、Jsoncpp等工具,因为开始从事Java程序的开发,为了提升开发效率,因此也要熟练掌握一种Json生成和解析的工具。...如果name存在,则get会返回对应的值,否则会抛出异常JSONException。而opt方法则会在不存在所要检索的name可以指定一个默认值而不是抛出异常,这样可以获取可选择值。...它的外部形式是包括在方括号[]内的字符串,由逗号分隔值。...对象可以使用JSON接口、List接口以及Comparable接口提供的方法,可以把JSONArray看成一个List对象。...4.3.1 追加 在JSONObject中由于name的类型为字符串类型,而值可以为JSONObject,JSONArray,Boolean、 JSONObject、 JSONArray、 Number

5.9K20

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

启用混淆 .........不难看出,我们一般在打 release 包启用混淆,因为混淆会增加额外的编译时间,所以不建议在 debug 模式下启用。此外,需要注意的是:只有在启用混淆的前提下开启资源压缩才会有效!...其实,我们在使用代码混淆ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译出错,我们应该通过 keep 命令保留一些元素不被混淆。...其他应用程序访问组件可能会用到类的包名加类名,如果经过混淆,可能会无法找到对应组件或者产生异常。...这个波操作是不是有点"出类拔萃"了?哈哈,就不卖关子了,其实很简单,只要生成一套自己的 txt 格式的混淆字典,然后在混淆规则 Proguard-rules.pro 中应用一下即可: ?

4.1K30

学(kao)习(bei)官方关于64k异常处理 ^_^

预计阅读时间: 18分钟 前言 随着APP的一次又一次迭代,APP的体积也越来越大,这时候,会引发这么一个问题,早期的错误异常如下: Conversion to Dalvik format failed...通过 ProGuard 移除未使用的代码 为版本构建启用代码压缩以运行 ProGuard启用压缩可确保交付的 APK 不含有未使用的代码。...运行时,Dalvik 可执行文件分包 API 使用特殊的类加载器来搜索适用于方法的所有 DEX 文件(而不是仅在主 classes.dex 文件中搜索)。...该设置将启用一个名为 pre-dexing 的构建功能,此功能使用适用于 Android 5.0(API 级别 21)和更高版本的 ART 格式更快生成 Dalvik 可执行文件分包输出。...这将创建已启用 Dalvik 可执行文件分包且禁用 proguard 的可调试应用(因为 minifyEnabled 默认为 false)。

94520

对前端传入的json对象解析成多个对象

当然不是,spring MVC中自带的是@RequestBody的注解,这个注解有什么作用呢?这个注解可以将前端传进来的json数据进行解析成json数据。...countEditHotSearch>0){ count=1; } return count; } MultiRequestBody解析器 解决的问题: 1、单个字符串等包装类型都要写一个对象可以用...6、支持多余属性(不解析、不报错)、支持参数“共用”(不指定value,参数名不为JSON串的key) 7、支持value和属性名找不到匹配的key,对象是否匹配所有属性。...,https://github.com/chujianyun/Spring-MultiRequestBody /** * MultiRequestBody解析器 * 解决的问题: * 1、单个字符串等包装类型都要写一个对象可以用...* 6、支持多余属性(不解析、不报错)、支持参数“共用”(不指定value,参数名不为JSON串的key) * 7、支持value和属性名找不到匹配的key,对象是否匹配所有属性。

3K10

混淆技术 发布于 2023年05月30

ProGuard相比,DexGuard提供了更强大和多样的混淆选项,包括字符串加密、类加密、资源混淆等。 R8:这是Google开发的一个新的混淆工具,目标是取代ProGuard。...ProGuard 使用 ProGuard 来混淆Android应用一般需要以下几个步骤: 启用ProGuard:在Android项目中,找到build.gradle文件,然后在android节中,找到buildTypes...code/simplification/variable -optimizationpasses 5 -allowaccessmodification 构建你应用:启用ProGuard并配置好了规则之后...它是反编译Java类文件的常见工具(虽然我认为它并不是那么地好用,而且只用来反编译) Recaf:Recaf 是一个现代的,易于使用的 Java 反编译器,编辑器和反混淆器。...涉及到专门的反混淆工具,这就涉及到具体的混淆工具和混淆方法了。例如,如果原始的混淆工具提供了混淆映射文件,那么这个映射文件可以用于帮助反混淆。 Recaf就是一个既有反编译也有反混淆功能的工具。

30630

Android Study 之学(kao)习(bei)官方关于64k异常处理 ^_^

前言 随着APP的一次又一次迭代,APP的体积也越来越大,这时候,会引发这么一个问题,早期的错误异常如下: ? 较新版本的 Android 构建系统虽然显示的错误不同,但指示的是同一问题: ?...通过ProGuard移除未使用的代码 为版本构建启用代码压缩以运行 ProGuard启用压缩可确保交付的 APK 不含有未使用的代码。...运行时,Dalvik 可执行文件分包 API 使用特殊的类加载器来搜索适用于方法的所有 DEX 文件(而不是仅在主 classes.dex 文件中搜索)。...该设置将启用一个名为 pre-dexing 的构建功能,此功能使用适用于 Android 5.0(API 级别 21)和更高版本的 ART 格式更快生成 Dalvik 可执行文件分包输出。...这将创建已启用 Dalvik 可执行文件分包且禁用 proguard 的可调试应用(因为 minifyEnabled 默认为 false)。

80910

关于Android开发你必须要懂的APK瘦身知识

此内容包括语言字符串和样式,以及直接包含在resources.arsc文件中的内容路径 ,例如布局文件和图像。...使用ProGuard 下面这段来自 build.gradle 文件的代码用于为发布构建启用代码压缩: android { buildTypes { release {...使用WebP文件格式 定位Android 3.2(API级别13)或更高级别 ,您也可以使用WebP文件格式来制作图像,而不是使用PNG或JPEG文件。...因此,只有在显示小图像考虑使用这些矢量图形。 其它策略 有时候我们可能对一张图片进行重复利用,比如一张图片仅仅是整体颜色的变换可以使用setColorFilter或者tint。...'), 'proguard-rules.pro' } } } 资源压缩器目前不会移除 values/ 文件夹中定义的资源(例如字符串、尺寸

1.1K40
领券