5

データベースで遊ぶのは非常に簡単なDBFlowを使用しましたが、DBFlowでSQLCipherを使用する良い例はありますか

私は助けのためにこのリンクをたどりました

Raizlabs/DBFlow

しかし、誰かが簡単な例を提供できれば、簡単な手順で安全なデータベース アプリケーションを作成するのに非常に役立ちます。

4

2 に答える 2

5

ConductedClever によってリンクされている使用法に関するドキュメントはそれほど多くないように見えますが、実際にはこれでほとんどすべてが必要です。言及できるいくつかの詳細を除いて:

そもそもgradleを通過させるために、build.gradleのdbflow-cipher依存関係に@aarを追加する必要がありました。

// build.gradle
def dbflow_version = "3.1.1"
def sqlcipher_version = "3.5.4"

dependencies {
  annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
  compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
  compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}"
  compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}@aar"
  compile "net.zetetic:android-database-sqlcipher:${sqlcipher_version}@aar"
}

暗号シークレットを優先的に変更します。

// SQLCipherHelperImpl.java
public class SQLCipherHelperImpl extends SQLCipherOpenHelper {

  public SQLCipherHelperImpl(DatabaseDefinition databaseDefinition, DatabaseHelperListener listener) {
    super(databaseDefinition, listener);
  }

  @Override
  protected String getCipherSecret() {
    return "your-cipher-secret";
  }
}

dbflow 入門ガイドに従い、データベースが AppDatabase と呼ばれる場合、これは DBFlow をnew DatabaseConfig.Builder(AppDatabase.class)初期化するときに渡す必要があるクラスです。

// AppDatabase.java
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {

  public static final String NAME = "AppDatabase";

  public static final int VERSION = 1;
}

// DatabaseApplication.java
public class DatabaseApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    FlowManager.init(new FlowConfig.Builder(this)
      .addDatabaseConfig(
        new DatabaseConfig.Builder(AppDatabase.class)
          .openHelper(new DatabaseConfig.OpenHelperCreator() {
            @Override
            public OpenHelper createHelper(DatabaseDefinition databaseDefinition, DatabaseHelperListener helperListener) {
              return new SQLCipherHelperImpl(databaseDefinition, helperListener);
            }
          })
          .build())
      .build());
  }
}

データベースをエクスポートし、SQLite クライアントで開いてみてください。これは、暗号化が原因で失敗するはずです。

于 2017-01-23T17:33:06.437 に答える
0

まだ試していませんが、これは公式開発者が SQLcipher の使用について提供している使用法に関するドキュメントです。

SQL暗号とDBFlow

于 2016-11-25T21:33:02.000 に答える