やりたいこと
- AndroidのEclipseプロジェクトを、そのまま環境をいじることなく、AndroidStudioで開発したい。
- ndk-build使用のNativeライブラリ(典型的には、上記プロジェクトに付随しているもの)をAndroidStudioのビルド環境に追加したい。
AndroidStudio 2.2.3、書いている時点で最新のコンパイル・ビルド環境を使用して説明しています。
AndroidStudioにインポートする
Eclipseで自動生成したものであれば、ルート直下に以下のbuild.gradleを落とし、AndroidStudioでインポートするだけです。環境に合わせて、適宜修正してください。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
androidTest.setRoot('tests')
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Nativeライブラリプロジェクトも一緒にインポートする場合は、後半の操作で生成されるexternalNativeBuild設定を最初から記述してインポートして構いません。
ndk-build使用ライブラリを追加する
ProjectツールウィンドウのAndroidビューで、モジュール(上記ケースでは、兼モジュールのプロジェクト)を右クリッックし、コンテキストメニューから[Link C++ Project with Gradle]を選択します。
Build Systemのプルダウンメニューで[ndk-build]を選択し、Project PathでAndroid.mkを指定します。同じディレクトリにApplication.mkがあれば一緒に取り込んでくれます。(典型的にはjniディレクトリ直下に2つそろってあるはず。)
正常に取り込まれれば、External Build Files グループに表示されます。
build.gradleを開くと、externalNativeBuild設定が追記されています。
android {
externalNativeBuild {
ndkBuild {
path 'jni/Android.mk'
}
}
}
環境更新時は都度Gradleのsync と Build>Refresh Linked C++ Projectsを実行して同期をとります。
Build> Analyze APK...でAPKを開いてみると、ちゃんとライブラリが取り込まれているのが確認できます。
詳細は、プロジェクトへの C / C++ コードの追加を参照してください。
参考までに、NDK Rev.10あたりまでバンドルされていたHelloJniサンプルをデュアル環境化したものをここに置いておきます。