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追加


[main.cpp]

#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++のソースにブレークポイントを設定して

デバッグ実行

おお、ちゃんと止まりますね、楽々