Android開發中, 將apk和SQLite資料庫一起打包釋出 (沒root手機)
阿新 • • 發佈:2019-01-31
要把SQLite資料庫與apk一起打包很簡單,只要把資料庫匯出,並放在assets資料夾中,app首次開啟時載入就可以了。
但有個問題:沒root的手機不能通過DDMS檢視/data/的檔案(資料庫儲存在這裡)。我們只能通過adb shell來獲取資料庫檔案了。
開啟命令列,輸入以下命令:
run as [package_name];
cd /data/data/[package_name]/databases
cat test.db > /mnt/sdcard/test.db
ps. [package_name]輸入你的應用程式的包名。
然後就可以在sdcard裡多了一個test.db檔案了,將其複製到assets檔案中,app首次開啟時載入就好。
private static final String DATABASE_PATH = "/data/data/com.leo.test/databases/"; private static final String DATABASE_NAME = "test.db"; public void initDB() { File fileDB = new File(DATABASE_PATH + DATABASE_NAME); if(!fileDB.exists()) { File file = new File(DATABASE_PATH); if(!file.exists()) file.mkdirs(); try { InputStream is = mContext.getAssets().open(DATABASE_NAME); OutputStream os = new FileOutputStream(DATABASE_PATH + DATABASE_NAME); byte[] buffer = new byte[1024]; int len; while((len = is.read(buffer)) > 0) { os.write(buffer, 0, len); } os.flush(); os.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } } }