DX・デジタルトランスフォーメーション

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版

ブロックチェーン・暗号技術 | android | iOS | Web | アプリの著作権 | 日本のなりたち | 禅・大乗仏教 | 新しい社会

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

https://github.com/googlesamples/android-ndk