當 App 加入額外下載資源檔(obb)時, 套用 google 提供的 Library 當使用 proguard 後執行下載的功能就會出錯, 其主要原因在於 DownloadsDB 內的
這是建立 SQLite 資料庫, 當proguard後該 class 內的 onCreate 運作就會失敗, 主要原因是建立 table 的方市不是直接下 SQL 語法, 而是採物件式建立 table , 至於哪一部分被更動目前沒有深入追查, proguard 該如何設定讓其可以正常運作也不知(研究不多), 但最簡單的解決方式就是改成用SQL語法直接建立就可以了protected static class DownloadsContentDBHelper extends SQLiteOpenHelper {..}
public void onCreate(SQLiteDatabase paramSQLiteDatabase) { Class<?>[] arrayOfClass = DownloadsDB.class.getDeclaredClasses(); int numClasses = arrayOfClass.length; for (int i = 0; i < numClasses; i++) { Class<?> localClass = arrayOfClass[i]; if (BaseColumns.class.isAssignableFrom(localClass)) { try { Field localField1 = localClass.getDeclaredField("SCHEMA"); Field localField2 = localClass.getDeclaredField("TABLE_NAME"); String[][] arrayOfString = (String[][]) localField1.get(null); paramSQLiteDatabase.execSQL(createTableQueryFromArray( (String) localField2.get(null), arrayOfString)); } catch (Exception localException) { while (true) localException.printStackTrace(); } } } }