android - 如何保存从android应用程序中提取的数据库

标签 android google-play apk proguard decompiling

我只是想知道,即使您在应用程序中应用混淆器,仍然可以通过提取/破坏您的应用程序来使用您的数据库(数据集,让我们假设测验数据),就像如果您有测验应用程序一样,人们可以轻松提取你的测验数据库(数据集)通过你的apk,我们如何保存它,这样就没有人可以提取或获取它,我发现的一种方法是将我们的应用程序数据库放在网上,这样人们就可以通过网络使用它,就像从服务器一样,如果他/她关闭互联网应用程序应该停止工作。但是如果我们也让它可以离线玩,我们如何保存我们的数据库呢?

最佳答案

最好的选择是使用 SQLCipher:http://sqlcipher.net/sqlcipher-for-android/

我已经成功使用它了,效果很好。

我会为您复制他们的示例,以便您可以看到它有多么简单:

package com.demo.sqlcipher;

import java.io.File;
import net.sqlcipher.database.SQLiteDatabase;
import android.app.Activity;
import android.os.Bundle;

public class HelloSQLCipherActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        InitializeSQLCipher();
    }

    private void InitializeSQLCipher() {
        SQLiteDatabase.loadLibs(this);
        File databaseFile = getDatabasePath("demo.db");
        databaseFile.mkdirs();
        databaseFile.delete();
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
        database.execSQL("create table t1(a, b)");
        database.execSQL("insert into t1(a, b) values(?, ?)", new Object[]{"one for the money",
                                                                        "two for the show"});
    }
}

关于android - 如何保存从android应用程序中提取的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24664174/

相关文章:

android - 如何对使用 ProGuard 混淆的 Android APK 进行逆向工程/反编译?

android - 如何在主线程之外执行和接收来自 AsyncTasks 的结果?

android - 无法在Google Play商店上发布Xamarin.Forms App的APK文件

android - 是什么让 Android 应用程序成为 "market"或 "non-market"?

Android Studio 不会将应用程序推送到手机

android - Flash AIR 3.2 Android Captive Runtime URLLoader 抛出流错误 #2032 本地文件

android - 上传到Alpha测试后,Google Oauth无法正常工作

android - Expo EAS build android apk 在物理设备上崩溃

android - apk2bar 生成包的 Blackberry package-id

android - 在移动设备上停止旋转