1
我需要綁定一個靜態數據庫與我的Android應用程序,必須在每次安裝/更新應用程序時進行更換。我不希望它在第一次活動的每一次開始時都被替換。將數據庫放置在資產中似乎不可行。有什麼辦法可以使用AndroidStudio來做到這一點?捆綁SQLite數據庫與Android應用程序
我需要綁定一個靜態數據庫與我的Android應用程序,必須在每次安裝/更新應用程序時進行更換。我不希望它在第一次活動的每一次開始時都被替換。將數據庫放置在資產中似乎不可行。有什麼辦法可以使用AndroidStudio來做到這一點?捆綁SQLite數據庫與Android應用程序
您可以用位編碼的做到這一點:
import java.io.*;
import android.content.Context;
import android.content.res.AssetManager;
...
String dbName = /* db name */
Context context = /* read android context from somewhere */
File dbFile = context.getDatabasePath(dbName);
// Test if DB file has been previously deployed.
if(!dbFile.exists()) {
// Deploy the DB file.
AssetManager assets = context.getAssets();
// Open an input stream on the source db file in assets.
// (Production code will need try/catch/finally around this block)
InputStream in = assets.open("dbname.sqlite");
// Open an output stream on the target location.
OutputStream out = new FileOutputStream(dbFile);
// Copy the contents. (In actual code you would want to
// use a buffer).
int byte;
while((byte = in.read()) != -1) {
out.write(byte);
}
in.close();
out.close();
}
放置在資產數據庫似乎並不可行當然
自述文件建議在build.gardle中添加一行,有兩個build.gardle文件,一個用於項目,另一個用於模塊。哪一個應該更新。據我猜測,它應該是項目之一。這是對的嗎? –
@VipulKumar:「哪一個應該更新」 - 運行時依賴關係,比如'SQLiteAssetHelper'庫,進入模塊的'build.gradle'文件。 Gradle插件進入項目的'build.gradle'文件。 – CommonsWare