Android开发中, 将apk和SQLite数据库一起打包发布 (没root手机)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Leo_eight/article/details/51598655

要把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();
        }
    }
}


猜你喜欢

转载自blog.csdn.net/Leo_eight/article/details/51598655