昨日のよると今日にかけて、androidのdebug buildを試しました。
debug buildしなくても、問題ないなと思っていましたが、
androidで落ちることがあったので、原因をしるために必要だと思い
導入することに。
通常でandroid studioでdebug実行しても、ブレイクポイントで止まりません。
以下のサイトに、android studioでdebug実行できるという記事がありました。
http://discuss.cocos2d-x.org/t/cocos2d-x-android-studio-ndk-build-c-debug-works/34789
しかし、ここに書かれていることを実行しても、ブレイクポイントで止まりません。
そこで、cocos2d-x-3.16で新しくプロジェクトを作って、ブレイクポイントで止まるかどうか試して見ると、ブレイクポイントでとまりました!
上記で書かれてあるNDKの設定を変えなくとも、defaultのプロジェクトでも、
すでにbreakポイントで止まるようになっているので、上記は当てはめなくても大丈夫です。
結局新しいプロジェクトを作って、ソースを移植することで、debug実行できる
環境を整えることにしました。
諸々の環境を整えるのに、ほとんど1日使いました。
色々な知識は身についたけれど、この知識は必要ないでしょう。
debugには、NDKのversionがかなり影響するようなので、不用意にアップデートすると動かなくなります。
非常にめんどくさいです。
build.gradleは以下になります。
android { compileSdkVersion 23 buildToolsVersion '25.0.0' defaultConfig { applicationId "application id" minSdkVersion 21 targetSdkVersion 23 versionCode 1 versionName "1.0" externalNativeBuild { ndkBuild { if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) { // skip the NDK Build step if PROP_NDK_MODE is none targets 'MyGame' arguments 'NDK_TOOLCHAIN_VERSION=4.9' arguments 'APP_PLATFORM=android-'+PROP_APP_PLATFORM def module_paths = [project.file("../../cocos2d").absolutePath, project.file("../../cocos2d/cocos").absolutePath, project.file("../../cocos2d/external").absolutePath] if (Os.isFamily(Os.FAMILY_WINDOWS)) { // should use '/' module_paths = module_paths.collect {it.replaceAll('\\\\', '/')} arguments 'NDK_MODULE_PATH=' + module_paths.join(";") } else { arguments 'NDK_MODULE_PATH=' + module_paths.join(':') } arguments '-j' + Runtime.runtime.availableProcessors() abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String}) } } } } sourceSets.main { java.srcDir "src" res.srcDir "res" manifest.srcFile "AndroidManifest.xml" assets.srcDir "../../Resources" } externalNativeBuild { ndkBuild { if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) { // skip the NDK Build step if PROP_NDK_MODE is none path "jni/Android.mk" } } } signingConfigs { release { if (project.hasProperty("RELEASE_STORE_FILE")) { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' if (project.hasProperty("RELEASE_STORE_FILE")) { signingConfig signingConfigs.release } externalNativeBuild { ndkBuild { arguments 'NDK_DEBUG=0' } } } debug { externalNativeBuild { ndkBuild { arguments 'NDK_DEBUG=1' } } } } }
application.mkです。
APP_STL := gnustl_static APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char APP_LDFLAGS := -latomic APP_ABI := armeabi APP_SHORT_COMMANDS := true ifeq ($(NDK_DEBUG),1) APP_CPPFLAGS += -DCOCOS2D_DEBUG=1 APP_OPTIM := debug else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release endif
APP_ABIには、armeabiが設定されていますが、
将来廃止するので、変更しろという警告がでてきますが、
まだ対応していないようです。
いずれにせよ、設定を変えてもdebug buildが動かない場合は、
cocos2dxのバージョンをアップデートしたほうがよさそうです。
ページビュー
673
収益
102円