您的位置:首页 > 移动开发 > Cocos引擎

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

2016-10-05 13:14 483 查看
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 directory
task 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 cleanAssets
preBuild.dependsOn copyAssets

import org.apache.tools.ant.taskdefs.condition.Os //clean.dependsOn cleanNative //call regular ndk-build(.cmd) script from app directory task 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. 编译程序成功运行




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐