昨日のよると今日にかけて、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円