2015-02-18 4 views
0

Я должен отображать некоторые данные из базы данных даже после установки приложения. Для этого я пишу скрипт для этих операций вставки. И при повторной установке я выполняю этот скрипт, сохраненный на sdcard с помощью db.execSQL (toExec); заявление. Используя следующий фрагмент программы наглядноSqlite База данных не вставлена ​​Использование скрипта в Proguard Build

//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.** 

Я не могу понять, что происходит.

Пожалуйста, помогите ...

+0

Предоставьте свой код, пожалуйста – Peregreen

+0

Я добавил код, можете ли вы указать, где я ошибаюсь – HemangNirmal

+1

ваши классы DB и другие поля переименовываются в Proguard. Вы должны их исключить – Jim

ответ

1

я обнаружил, что классы БД и другие поля переименовываются по Proguard. Как @jim прокомментировал. Поэтому я добавил следующие инструкции по конфигурированию в ProGuard-project.txt файла для исправленной

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

где com.db.models это имя пакета, где ваши классы объектов базы данных сохраняются.

Смежные вопросы