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

在我的案例中启用了proguard的情况下,在使用烧焦的apk时出现崩溃

在您的案例中,启用了ProGuard的情况下,在使用混淆后的APK时出现崩溃的问题。ProGuard是一种Java字节码优化工具,用于缩小、优化和混淆代码,以提高应用程序的性能和安全性。然而,有时候使用ProGuard可能会导致一些问题,如崩溃或功能失效。

出现崩溃的原因可能是ProGuard将某些类、方法或资源文件误删或混淆,导致应用程序无法正常运行。为了解决这个问题,您可以尝试以下几个步骤:

  1. 检查ProGuard配置文件:确保ProGuard配置文件中没有排除您应用程序所需的类、方法或资源文件。您可以检查配置文件中的-keep选项,以确保必要的类和方法不会被混淆或删除。
  2. 调整ProGuard规则:根据您的应用程序的特定需求,您可以调整ProGuard规则,以确保重要的类和方法不会被混淆或删除。您可以使用-keep选项来指定需要保留的类和方法。
  3. 检查崩溃日志:查看应用程序的崩溃日志,以了解具体的错误信息和堆栈跟踪。这将有助于确定哪些类或方法导致了崩溃,并进一步调整ProGuard规则。
  4. 逐步排除问题:如果您无法确定具体的类或方法导致崩溃,可以尝试逐步排除问题。您可以先禁用ProGuard,然后逐步启用和调整ProGuard规则,以确定引起崩溃的具体配置。
  5. 联系开发者社区:如果您仍然无法解决崩溃问题,可以向相关的开发者社区寻求帮助。这些社区通常有经验丰富的开发者,可能会提供有关特定问题的解决方案或建议。

总结起来,当在使用ProGuard混淆后的APK时出现崩溃问题时,您可以通过检查ProGuard配置文件、调整ProGuard规则、查看崩溃日志、逐步排除问题和寻求开发者社区的帮助来解决问题。请注意,以上建议是一般性的,具体解决方案可能因案例而异。

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

相关·内容

Android Instant App(安卓即时应用程序)启用 ProGuard (混淆)

在这种情况下ProGuard(混淆)能够分析你整个代码库,找出哪些类被使用,哪些可以被安全地删除。 **在即时应用程序构建中,每个功能模块都会生成自己 APK。...为从代码中使用了跨模块类添加保留规则 我们需要从功能 APKs 找出使用基本模块哪些类。你可以通过检查来源手动追踪,但对于大型项目这种方法是不可行。...有了关于 DEX 格式和命令行 APK 分析器(一个分析 APK DEX 文件工具)一些知识,我们可以很容易地找到所选模块哪些被使用了但没有定义类。...它为资源文件和 Android Manifest 中使用类生成所需 ProGuard(混淆)规则,但在构建即时应用程序情况下,它们最终可能会出现在错误模块。...新功能:禁用非基本模块混淆 现在看来,指南中遗漏了一个重要(现在很明显就发现了)点。

2.5K30

ProGuard Android 上使用姿势

通过仅将您代码实际使用方法打包到 APK ,移除代码会帮您避免 64K dex 方法引用问题。尤其是您引用了很多第三方库时候,这样可以大大降低您应用中使用 Multidex 需求。...每个 Android 应用都应该使用代码压缩吗?认为是的! 但是您激动跳起来之前,请先继续阅读下去。当您开启 ProGuard 某些非常微妙情况下会让您应用崩溃。...这会在下面的场景中发生: 当 ProGuard 移除过多某些情况下ProGuard 并不知道一个类或者方法被使用了,例如这个类仅在反射使用或者仅在 XML 中被引用。...这在许多情况下可以应用避免崩溃发生,但是这些配置并不是 100% 适合您应用。您可以移除掉默认 ProGuard 文件而使用您自己。...ProGuard 和 混淆后堆栈 之前提及到,构建过程 ProGuard 会在处理类文件输出映射关系和日志文件。当您需要保留构建产物,您应当保存好这些文件和 APK 在一起。

2.5K40

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

资源压缩能够帮助我们移除项目及依赖仓库使用资源,有效地降低了apk大小。...,资源压缩器可准确判定系统是否使用了资源。...其实,我们使用代码混淆ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译出错,我们应该通过 keep 命令保留一些元素不被混淆。...系统为我们提供了 retrace 工具,结合上文提到 mapping.txt 文件,就可以将混淆后崩溃堆栈追踪信息还原成正常情况下 StackTrace 信息。...此外,我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

93420

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

资源压缩能够帮助我们移除项目及依赖仓库使用资源,有效地降低了apk大小。...,资源压缩器可准确判定系统是否使用了资源。...其实,我们使用代码混淆ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译出错,我们应该通过 keep 命令保留一些元素不被混淆。...系统为我们提供了 retrace 工具,结合上文提到 mapping.txt 文件,就可以将混淆后崩溃堆栈追踪信息还原成正常情况下 StackTrace 信息。...此外,我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

4K30

配置Android项目 - 一些重要事情

Studio创建一个新Android项目,它已经生成了gitignore文件,但通常它不包含所有必要规则。...当从IDE运行或调试项目,Android Studio会使用Android SDK工具生成调试证书自动为您APK签名。...proguard Android proguard用来做三件事: 压缩未使用代码 — 帮助你不超出64k限制 优化代码和apk 混淆代码 — 使你APK难以做逆向工程 问题是混淆和代码优化显着增加了编译时间...strict mode Android StrictMode可帮助您检测不同类型问题: 可关闭对象没关闭 主线程读写文件或者访问网络 uri 暴露 … 每当检测到这样问题,它可以显示适当日志或应用程序崩溃...建议你只调试时候打开它并且使用detectAll方法来检测所有类型问题。 ? 这里是当你忘记关闭SQLiteCursor日志例子: ? 模板代码查看StrictMode。

64820

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

因为混淆后代码仍然需要能够被Java虚拟机(JVM)正确地执行。本章将以Minecraft、安卓开发作为经典混淆案例来介绍它。...ProGuard 使用 ProGuard 来混淆Android应用一般需要以下几个步骤: 启用ProGuardAndroid项目中,找到build.gradle文件,然后android节,找到buildTypes...构建应用时候,ProGuard会自动混淆代码。可以通过Android Studio "Build > Generate Signed Bundle / APK..." 菜单来构建应用。...配置ProGuard规则可能会比较复杂,因为你需要找到一个平衡,使得你代码得到足够保护,同时不破坏你应用功能。如果你应用在混淆后崩溃或者出现问题,你可能需要调整你ProGuard规则。...虽然反混淆有其合法和合理用途,如在调试理解和修复混淆代码问题,但是也存在一些可能涉及不道德行为情况: 侵犯版权:没有明确授权情况下反混淆他人代码,可能侵犯了他们版权,因为你正在接触和修改他们知识产权

29830

Android插件化基础3----Android编译打包流程详解

.apk文件其实就是一个压缩包,把文件后缀改成.zip,用压缩软件解压搜就可下图(是mac) ?...相关介绍.png.png PS:这里补充下apkbuilderSDK3.0之前使用apkbuilder去打包,SDK3.0之后就弃用了,而使用sdklib.jar打包apk。...压缩过程ProGuard会从上述Entry Point开始递归遍历,搜索哪些类和类成员使用,对于没有使用类和类成员,就会在压缩端被丢弃,接下来优化过程,那些非Entry Point...默认情况下是跳过,因为程序不会引用它们,有些情况下人们编写代码与类库同一个包下,并且对包内容加以引用,此时需要加入此条声明。...-dontwarn指令、这取决于混淆第三方SDK是否出现警告,需要时候再机上。

2K22

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

默认情况下,Dalvik 限制应用每个 APK 只能使用单个 classes.dex 字节码文件。...通过 ProGuard 移除未使用代码 为版本构建启用代码压缩以运行 ProGuard。启用压缩可确保交付 APK 不含有未使用代码。...使用这些技巧使我们不必应用启用 Dalvik 可执行文件分包,同时还会减小 APK 总体大小。...在此情况下,我们应该通过 ProGuard 应用代码压缩以尽量减小 DEX 文件大小,并移除未使用那部分代码; 由于存在 Dalvik linearAlloc 错误(问题 22586),使用 Dalvik...该情况不应出现在直接从应用代码访问代码上,因为构建工具能识别这些代码路径,但可能在代码路径可见性较低(如使用库具有复杂依赖项)出现

94120

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

默认情况下,Dalvik 限制应用每个 APK 只能使用单个 classes.dex 字节码文件。...通过ProGuard移除未使用代码 为版本构建启用代码压缩以运行 ProGuard。启用压缩可确保交付 APK 不含有未使用代码。...使用这些技巧使我们不必应用启用 Dalvik 可执行文件分包,同时还会减小 APK 总体大小。...在此情况下,我们应该通过 ProGuard 应用代码压缩以尽量减小 DEX 文件大小,并移除未使用那部分代码; 由于存在 Dalvik linearAlloc 错误(问题 22586),使用 Dalvik...该情况不应出现在直接从应用代码访问代码上,因为构建工具能识别这些代码路径,但可能在代码路径可见性较低(如使用库具有复杂依赖项)出现

80710

你必须要懂APK瘦身知识

随着业务复杂度逐渐增加,代码、资源也不断增加,此时你APP大小也增加。从用户层面来说,面对动辄几十兆APP来说非WIFI情况下还是会犹豫要不要下载,不下载你就可能因此失去了一个用户。...它包括相同 ProGuard 规则,但还包括其他字节码一级(方法内和方法间)执行分析优化,以进一步减小 APK 大小和帮助提高其运行速度。...但是,系统渲染每个 VectorDrawable对象需要很长时间,而较大图像需要更长时间才能显示屏幕上。因此,只有显示小图像才考虑使用这些矢量图形。...移除未使用备用资源 我们知道google给我们apk提供了国际化支持,如适应不同屏幕分辨率drawable资源,还有适应不同语言字符串资源等等,但是很多情况下我们只需要一些指定分辨率和语言资源就可以了...目前主流机型都是支持armeabi-v7a,并且armeabi-v7a兼容armeabi。所以一般开发我们只需要使用armeabi-v7a 进行ABI支持。

72530

如何优化您 Android 应用(Go 版)

与此同时,一直与 Google Play 团队合作,与 Android 社区开发人员合作,确保开发人员适当情况下优化他们对这些设备应用体验。...“为了降低崩溃率和减少 ANR,我们使用了 Android 重要功能和 Firebase Crashlytics 进行主动监控,并且设法大约 99.9% 崩溃会话和 ANR 率小于 0.1%...测试 APK ,我们看看 PSS(比例集大小),了解应用程序或游戏设备上冷启动内存量。PSS 测量方式是您应用私有内存加上您应用在设备上使用共享内存比例。...最后,我们使用 APK 分析器了解更多关于我们内存使用情况,以确保我们 PSS 可接受范围内。“ “开始瞄准 SDK 26,以确保用户获得最新 Android 体验。...除了优化游戏着色器,并避免像玩家档案一样检查,游戏平衡文件和强制更新显着加快了游戏开始。启动删除互联网连接并使用反作弊工具可防止玩家游戏中出现任何潜在不当行为,并减少内存使用量。”

1.8K20

Android 混淆那些事儿

通过试验,gradle 2.2之后,defaultProguardFile没有使用sdk目录下proguard-android.txt,而是使用了gradle自带proguard-android.txt...: 参见Proguard官方字段解读 不使用大小写混写类名 -dontusemixedcaseclassnames 默认情况下混淆类名可以包含大小写字符混合。...csh代码方便,我们需要在proguard_rules.pro手动添加抛出异常保留代码行号,并且重命名抛出异常文件名称,这样能方便定位问题: 抛出异常保留代码行号 -keepattributes....jar test.apk 混淆过程中会输出log,混淆后会出现apk同名文件夹,里面包含了混淆后mapping对应文件,新签名打包apk和混淆后资源文件目录。...中资源文件名使用简短无意义名称进行替换,如下面代码所示,AAPT生成resources.arsc和*.ap*把资源文件名称进行替换。

3.2K50

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

随着业务复杂度逐渐增加,代码、资源也不断增加,此时你APP大小也增加。从用户层面来说,面对动辄几十兆APP来说非WIFI情况下还是会犹豫要不要下载,不下载你就可能因此失去了一个用户。...它包括相同 ProGuard 规则,但还包括其他字节码一级(方法内和方法间)执行分析优化,以进一步减小 APK 大小和帮助提高其运行速度。...但是,系统渲染每个 VectorDrawable对象需要很长时间,而较大图像需要更长时间才能显示屏幕上。因此,只有显示小图像才考虑使用这些矢量图形。...移除未使用备用资源 我们知道google给我们apk提供了国际化支持,如适应不同屏幕分辨率drawable资源,还有适应不同语言字符串资源等等,但是很多情况下我们只需要一些指定分辨率和语言资源就可以了...目前主流机型都是支持armeabi-v7a,并且armeabi-v7a兼容armeabi。所以一般开发我们只需要使用armeabi-v7a 进行ABI支持。

1K40

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

但,有经验同学童鞋应该能看出来,这个堆栈是被Proguard还原过! 怎么看?很简单,出错JVM生成堆栈每一个"方法描述",只有“方法名”而没有“方法返回类型”及“方法参数”。...如图3所示,我们发布源码信息会先经过javac编译,再经过proguard混淆,才被打包进发布apk,最终Crash崩溃后Bugly获取到堆栈中有木有源码及行号就要看这两步了。 ?...下面是使用不同编译方法保存源文件名及行号解决方法示例。 命令行javac编译解决方法 javac -g:{lines,source} XXX.java 使用Ant编译解决方法 ?...精神哥总结 Proguard作为非常优秀工具,让我们安装包体积变小了,代码混淆更安全了,代码裁剪优化速度更快了,但确实也埋下了一些坑,增加了我们定位崩溃成本。...跟着精神哥这篇文章把原文件名和行号补上后,绝大部分堆栈问题都可以被解决了! 那么堆栈问题就没了吗?有人曾问我:堆栈里显示A方法调用了D方法,跟着D方法崩溃了,但实际查看代码A并没有调用D方法啊?

1.3K50

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

现在flavor2使用所有三个 ProGuard 规则,因为还应用了来自release代码块规则。...类上添加@Keep可原样保留整个类。方法或字段上添加它可完整保留方法/字段(及其名称)以及类名称。请注意,只有使用注解支持库,才能使用此注解。...使用-keep选项,有许多事项需要考虑;如需了解有关自定义配置文件详细信息,请阅读ProGuard 手册。问题排查一章概述了您可能会在混淆代码遇到其他常见问题。...APK Analyser 将会拆解你应用并让你知道 .apk 文件那个部分占据了大量空间。让我们看一下 Anti-Theft 没有经过优化之前截图。...这是启用了 minify 之后 APK

1.6K10

通过Gradle为APK瘦身

Android Studio proguard-rules.pro 文件被默认添加到新Android 模块,所以你可以该文件简单地添加一些针对该模块规则。...除了缩减Java 代码外,还可以缩减使用资源。 缩减资源 当给App 打包,Gradle 和Gradle Android 插件可以构建期间删除所有未使用资源。...如果你有旧资源忘记删除,那么这个功能可能非常有用。另外一个使用案例是当你导入一个拥有很多资源依赖库,而你只使用了其中一小部分时,你可以通过激活缩减资源来解决这个问题。...如果设置该属性为true,则Android 构建工具将自动判定哪些资源没有被使用,并将它们排除APK 外。使用此功能有一个要求,即必须同时启动ProGuard。...如果你应用只支持一两种语言,那么最终APK ,包含所有语言文件就会浪费许多资源。这时你就可以使用resConfigs 属性来配置你想保留资源,将其余部分删除。

72020

Gradle For Android(9)--自定义构建

它通过应用程序所有代码路径来查找未使用代码并删除它。ProGuard也会重命名你类和属性。这个过程会使得内存占用更小,更难逆向。...用了ProGuard之后,最好重新测试一下整个APP,有可能它仍然把你一些有用代码都移除了,比如说JNI调用Java代码。...启用后,会在第一次启动构建时候启动一个后台进程。当后续构建启动,都会使用这个后台进程,因此会节省一些启动开销。这个进程会在你使用Gradle期间一直存在,而在空闲3个小时后关闭。...这也就意味着IDE第一次启动构建后,后续构建都会比较快。如果你从命令行执行构建的话,Gradle Daemon则是关闭,除非在Properties启用。...如果希望按照ABI分割,则使用abi代码块。 如果你启用了density分割,Gradle会为了每个density创建一个单独APK

65510
领券