不要混淆Proguard中的硬编码字符串

Tai Dao

我将使用proguard混淆源代码。

我的源代码定义了一些硬编码字符串,但我不知道如何防止proguard混淆我的String值(在下面的示例中为“ tbl_people”)

public class MyDaoObject {
  public static final String TABLENAME = "tbl_people"; 
  //other database code
}

如果字符串混淆,SQLite将无法使用该字符串创建表。有很多像这样的硬编码字符串。如何配置proguard来做到这一点?

任何建议都欢迎。

================================================== ==
更新:

这是logcat:

07-13 17:55:12.310: E/AndroidRuntime(11148): FATAL EXCEPTION: main
07-13 17:55:12.310: E/AndroidRuntime(11148): Process: com.myapp, PID: 11148
07-13 17:55:12.310: E/AndroidRuntime(11148): java.lang.RuntimeException: Unable to create application com.myapp.AudioPhotoApplication: a.a.a.d: Could not init DAOConfig
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4470)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.app.ActivityThread.access$1500(ActivityThread.java:144)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.os.Handler.dispatchMessage(Handler.java:102)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.os.Looper.loop(Looper.java:136)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.app.ActivityThread.main(ActivityThread.java:5140)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at java.lang.reflect.Method.invokeNative(Native Method)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at java.lang.reflect.Method.invoke(Method.java:515)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at dalvik.system.NativeStart.main(Native Method)
07-13 17:55:12.310: E/AndroidRuntime(11148): Caused by: a.a.a.d: Could not init DAOConfig
07-13 17:55:12.310: E/AndroidRuntime(11148):    at a.a.a.b.a.<init>(Unknown Source)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at a.a.a.b.a(Unknown Source)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at com.myapp.database.a.<init>(Unknown Source)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at com.myapp.AudioPhotoApplication.onCreate(Unknown Source)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
07-13 17:55:12.310: E/AndroidRuntime(11148):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4467)
07-13 17:55:12.310: E/AndroidRuntime(11148):    ... 10 more
07-13 17:55:12.310: E/AndroidRuntime(11148): Caused by: java.lang.NoSuchFieldException: TABLENAME
07-13 17:55:12.310: E/AndroidRuntime(11148):    at java.lang.Class.getField(Class.java:724)
07-13 17:55:12.310: E/AndroidRuntime(11148):    ... 16 more

我认为问题来自字符串,因为当我保留处理数据库的类时,我的应用程序不再崩溃!

================================================== ==
更新2:问题不是来自字符串值,而是字符串名称。这是我的问题:https : //groups.google.com/forum/#!msg/greendao/tyqjrx2otVo/PHExbn4iZk8J

柴油动力

您确定这是问题所在,因为ProGuard不会混淆其常见问题解答中所述的字符串:

否。根据定义,程序代码中的字符串加密必须完全可逆,因此只能提高混淆级别。它增加了代码的占用空间。但是,由于普遍需求,ProGuard的Android开源同胞DexGuard确实提供了字符串加密,以及更多的针对静态和动态分析的保护技术

类似的问题(但那家伙希望对字符串进行混淆),proguard的作者回答:https : //stackoverflow.com/a/12665420/1643188

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不要混淆Proguard中的硬编码字符串

来自分类Dev

避免嵌套KVO键路径中的硬编码字符串的最佳方法

来自分类Dev

与C ++中带引号的硬编码字符串进行比较

来自分类Dev

如何忽略“登录Android Studio”中的所有硬编码字符串?

来自分类Dev

为什么sys.stdin中的字符串与脚本中的硬编码字符串不同?

来自分类Dev

PHP中的编码字符串

来自分类Dev

Lua字符串追加函数大小与硬编码字符串

来自分类Dev

如何在* .Designer.cs C#中替换标签文本的硬编码字符串?

来自分类Dev

字符串中的编码字符阻止提交

来自分类Dev

Python:JSON中无法识别字符串变量,但硬编码字符串有效(Instagram API)

来自分类Dev

Python:JSON中无法识别字符串变量,但硬编码字符串有效(Instagram API)

来自分类Dev

检查类型是否属于没有硬编码字符串的名称空间

来自分类Dev

Android(Java):Parse.com是否不订阅不是硬编码字符串的频道?

来自分类Dev

忽略记录器语句上的硬编码字符串-IntelliJ

来自分类Dev

颤振\ n \ n除非硬编码字符串,否则不换行

来自分类Dev

硬编码字符串时,查询的SQLDataSourceParameter参数不起作用

来自分类Dev

Android(Java):Parse.com是否不订阅不是硬编码字符串的频道?

来自分类Dev

如何为全局调用创建枚举预期的硬编码字符串

来自分类Dev

substringWithRange适用于硬编码字符串,但不适用于用户输入的字符串

来自分类Dev

substringWithRange适用于硬编码字符串,但不适用于用户输入的字符串

来自分类Dev

解码Java中的编码字符串?

来自分类Dev

如何在Angularjs中编码字符串?

来自分类Dev

NodeJ中的URL编码字符串

来自分类Dev

如何在Eclipse中编码字符串?

来自分类Dev

如何在Android中制作编码字符串?

来自分类Dev

如何在文件内容中编码字符串?

来自分类Dev

在utf8中编码字节字符串

来自分类Dev

如何在SQL CHAR中编码字符串

来自分类Dev

编码和解码字符串中的差异

Related 相关文章

  1. 1

    不要混淆Proguard中的硬编码字符串

  2. 2

    避免嵌套KVO键路径中的硬编码字符串的最佳方法

  3. 3

    与C ++中带引号的硬编码字符串进行比较

  4. 4

    如何忽略“登录Android Studio”中的所有硬编码字符串?

  5. 5

    为什么sys.stdin中的字符串与脚本中的硬编码字符串不同?

  6. 6

    PHP中的编码字符串

  7. 7

    Lua字符串追加函数大小与硬编码字符串

  8. 8

    如何在* .Designer.cs C#中替换标签文本的硬编码字符串?

  9. 9

    字符串中的编码字符阻止提交

  10. 10

    Python:JSON中无法识别字符串变量,但硬编码字符串有效(Instagram API)

  11. 11

    Python:JSON中无法识别字符串变量,但硬编码字符串有效(Instagram API)

  12. 12

    检查类型是否属于没有硬编码字符串的名称空间

  13. 13

    Android(Java):Parse.com是否不订阅不是硬编码字符串的频道?

  14. 14

    忽略记录器语句上的硬编码字符串-IntelliJ

  15. 15

    颤振\ n \ n除非硬编码字符串,否则不换行

  16. 16

    硬编码字符串时,查询的SQLDataSourceParameter参数不起作用

  17. 17

    Android(Java):Parse.com是否不订阅不是硬编码字符串的频道?

  18. 18

    如何为全局调用创建枚举预期的硬编码字符串

  19. 19

    substringWithRange适用于硬编码字符串,但不适用于用户输入的字符串

  20. 20

    substringWithRange适用于硬编码字符串,但不适用于用户输入的字符串

  21. 21

    解码Java中的编码字符串?

  22. 22

    如何在Angularjs中编码字符串?

  23. 23

    NodeJ中的URL编码字符串

  24. 24

    如何在Eclipse中编码字符串?

  25. 25

    如何在Android中制作编码字符串?

  26. 26

    如何在文件内容中编码字符串?

  27. 27

    在utf8中编码字节字符串

  28. 28

    如何在SQL CHAR中编码字符串

  29. 29

    编码和解码字符串中的差异

热门标签

归档