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编译cocos2dx项目》

            解决方法:在下载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、

《Android Studio编译cocos2dx项目》

版本管理工具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、更多问题自行百度

    原文作者:justcodeit
    原文地址: https://www.jianshu.com/p/f78719e9a638
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞