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

使用Proguard缩小时出现的运行时问题

使用Proguard缩小代码时可能会出现以下运行时问题:

  1. 类或方法找不到:Proguard会删除未使用的类和方法,但有时候会误删被动态调用的代码。解决方法是在Proguard配置文件中添加保留规则,以确保这些类和方法不会被删除。
  2. 反射相关问题:Proguard会混淆类和方法的名称,这可能导致反射调用失败。解决方法是在Proguard配置文件中添加保留规则,以确保反射相关的类和方法不会被混淆。
  3. 资源文件丢失:Proguard可能会删除未使用的资源文件,导致运行时找不到这些资源。解决方法是在Proguard配置文件中添加保留规则,以确保这些资源文件不会被删除。
  4. 库冲突:Proguard可能会删除未使用的库文件,但如果其他库依赖于这些库文件,则会导致运行时错误。解决方法是在Proguard配置文件中添加保留规则,以确保这些库文件不会被删除。
  5. 代码逻辑错误:Proguard对代码进行了混淆和优化,可能会导致代码逻辑错误。解决方法是在Proguard配置文件中添加保留规则,以确保关键代码不会被混淆或优化。

总结:使用Proguard缩小代码可能会导致类或方法找不到、反射相关问题、资源文件丢失、库冲突和代码逻辑错误等运行时问题。为了解决这些问题,需要在Proguard配置文件中添加保留规则,以确保关键代码、类、方法和资源文件不会被删除或混淆。

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

相关·内容

因为Android M权限问题导致的"Permission Denial: reading com.android.providers.media.MediaProvider"解决办法

最后查明是因为API过高权限访问有修改, 在API级别>=23时, 权限访问被分为三个级别, 分别为”PROTECTION_NORMAL, PROTECTION_DANGEROUS, 和PROTECTION_SIGNATURE(还有两个标志可以和SIGNATURE联合使用才有意义)”. PROTECTION_NORMAL是普通权限, 通过manifest文件在安装时被授予. PROTECTION_SIGNATURE是签名权限, 通过”检查manifest和app签名是否匹配app中声明的权限”在安装时授予. 对于 PROTECTION_DANGEROUS, 不仅需要在manifest中声明, 还需要在运行时通过requestPermissions获得, 也就是弹出来一个个对话框, 让用户确认是否授予app这些权限. 这些是常见PROTECTION_DANGEROUS权限, 如果你在程序中使用了, 那么在API>=23, 很可能会不正常工作. ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ADD_VOICEMAIL BODY_SENSORS CALL_PHONE CAMERA GET_ACCOUNTS PROCESS_OUTGOING_CALLS READ_CALENDAR READ_CALL_LOG READ_CELL_BROADCASTS READ_CONTACTS READ_EXTERNAL_STORAGE READ_PHONE_STATE READ_SMS RECEIVE_MMS RECEIVE_SMS RECEIVE_WAP_PUSH RECORD_AUDIO SEND_SMS USE_SIP WRITE_CALENDAR WRITE_CALL_LOG WRITE_CONTACTS WRITE_EXTERNAL_STORAGE

02
领券