android studio1.4でのNDKデバッグ方法
Android Studioがこの夏からNDKに標準対応した。
対応の中身は、NDKをSDK Managerからダウンロードできるようになったこと。
そして、NDK(C++)をandroid studioのメイン画面でソースを眺めながらadbデバッグできるようになったことだ。
※ただし、現時点では国内メーカなどのサードパーティスマホは実機デバッグはできない。
Google製のスマホのみでデバッグできる。
NDKのコンパイルとデバッグの手順はつぎのとおりだ。
1. JavaDevelopmentKit 1.7をインストールする
2. Android Studio 1.4 RCをインストールする
3. SDK ManagerでSDK 23, SDK Build Tool, SDK Tool, Platform-Tool, NDK をインストールする
4. .bash_profile にパスを設定する
PATH="":/Applications/Xcode.app/Contents/Developer/usr/bin/export PATH=/sdk/platform-tools:export ANDROID_HOME=/(path to sdk)/sdkexport PATH=:/toolsexport JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
5. local.propertiesの編集
ndk.dirディレクティブを追加する。
ndk.dir=/(SDKフォルダへのパス)/sdk/ndk-bundlesdk.dir=/(SDKフォルダへのパス)/sdk
6. build.grade の編集
repositoriesディレクティブをjcenter()に変更する。
dependenciesディレクティブをexperimentalに変更する
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle-experimental:0.2.0' }}allprojects { repositories { jcenter() }}
7. gradle-wrapper.properties の編集
distributionUrlディレクティブをgradle2.5に変更する。
distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
8. app/build.gradleを編集する。
apply pluginディレクティブをmodel.applicationに変更する。
全体の記述をmodel.applicationプラグイン用に変える。
・model { 追加
・compileSdkVersion、buildToolsVersionを最新に変更
・=, += 追加
・.with { 追加
・compileOptions.with { 追加
・debuggable 追加
apply plugin: 'com.android.model.application'model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.1" defaultConfig.with { applicationId = "your.app" minSdkVersion.apiLevel = 10 targetSdkVersion.apiLevel = 19 versionCode = 1 versionName = "1.0" } } compileOptions.with { sourceCompatibility=JavaVersion.VERSION_1_7 targetCompatibility=JavaVersion.VERSION_1_7 } android.ndk { moduleName = "nativeModuleName" CFlags += "-DANDROID_NDK -std=c++11" ldLibs += ["GLESv1_CM", "dl", "log", "android", "EGL"] stl = "stlport_static" } android.buildTypes { debug { ndk.with { debuggable = true } } release { minifyEnabled = false proguardFiles += file('proguard-rules.pro') } } android.productFlavors { create("x86") { ndk.with { abiFilters += "x86" } } create("armv7") { ndk.with { abiFilters += "armeabi-v7a" } } create("arm") { ndk.with { abiFilters += "armeabi" } } create("mips") { ndk.with { abiFilters += "mips" } } create("fat") { } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:20.0.0'}
9. フォルダ構成やAndroidManifest.xmlやjniは変更しなくてよい
10. Run - Edit Configuration で AndroidNative設定を追加する
・Moduleを選択する
・デバッガは lldb
11. Run - Debug で AndroidNative設定を実行する
12. デバッガプロセスにアタッチするまで10秒前後かかる
Now Launching Native Debug Session
Debugger attached to process 2867
13. デバッガが Connect してからデバッグ可能となるまで1分程度かかる
14. Native C++ソースにブレークボイントを設定したり、ステップ実行ができるのはJavaソースと同様だ
(参照)
http://tools.android.com/tech-docs/new-build-system/gradle-experimental