Android Studio编译cocos2dx项目

一、所需工具

    1、Android studio2.3

    2、cocos2dx3.10

    3、jdk1.8

    4、ndkr9d

    5、sdk

    6、ant

    7、python2.7.14



二、配置环境变量

   1、sdk配置:

        变量名:ANDROID_SDK_ROOT

        变量值:C:\android-sdk-windows(这里写你sdk的根目录,不要在后面加上什么platform之类的,就是根目录!)

    2、ndk配置:

        变量名:NDK_ROOT

        变量值:C:\\android-ndk-r10d(这里写你ndk的根目录,注意我上面的两个\\ 目前我还不清楚为什么,但是在Android studio中如果不加上这个的话,就会报错)然后在Path中添加sdk和ndk的变量值就好了,记得末尾加上分号;同时注意不要是拼音的分号。

    3、python配置:

        安装python,配置python的根目录到环境变量里。

    4、cocos2dx配置:

        安装cocos2dx,打开文件夹,双击setup.py,如果一闪而过,说明之前的配置成功,如果出错,说明有配置不对,重新配置之前的那些环境变量。



三、创建cocos2dx项目

    1、运行 cocos new HelloWorld -p com.justcode.HelloWorld -l cpp -d D:\demo,新建HelloWorld项目。由于我们通过第二步配置好了环境,cocos命令才能在任意目录下运行。

        参数说明:

            HelloWorld为项目名称

            -p后面接包名

            -l后面接开发语言类型,有cpp, lua, js三种类型

            -d后面接项目存放的目录



四、导入Android studio

    项目目录在proj.android-studio,在导入之前,需要修改一些文件以缩短as编译时间

    1、项目下build.gradle文件

        dependencies {

            classpath'com.android.tools.build:gradle:2.3.3'//修改成自己项目已有的gradle版本

        }

    2、项目下gradle里面wrapper下gradle-wrapper.properties文件

        distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip    //改成自己的gradle版本

    3、moudle下build.gradle文件

        compileSdkVersion26

        buildToolsVersion"26.0.2"

        defaultConfig {

            applicationId"com.zijinlong.plaza"

            minSdkVersion10

            targetSdkVersion26

            versionCode1

            versionName"1.0"

        }

        //修改成自己的版本

    4、..\demo\cocos2d\cocos\platform\android\libcocos2dx 下build.gradle文件

        compileSdkVersion 26    //修改

        buildToolsVersion "26.0.2"    //修改

        useLibrary "org.apache.http.legacy"    //新增

        defaultConfig {

            minSdkVersion 11

            targetSdkVersion 26    //修改

            versionCode 1

            versionName "1.0"

        }


五、运行cocos2dx项目

    1、运行cocos compile -p android --android-studio,进行编译。

        这一步会在proj.android-studio/app下生成一个libs文件夹,里面是编译出来的libcocos2dcpp.so库文件。注意命令里含有–android-studio,这是专门针对Android Studio进行编译。如果不运行这一步,原生C++代码无法运行。也可以用命令行cocos run -p android --android-studio --ap android-25 直接运行,也能直接生成apk并安装到手机上自动运行,优点是这种方式生成的安装包会比android studio打包生成的小一些,对安装包大小敏感的话可以用这种方式。



六、可能出现的问题

    1、

            解决方法:在下载android studio的地址中下载一个tools,把SDK的tools文件夹替换掉,再次编译。这个问题的原因是最新的sdk工具中不再支持android命令,这里替换tools文件为旧版的文件后可以编译(可以搜索tools_r25.2.3-windows.zip下载)。

    2、

            如果不是新建的项目,而是已经添加了其他C++源文件的项目,那么直接运行这一步会出现如下报错:error: undefined reference to ‘vtable for XXX’。其中XXX就是某个源文件名。这是因为编译器没有在Android.mk文件里面找到相关源文件的地址。所以解决办法就是在这一步之前再添一步,用vi,或者nano,或者其他你喜欢的方式打开proj.android-studio/app/jni/Android.mk,往里面添加相关源文件地址(只要你打开这个mk文件一看就秒懂)。

    3、如果出错并提示:在 Android SDK的platforms下未找到文件夹 'android-25',请使用 --ap 指定需要的API版本。

        那么找到你的SDK路径下的platforms文件夹,看里面最新版本是多少,比如是android-25的话,那么编译就用cocos compile -p android --android-studio --ap android-25

    4、如果提示没有android命令,或android命令已被废除之类的

        去下载一个较老版本的SDK(tools_r25.2.3-windows.zip),并把里面的tools文件夹覆盖现有的

    5、

版本管理工具svn的坑,它的设置里面忽略了.a文件,导致其他人提交的cocos2dx工程里面/cocos2d-x/external 下面的所有.a文件缺失了,所以,你自己重新new一个cocos2dx工程,把/cocos2d-x/external 下面的.a文件拷贝到对应的目录然后编译就ok了

    6、找不到org.apache.http.HttpEntity的类文件

主要是targetsdk23以上版本不在支持,如果需要使用的话,在build.gradle文件中添加配置:useLibrary "org.apache.http.legacy"

    7、make.exe: *** Waiting for unfinished jobs....

[armeabi] Compile++ thumb: cocos2dcpp_shared <= FMContentJsonDictionary.cpp

make.exe: *** No rule to make target `/Developer/Game/CoralSdkDemo/proj.android/

../cocos2d/extensions/assets-manager/AssetsManager.cpp', needed by `obj/local/ar

meabi/objs/cocos_extension_static/assets-manager/AssetsManager.o'.  Stop.

make.exe: *** Waiting for unfinished jobs....

[armeabi] Compile++ thumb: cocos2dcpp_shared <= Menu.cpp

make.exe: Leaving directory `C:/Users/Administrator/Desktop/12/BattleNet_Cocos2x

Demo_V1.0.0/CoralSDK_Cocos2d-x_Demo/proj.android'

Traceback (most recent call last):

  File "C:\Users\Administrator\Desktop\12\BattleNet_Cocos2xDemo_V1.0.0\CoralSDK_

Cocos2d-x_Demo\proj.android\build_native.py", line 166, in

    build(opts.ndk_build_param,opts.android_platform,opts.build_mode)

  File "C:\Users\Administrator\Desktop\12\BattleNet_Cocos2xDemo_V1.0.0\CoralSDK_

Cocos2d-x_Demo\proj.android\build_native.py", line 153, in build

    do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,and

roid_platform,build_mode)

解决办法:搜索project.android目录下的.o .d文件类型,并且删除之后重新编译即可通过;

    8、更多问题自行百度

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,448评论 25 707
  • 文章摘要1、 c、c++项目的创建2、添加C、C++项目依赖库4、配置Gradle,编译lib so库 英文文献 ...
    Android那些事儿阅读 12,556评论 0 54
  • 曾经习惯的把所有的反的错都归结于别人或外部原因,但再仔细深想,造成这种错误的原因往往在自己身上,为什么自己不再仔细...
    YP1208阅读 152评论 0 0
  • 为了写诗而赋词的句子 不过是些什么空白的陈滥文字 诗歌若不是生活的附属品 无非排满屏幕的一行蝼蚁 你看与不看 都不...
    山屈生阅读 349评论 0 0
  • 推荐对我影响最大的一本社会心理学书籍 我向来爱看书。大学周末,基本都是在图书馆度过的。 经常因为在图书馆发现一本好...
    稻子未熟阅读 663评论 3 3