Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Don';t在proguard中混淆硬编码字符串_Android_String_Proguard_Greendao - Fatal编程技术网

Android Don';t在proguard中混淆硬编码字符串

Android Don';t在proguard中混淆硬编码字符串,android,string,proguard,greendao,Android,String,Proguard,Greendao,我将使用proguard混淆我的源代码 我的源代码定义了一些硬代码字符串,我不知道如何使prevent proguard混淆我的字符串值(下面的示例中是“tbl_people”) 阶级 如果字符串混淆,SQLite将无法使用该字符串创建表。 有许多这样的硬编码字符串。我如何配置proguard来执行此操作 欢迎提出任何建议 ====================================================================== 更新: 这是logcat: 07

我将使用proguard混淆我的源代码

我的源代码定义了一些硬代码字符串,我不知道如何使prevent proguard混淆我的字符串值(下面的示例中是“tbl_people”)

阶级

如果字符串混淆,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
07-13 17:55:12.310:E/AndroidRuntime(11148):致命异常:main
07-13 17:55:12.310:E/AndroidRuntime(11148):进程:com.myapp,PID:11148
07-13 17:55:12.310:E/AndroidRuntime(11148):java.lang.RuntimeException:无法创建应用程序com.myapp.AudioPhotoApplication:a.a.a.d:无法初始化DAOConfig
07-13 17:55:12.310:E/AndroidRuntime(11148):在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4470)上
07-13 17:55:12.310:E/AndroidRuntime(11148):在android.app.ActivityThread.access$1500(ActivityThread.java:144)
07-13 17:55:12.310:E/AndroidRuntime(11148):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
07-13 17:55:12.310:E/AndroidRuntime(11148):在android.os.Handler.dispatchMessage(Handler.java:102)上
07-13 17:55:12.310:E/AndroidRuntime(11148):在android.os.Looper.loop(Looper.java:136)
07-13 17:55:12.310:E/AndroidRuntime(11148):位于android.app.ActivityThread.main(ActivityThread.java:5140)
07-13 17:55:12.310:E/AndroidRuntime(11148):位于java.lang.reflect.Method.Invokenactive(本机方法)
07-13 17:55:12.310:E/AndroidRuntime(11148):在java.lang.reflect.Method.invoke(Method.java:515)
07-13 17:55:12.310:E/AndroidRuntime(11148):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
07-13 17:55:12.310:E/AndroidRuntime(11148):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
07-13 17:55:12.310:E/AndroidRuntime(11148):在dalvik.system.NativeStart.main(本机方法)
07-13 17:55:12.310:E/AndroidRuntime(11148):原因:a.a.a.d:无法初始化DAOConfig
07-13 17:55:12.310:E/AndroidRuntime(11148):a.a.a.b.a.(未知来源)
07-13 17:55:12.310:E/AndroidRuntime(11148):在a.a.a.b.a(未知来源)
07-13 17:55:12.310:E/AndroidRuntime(11148):在com.myapp.database.a.(未知来源)
07-13 17:55:12.310:E/AndroidRuntime(11148):在com.myapp.AudioPhotoApplication.onCreate(未知来源)
07-13 17:55:12.310:E/AndroidRuntime(11148):在android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
07-13 17:55:12.310:E/AndroidRuntime(11148):在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4467)上
2007-13 17:55:12.310:E/AndroidRuntime(11148):。。。10多

07-13 17:55:12.310:E/AndroidRuntime(11148):由以下原因引起:java.lang.NoSuchFieldException:TABLENAME 07-13 17:55:12.310:E/AndroidRuntime(11148):位于java.lang.Class.getField(Class.java:724) 2007-13 17:55:12.310:E/AndroidRuntime(11148):。。。还有16个
我认为问题来自字符串,因为当我保留处理数据库的类时,我的应用程序不再崩溃

======================================================================
更新2: 问题不是来自字符串值,而是字符串名称。我的问题是:
您确定这就是问题所在,因为ProGuard不会像常见问题解答中所述那样混淆字符串:

不可以。程序代码中的字符串加密必须是完全可逆的,因此它只会提高混淆级别。它增加了代码的占用空间。然而,根据大众的需求,ProGuard的Android闭源代码兄弟DexGuard确实提供了字符串加密,以及更多针对静态和动态分析的保护技术

类似的问题(但这家伙希望字符串被混淆),proguard的作者回答:

我认为proguard不会混淆类中的字符串,只会混淆方法/字段/类名。@greywolf82我已经更新了上面的问题。Tks的帮助原因:java.lang.NoSuchFieldException:TABLENAME。您的类似乎没有同步地被混淆。一个是模糊的,另一个仍然有原始名称作为参考。@Dawnkepper tks,你是对的,我发现了我的问题。我想这就是问题所在。我已经更新了上述问题的详细信息。谢谢你的回答:)tks,我发现问题不在于字符串值,而在于字符串名称。
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