AndroidStudioでSQLiteを暗号化するSQLCipherを使う手順の忘備録。 SQLCipherのOpen SourceのページからSQLCipher For Androidをダウンロードします。
ダウンロードしたSQLCipher+for+Android+v3.1.0.zipを展開します。展開すると次のようになっています。これらをAndroid Studioに適切にコピーすればbuild.gradleを編集しなくてもSQLCipherが使えるようになります。
ではAndroid Studioにコピーしていきましょう。 src > main の中に「assets」フォルダを作成します。 assetsの中身をAndroid Studioのassetsフォルダ内にコピーします。 libsの中身のうち、jarファイルだけをapp > libs フォルダの中にコピーします。
commons-codec.jar guava-r09.jar sqlcipher.jar
src > main の中に「jniLibs」フォルダを作成します。 libsの中身のうち、フォルダをsrc > main > jniLibs フォルダの中にコピーします。
armeabi armeabi-v7a x86
コピーが完了すると次のようになっているはずです。
これだけです。以上でSQLCipherの環境が整いました。 では早速動作テストを行ってみましょう。コーディングサンプルにあるHelloSQLCipherActivityを実装してみます。 [java] import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import net.sqlcipher.database.SQLiteDatabase;</code> import java.io.File; public class HelloSQLCipherActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hello_sqlcipher); 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"}); } .... [/java] 実行するとアプリケーションのフォルダにデータベースが作成されています。
/demo/demo/アプリケーションパッケージ名/databese/demo.db
実際にsqliteのデータベースが暗号化され、開けないことを確認します。 SQLite Database Browser で開いたところ、Invalid file format.と表示され、開けないことがわかります。
以上でSQLCipherの動作テストは完了です。 参考:AndroidStudioでSQLiteを暗号化するSQLCipherを使う