编译 cocos2d-x-3.13.1 程序:Android Studio (代码配置方法)

来源:互联网 发布:美国eia数据公布 编辑:程序博客网 时间:2024/05/16 10:14

1.从官网cocos下载最新版cocos2d-x-3.13.1,运行setup.py,配置cocos2dx运行环境变量。


2. 命令行新建工程: cocos  new Test -l cpp -p cn.test

3. 用Android Studio打开Test目录中proj.android-studio工程,若出现提示更新按update。之后Open Module Settings


4. 编译程序运行,程序出现闪停。

5.编译NDK-JNI c++ so库文件。添加 Android NDK,配置build.gradle代码。


6 .proj.android-studio\app\build.gradle 最后添加代码:

import org.apache.tools.ant.taskdefs.condition.Os//clean.dependsOn cleanNative//call regular ndk-build(.cmd) script from app directorytask ndkBuild(type: Exec, dependsOn: 'copyResources') {    workingDir file('jni')    commandLine getNdkBuildCmd()}tasks.withType(JavaCompile) {    compileTask -> compileTask.dependsOn ndkBuild        sourceCompatibility = JavaVersion.VERSION_1_7        targetCompatibility = JavaVersion.VERSION_1_7}task cleanNative(type: Exec) {    workingDir file('jni')    commandLine getNdkBuildCmd(), 'clean'}task mydir {    doLast {        delete 'assets'        mkdir('assets')    }}task copyResources(dependsOn: 'mydir', type: Copy) {    from '../../Resources'    into 'assets'}def getNdkDir() {    if (System.env.ANDROID_NDK_ROOT != null)        return System.env.ANDROID_NDK_ROOT    Properties properties = new Properties()    properties.load(project.rootProject.file('local.properties').newDataInputStream())    def ndkdir = properties.getProperty('ndk.dir', null)    if (ndkdir == null)        throw new GradleException("NDK location not found. Define location with ndk.dir in the local.properties file or with an ANDROID_NDK_ROOT environment variable.")    println(ndkdir)    return ndkdir}def getNdkBuildCmd() {    def ndkbuild = getNdkDir() + "/ndk-build"    if (Os.isFamily(Os.FAMILY_WINDOWS))        ndkbuild += ".cmd"    println(ndkbuild)    return ndkbuild}

7. build.gradle全部代码

apply plugin: 'com.android.application'android {    compileSdkVersion 20    buildToolsVersion "22.0.1"    defaultConfig {        applicationId "cn.test"        minSdkVersion 10        targetSdkVersion 22        versionCode 1        versionName "1.0"    }    sourceSets.main {        java.srcDir "src"        res.srcDir "res"        jniLibs.srcDir "libs"        manifest.srcFile "AndroidManifest.xml"        assets.srcDir "assets"    }    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            }        }    }     //sourceSets.main.jni.srcDirs = []      //disable automatic ndk-build call, which ignore our Android.mk}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    compile project(':libcocos2dx')}task cleanAssets(type: Delete) {    delete 'assets'}task copyAssets(type: Copy) {    from '../../Resources'    into 'assets'}clean.dependsOn cleanAssetspreBuild.dependsOn copyAssetsimport org.apache.tools.ant.taskdefs.condition.Os//clean.dependsOn cleanNative//call regular ndk-build(.cmd) script from app directorytask ndkBuild(type: Exec, dependsOn: 'copyResources') {    workingDir file('jni')    commandLine getNdkBuildCmd()}tasks.withType(JavaCompile) {    compileTask -> compileTask.dependsOn ndkBuild        sourceCompatibility = JavaVersion.VERSION_1_7        targetCompatibility = JavaVersion.VERSION_1_7}task cleanNative(type: Exec) {    workingDir file('jni')    commandLine getNdkBuildCmd(), 'clean'}task mydir {    doLast {        delete 'assets'        mkdir('assets')    }}task copyResources(dependsOn: 'mydir', type: Copy) {    from '../../Resources'    into 'assets'}def getNdkDir() {    if (System.env.ANDROID_NDK_ROOT != null)        return System.env.ANDROID_NDK_ROOT    Properties properties = new Properties()    properties.load(project.rootProject.file('local.properties').newDataInputStream())    def ndkdir = properties.getProperty('ndk.dir', null)    if (ndkdir == null)        throw new GradleException("NDK location not found. Define location with ndk.dir in the local.properties file or with an ANDROID_NDK_ROOT environment variable.")    println(ndkdir)    return ndkdir}def getNdkBuildCmd() {    def ndkbuild = getNdkDir() + "/ndk-build"    if (Os.isFamily(Os.FAMILY_WINDOWS))        ndkbuild += ".cmd"    println(ndkbuild)    return ndkbuild}

8. 编译程序成功运行




0 0
原创粉丝点击