cocos2dxでandroid debugビルドをする(アフリエイト生活72日目)

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です