AndroidStudio 2.2 のcmakeで 楽々C++開発
2016年5月18日に開かれた「google I/O 2016」
https://events.google.com/io2016/
そこで「Android Studio 2.2 Preview 1」のC++強化の話が出てました
http://tools.android.com/recent/androidstudio22preview2available
なので、いままで苦しめられていた「gradle」から「cmake」に移行
GitHubの以下を参考に資料をまとめてみました。
https://github.com/googlesamples/android-ndk/tree/master-cmake
ただ、2.2はプレビュー版ですし、まだまだ、不便な部分もあるのですが
だいぶ、楽になったので今後期待したいです。
(JAVAの訴訟もあるのでC++に行きたいのかな?)
■AndroidStudio2.2 をダウンロードして実行します。
AndroidStudio2.2プレビュー版は、インストールという手順がなく、ZIPを展開した物をそのまま使用します
(すでにAndroidStudio2.1.1などがインストールされている環境だと安心です)
■プロジェクト作成
「Start a new Android Studio project」を選択し、プロジェクトを作成します。
あとはいつものように
■これでプロジェクト完成
■とりあえず実行してみる
こんなエミュレータが実行、エミュレータの設定は、いろんな資料があるので、ここでは省きます(Hyper-V快適)
動作する事がわかったら、停止
■それではNDK環境へ
まずは「cpp」ディレクトリ作成と「main.cpp」「CMakeLists.txt」を直接作成してください。
[app] +---[src] | +---[main] | | +---[cpp] //ディレクトリ作成 | | | +---main.cpp //ソースの追加 | | | +---CMakeLists.txt //cmakeのmakefile追加
#ifdef __cplusplus extern "C" { #endif #include <jni.h> void Java_com_example_myapplication_MainActivity_initFromJNI(JNIEnv *env, jobject thiz) { int a=10; } #ifdef __cplusplus } #endif
[CMakeLists.txt]
cmake_minimum_required(VERSION 3.4.1) add_library( test-jni SHARED main.cpp ) # Include libraries needed for hello-jni lib target_link_libraries( test-jni log android)
■ファイルを作成したら、AndroidStudioに認識させます。(この辺がまが不便です)
build.gradle (Module: app)を選択し
externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } }
を追加します。
そうすると上に「Sync Now」と出てきますので、それを押してください。
「cpp」ディレクトリに「main.cppが追加されるのと
「External Build Files」に「CMakeLists.txt」が追加されたのがわかります。
■Javaから実行してみよう
「maiin.cpp」 の関数名に関しては NDK の資料を参考にしてください。(命名規則をまちがえるとハングアップします)
javaファイルの「MainActivity」を編集して、C++を呼び出します
■ブレークを設定してデバッグ実行
せっかくなので、C++のソースにブレークポイントを設定して
デバッグ実行
おお、ちゃんと止まりますね、楽々