配置环境:

  1. mac osx 10.12.6
  2. cocos2dx 3.14
  3. Android studio 2.3

目标:

在mac上配置cocos Android开发环境,接入AnySDK

配置:

1、安装java jdk brew cask install java

配置环境之前搜过cocos+android studio ,有人说使用Android studio配置最新版的jdk8有已知的存在的问题,所以需要安装旧版的jdk(但最终证明并没有问题,这里提供mac安装管理多个版本jdk的方法):使用homebrew 安装

brew tap caskroom/versions && brew cask install java6

使用jenv管理多个jdk版本:

  1. 安装jenv:brew install jenv
  2. 添加配置:
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile

这里根据自己的使用的shell来修改,如我用的zsh,所以对应的就是.zshrc

  1. 添加管理的jdk:
sudo jenv add /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
sudo jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  1. 删除对于的版本:

    jenv remove 名

  2. 指定当前使用版本:jenv shell 1.6

    更多配置具体可参考csdn博文

    以及官方文档

2、安装Android-studio并且按照提示下载AndroidSDK【不需要使用shadow代理】

3、新建cocos项目

terminal 中使用:

cocos new androidDemo -p cn.bignerd.www -l lua -d xxx

4、安装Android studio

安装Android studio的时候,会提示设置proxy,但其实并不用设定,下面的很多问题都是设置了代理导致的(我使用了shadowsocks),取消设置代理,按照提示配置,下载Android sdk,最新版是Android8.0 api26,可以根据自己的机型情况下载。

5、执行cocos3.14框架文件下的setup.py

  • 设置NDK_ROOT,ndk可以在Android studio -> perference ->sysytem setting -> android SDK -> sdk tools 中下载,下载后设置路径$HOME/Library/Android/sdk/ndk-bundle
  • 设置ANDROID_SDK_ROOT,$HOME/Library/Android/sdk
  • 设置ANT_ROOT,可以使用homebrew先进行安装

6、编译cocos项目

进入的androidDemo的proj.android-studio目录下使用下面的cocos命令编译:

cocos compile -p android --android-studio

注:为了可以在命令行的任意位置使用cocos命令,可以将其添加到.zshrc PATH中:

export PATH="$HOME/workspace/cocos2d-x/cocos2d-x- 3.14.1/tools/cocos2d-console/bin"

遇到的问题:

这里出现的第一个问题是:无法找到android命令,这个是因为下载最新版本的Android studio以及最新的sdk,Android SDK tools的版本也是26.0.1,这个版本已经不再支持这个命令,而cocos又依赖这个命令,所以办法就是降级,下载旧版本的tools覆盖/Library/Android/sdk目录的tools内容下载地址

第二个问题:报错malloc was not declared in this scope,在~/workspace/cocos2d-x/androidDemo/frameworks/runtime-src/proj.android-studio/app/jni 打开Application.mk添加:APP_DEPRECATED_HEADERS := true

第三个问题:提示androd-22sdk不存在,这里cocos生成的项目中指定的sdk版本是Android-22,所以要么下载Android-22sdk(Android studio中直接下载),要么修改proj.android-studio/app/build.gradle,compileSdkVersion与buildToolsVersion为26 与 26.0.0.1,同时要修改的还有androidDemo/frameworks/cocos2d-x/cocos/platform/android/libcocos2dx/build.gradle,修改方法一样。

第四个问题:使用cocos compile 来编译项目的原因是android studio 并不能帮助我们编译cocos的c++代码,而Android项目的编译使用的是gradel,但是第一次compile成功并没有自定执行gradlew命令,所以第二次运行cocos compile这个命令,编译成功并且自动开始执行gradlew命令

第五个问题:执行gradlew报错的问题,也是andoid命令不存在,解决办法是删除build.gradle中的android模块就可以了

这里还有一个问题卡了很久,就是最初设置了代理,所以在终端也启用的代理,执行gradle时会根据build.gradle中的dependencies中的classpath从jcenter下载依赖。

在完成https://services.gradle.org/distributions/文件的下载后会报错,就是从jcenter下载依赖时,如图:

通过报错可以看到请求的是127.0.0.1:1080,转发到shadow来访问的,因为之前在Android studio设置了代理,所在在proj.android-studio/gradle.properties中有代理的设置:

systemProp.https.proxyPort=1080
systemProp.http.proxyHost=127.0.0.1
systemProp.https.proxyHost=127.0.0.1
systemProp.http.proxyPort=1080

注释掉之后可以正常访问,因为jcenter也是不需要代理就可以直接访问的。

7、Android studio 导入cocos项目

打开Android studio 直接选择open exist android studio project,打开的过程会执行gradle,开始卡在了gradle resolve classpath

1>可能是网络原因,导致classpath的内容gradle无法下载,之前一直配置使用代理(shadow+android studio http代理),这些全部关掉,可以提高下载速度

2>还有可能是gradle版本的问题,gradle的version(gradle-wrapper.properties)中与gradle.build中classpath中的版本。默认cococs生成的项目分别是2.4-all与1.3.0,按照Android studio2.3要求升级为3.3.-all与2.3.3

然后retry gradle报错:

Gradle sync failed: Cannot create directory /Users/xxxx/workspace/cocos2d-x/androidDemo/frameworks/cocos2d-x/cocos/platform/android/libcocos2dx/build/intermediates/incremental/packageDebugAndroidTest/zip-cache
Consult IDE log for more details (Help | Show Log)

添加权限

8、Android studio虚拟机

cocos默认编译的架构是armeabi,但是android studio的虚拟机运行速度快的都是x86指令的,所以可以重新编译:cocos compile -p android --android-studio --app-abi x86

配置anysdk

anysdk 官网给出的lua 快速集成指南中的示例是proj.android的,所以跟proj.android-studio目录结构有些不同:

1、获取 AnySDK Framework 这个不像ios,目录与文档介绍一致

2、拷贝 AnySDK Framework STL 库到 protocols 文件夹,在proj.android-studio/app下面新建文件夹protocols

3、将 AnySDK_Framework_Lua/framework/protocols_gnustl_static 目录下的 res 文件里的资源,拷贝到 proj.android-studio/app/res 目录下,注意选择合并,避免文件覆盖。

4、将 AnySDK_Framework_Lua/3.x 目录下的文件拷贝到 frameworks/runtime-src/Classes 目录下

5、在 proj.android-studio/app 目录下新建 libs 文件夹,然后将 proj.android-studio/app/protocols/android 目录下的 libPluginProtocol.jar 移到该目录下。

6、编辑 Android.mk 文件(按文档即可,部分需要修改)

  1. $(call import-add-path,$(LOCAL_PATH)/../)
  2. 在 LOCAL_SRC_FILES 新增 Lua 绑定的 cpp 文件:anysdkbindings.cpp 和 anysdk_manual_bindings.cpp
  3. 新增 static lib LOCAL_WHOLE_STATIC_LIBRARIES += PluginProtocolStatic
  4. 新增modules $(call import-module,protocols/android)

7、添加设置 javaVM 代码修改main.cpp文件

\#include "PluginJniHelper.h" 这里要写完整的路径所以是:#include "../../protocols/android/PluginJniHelper.h"

8、配置 AndroidManifest.xml 添加框架需要的权限(按文档)

9、在 JAVA 层初始化 AnySDK Framework 框架

这里全部复制文档中的代码没有问题

10、配置 AnySDK Lua 文件到项目中(按文档执行)

全部执行完上面的操作,运行cocos compile -p android报错:

无法找到AgentManager等,查询发现是在AppDelegate中引入了anysdkbings.h,然后anysdkbingds.cpp中引入了AgentManager.h等头文件,而这些头文件都在我们添加的protocols\include文件夹,所以修改Android.mk文件的LOCAL_C_INCLUDES

# 添加include文件夹以解决appAgent找不到的错误
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes \
$(LOCAL_PATH)/../protocols/android \
$(LOCAL_PATH)/../protocols/include

这些头文件定义的具体实现应该是在PluginProtocolStatic

11、编译运行项目到魅族手机、提示不兼容

这里是因为之前的疏忽Application.mk中APP_ABI 多 添加了一个x86,所以cocos编译的时候就出现了部分x86编译的内容(不知道具体原因)

12、编译运行闪退

google的结果并没有完全匹配这个问题的、有的说是ndk版本的问题、有的说Application.mk中指定api版本APP_PLATFORM := android-10(是否有用待测试),有的说是手机Android版本有关,所以手机是Android6.0,我用Android-23 sdk重新编译了一下项目,这里注意不要忘了修改app/project.properties中的target版本,编译成功。

13、anysdk打包

使用cocos compile 生成的apk文件打包,在手机安装运行还是失败,然后使用Android studio build apk再使用anysdk打包安装到手机正常运行

14、魅族手机的几个问题:

  1. 调试开启开发者模式:关于手机点击系统版本7次
  2. 允许安装外来usb应用:手机管家->权限管理->usb安装管理->允许
  3. 文件卸载残留问题:访客模式进入可显示出未卸载干净的app
  4. Android studio 中显示log cat以便调试lua文件中打印的信息:开启设置-辅助功能-开放者选项-性能优化-高级日志输出-全部允许输出

刚刚接触cocos,相较于ios工程,Android工程环境搭建过程坑颇多,记录分享给你,也许能对你有帮助。

Mac搭建cocos2dx+Android studio开发环境以及AnySDK的集成的更多相关文章

  1. Android studio 开发环境搭建

    Android studio 开发环境搭建 一.环境: 下载java jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jd ...

  2. 【Android Studio安装部署系列】二、Android Studio开发环境搭建

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio开发环境安装步骤 下载Android Studio 下载地址: http://www.wanandroi ...

  3. windows平台下Android studio开发环境搭建教程

    最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环境 .而随着Android stud ...

  4. android studio 开发环境配置

    android studio 开发环境配置 参考: 第一次使用Android Studio时你应该知道的一切配置 https://www.cnblogs.com/qianguyihao/p/43909 ...

  5. Android Studio开发环境配置以及相关说明

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下在开发的时候使用的Android Studio开发环境版本以及相关注意事项. 一般来讲,每隔一段时间就要检查下Andr ...

  6. 【Android学习笔记】Mac下Android Studio开发环境搭建

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/7829069.html 对于移动端这块,笔者之前一直都是进行iOS开发的,也从来 ...

  7. Android Studio开发环境配置(win7)

    由于近期,google网站封锁,导致eclipse配置android环境时,无法在线更新API和配置ADT.个人尝试之后,发现很多地方配置因为版本不合适而配置不成功,(ps:当然你FQ,或者下载到对应 ...

  8. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  9. mac平台打造犀利的Android Studio开发环境

    0x0 背景介绍  随着Android Studio功能越来越强大,Android平台的开发者们基本上都从原来的Eclipse + ADT 转到了AS上.本文就记录自己在配置AS环境过程中遇到的各种问 ...

随机推荐

  1. (转)spring aop(下)

    昨天记录了Spring AOP学习的一部分(http://www.cnblogs.com/yanbincn/archive/2012/08/13/2635413.html),本来是想一口气梳理完的.但 ...

  2. .net core中使用GB2312编码的问题

    最近在用.net core写一个爬虫抓取网页上的数据,碰到了网页编码是GBK的页面,抓取的数据都是乱码,当使用Encoding.GetEncoding("GBK")的时候抛出了异常 ...

  3. Highway LSTM 学习笔记

    Highway LSTM 学习笔记 zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan  2016-4-5   声明 1)该Dee ...

  4. 使用Flink时从Kafka中读取Array[Byte]类型的Schema

    使用Flink时,如果从Kafka中读取输入流,默认提供的是String类型的Schema: val myConsumer = new FlinkKafkaConsumer08[String](&qu ...

  5. 如何优雅地在React项目中使用Redux

    前言 或许你当前的项目还没有到应用Redux的程度,但提前了解一下也没有坏处,本文不会安利大家使用Redux 概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与 ...

  6. C++ 头文件系列(iostream)

    1. 简介 这个头文件非常特殊,它只声明了8个常用流对象. 2. 8个对象 2.1 窄字符对象(char) extern istream cin extern ostream cout extern ...

  7. JS画几何图形之一【直线】

    JS画图的想法经过大脑的时候,觉得有点意思,所以就实践了一番.JS画图为系列文章,本是讲点.线和面 先看样例:http://www.zhaojz.com.cn/demo/draw5.html 一.点 ...

  8. 解决linux重启后无法开启nginx问题“var/run/nginx/nginx.pid" no such file or directory问题

    起因:每次重启虚拟机后,var/run/nginx/目录都会被删除,所以无法在这个目录创建nginx.pid文件, 可以自己创建var/run/nginx/目录,然后可以运行,但治标不治本,下次虚拟机 ...

  9. MySQL 的调节和优化的提示

    MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多.2. 不惜一切代价避免使用Swap交换分区 – ...

  10. (转) Linux中profile、bashrc、bash_profile之间的区别和联系

    原文地址:http://blog.csdn.net/chenchong08/article/details/7833242 /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登 ...