android - Sqlite 数据库未插入在 Proguard 构建中使用脚本

标签 android mysql sqlite proguard dexguard

即使卸载应用程序后,我也必须显示数据库中的一些数据。 为此,我正在为插入操作编写脚本。 在重新安装时,我正在使用 db.execSQL(toExec); 执行保存在 SD 卡上的脚本。陈述。 使用以下代码 fragment

//write code to execute script from file 
                        SQLiteDatabase db = helper.getWritableDatabase();
                        BufferedReader reader = null;
                        try {
                            reader = new BufferedReader(new FileReader(Constants.DIR_PATH+"/"+Constants.SCRIPT_FILE_NAME));
                            String line;
                            while((line = reader.readLine())!=null)
                            {
                                line.trim();
                                AppLog.d(TAG, "Execute script with line: "+line);
                                try
                                {
                                    db.execSQL(line);
                                }
                                catch(SQLiteException e)
                                {
                                    AppLog.d(TAG, "Sqlite Excp with Line: "+line+e);
                                }
                            }
                        } catch (FileNotFoundException e1) {
                            // TODO Auto-generated catch block
                            AppLog.d(TAG, "File Not Found to execute Script"+e1);
                        }
                        catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

这在正常构建中工作得很好。 但插入不是在 Proguard 构建中完成的。 另请注意,对于数据库操作,我使用 ORMLite。并且在执行脚本时数据库已经创建

我在 proguard-project.txt 中添加了以下属性

-keep class com.j256.**
-keepclassmembers class com.j256.** {
            *;
      }
-keep public class android.database.sqlite.**

我不知道发生了什么。

请帮忙...

最佳答案

我发现数据库类和其他字段正在被 Proguard 重命名。 正如@jim 评论的那样。 因此,我在 proguard-project.txt 文件中添加了以下配置语句来解决问题

-keep class com.db.models.**
-keepclassmembers class com.db.models.** { *; }  

其中 com.db.models 是保存数据库实体类的包名称。

关于android - Sqlite 数据库未插入在 Proguard 构建中使用脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28577491/

相关文章:

android - 无法在发布 apk 时访问远程 API,应用程序具有互联网权限

ios - OSStatus-43 错误

android - 是否可以在快速 blox 聊天中发送音频文件和 doc/pdf 文件

android - 如何从谷歌分析中获取推荐人/Activity 来源

两种选项之间的 MySQL 查询性能

mysql - 连接表结果 Google BigQuery

mysql - 子查询别名后不断出现语法错误(发生在不同的查询中)

android - 带有来自数据库的图像的 GridView

java - SQLite 'INSERT OR REPLACE INTO' 不正确的行为

android - jQuery mobileTaphold 事件在模拟器上不起作用?