我想在代码中混淆一些模型。
我知道我可以忽略整个模型包,但我不想这样做。
我尝试了一些混淆器调整并检查了所有相关帖子,但无济于事。 ORMlite 不断抛出java.lang.RuntimeException: Unable to create application ...App: java.lang.IllegalArgumentException: Foreign field class ....f.p does not have id field
。我检查了注释是否仍然存在dex2jar https://code.google.com/p/dex2jar/ and jd http://jd.benow.ca/,而且它仍然在那里。
我有这个混淆器配置(还有更多混淆其他部分的配置):
攻击性的东西:
-mergeinterfacesaggressively
-allowaccessmodification
-optimizationpasses 5
-verbose
-dontskipnonpubliclibraryclasses
-dontpreverify
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
保存各种框架所需的信息:
-keepattributes *Annotation*
-keepattributes Signature
-keepattributes EnclosingMethod
ORMLITE 相关:
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }
我错过了什么还是这根本不可能?
由于 ORMLite 使用反射来保存或保留数据,因此它们需要未混淆的实体名称(即用于保存或保留数据的类)。
抛出此异常是因为 ORMLite 试图为其表查找实体类,但无法找到具有相似名称的类和成员。
只需使用以下代码忽略您的实体类,以免其被混淆:
-keep class com.xyz.components.**
-keepclassmembers class com.xyz.components.** { *; }
其中 com.xyz.components 是实体类的包。
我希望这有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)