AndroidStudioでSQLiteを暗号化するSQLCipherを使う

AndroidStudioでSQLiteを暗号化するSQLCipherを使う手順の忘備録。
SQLCipherのOpen SourceのページからSQLCipher For Androidをダウンロードします。
sqlcipher-download
ダウンロードしたSQLCipher+for+Android+v3.1.0.zipを展開します。展開すると次のようになっています。これらをAndroid Studioに適切にコピーすればbuild.gradleを編集しなくてもSQLCipherが使えるようになります。
sqlcipher-files
 
では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

コピーが完了すると次のようになっているはずです。
finish-copyed
 
これだけです。以上でSQLCipherの環境が整いました。
では早速動作テストを行ってみましょう。コーディングサンプルにあるHelloSQLCipherActivityを実装してみます。
[java]
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import net.sqlcipher.database.SQLiteDatabase;
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.と表示され、開けないことがわかります。
invalid-file-format
以上でSQLCipherの動作テストは完了です。
参考:AndroidStudioでSQLiteを暗号化するSQLCipherを使う

Android StudioでOpenCV for Androidを使用する

Android StudioでOpenCVを使えるようにする手順です。
OpenCVサイトからOpenCV-2.4.9-android-sdk.zipをダウンロード。
OpenCV-2.4.9-android-sdkを展開する。例えば次のようにする。

/Users/h.kaneda/AndroidStudioProjects/OpenCV-2.4.9-android-sdk/

Android Studioを開き、「Import Project…」を選択。
展開したOpenCV-2.4.9-android-sdkフォルダを選択する。OKをクリック。
select-sdk-folder
Nextクリック。
import-project
Nextクリック。
import-project2
Nextクリック。
import-project3
Nextクリック。
import-project4
SDKにチェックを入れて、Nextクリック。
import-project5
Nextクリック。
import-project6
Finishクリック。
import-project7
インポートウィザートが完了したら、メニューからビルドする。
Build > Rebuild Project
rebuild-project
 
プロジェクトを閉じる。
File > Close Project
close-project
 
新しくプロジェクトを作成するか、OpenCVを追加したい既存のプロジェクトを開く。
そして
File > Import Module…
file-import-module
.imlファイルを選択する。
今回は

OpenCV-2.4.9-android-sdk/sdk/java/sdk.iml

を選択してNextクリック。
select-iml
 
Finishクリック。
new-module-option
openCVLibrary249という名前でライブラリがインポートされた。
import-library
app/build.gradleのdependenciesにライブラリを追加。

compile project(':openCVLibrary249')

Gradleファイルを変更したので
Tools > Android > Sync Project with Gradle Files を選択する。
sync-project-with-gradle-files
インポート時にorg.opencv.androidが補完されればうまくいっている。
check-import
 
OpenCVではライブラリを動的リンクすることも、静的リンクする事もできる。動的リンクの場合は、OpenCVを別途インストールするようにメッセージが出る。今回は静的リンクすることにした。
app/src/mainを右クリックし、New > Directory
new-directory
jniLibsフォルダを作成する。
create-jniLibs-directory
作成したapp/src/main/jniLibsフォルダに、OpenCV-2.4.9-android-sdk/sdk/native/libsの中身をコピーする。
jniLibs
以上。これでAndroid StudioでOpenCVの開発が出来る。
参考 How to work with OPENCV4ANDROID in Android Studio