-
Notifications
You must be signed in to change notification settings - Fork 5
FudanCraft Android移植的尝试
zlj09 edited this page Jun 30, 2017
·
1 revision
Ø 过程
○ 先按照《Cocos2d-x实战 C++卷》第21章的步骤
§ 已有JDK,安装ANT, SDK, NDK
§ 采用cocos命令行工具编译
□ cocos run -p android --ap=android-24
§ MI 5s plus手机通过USB连接电脑,打开USB调试模式
§ cocos例程HelloWorld编译通过,安装成功!
□
□
□
○ Google Protobuf移植
§ 先尝试一下Windows下用Cmake编译Google Protobuf
□ https://github.com/google/protobuf/blob/master/cmake/README.md
§ 编译面向Android的protobuf
□ 按照https://stackoverflow.com/questions/42458739/how-to-integrate-install-latest-c-protobuf-3-2-with-android-ndk的步骤
® 编译失败
®
®
® 编译器没有找到合适的进程库
® 安卓应该是有pthread的
® 注释掉if def语句,强制采用android配置
® 这次出现了一大堆链接错误
®
® 在google/protobuf/stubs/common.cc中加入下面的语句,将平台定义为Android
®
® 在Android.mk中加入下面的语句,让编译器能找到android/log.h
®
® 编译成功
®
® 生成了好几个架构的libprotobuf.so
®
® 不对啊,我要的是静态链接库……
® 好吧,静态库好像不能加到APK里,还是用动态库吧
○ 编译FudanCraft
§ 第一个的问题就是Android.mk怎么写
□ 首先要包含Google Protobuf
® 也就是刚刚生成的libprotobuf.so
® 按照http://bbs.csdn.net/topics/390397961中31楼的指点
□ 然后还有一个boost/asio库
® 先直接包含头文件吧
□ 最后写好的Android.mk如下
®
§ 改bug
□ Visual Studio下写出来的C++和GCC要求的真是有很多不一样的
□ to_string()不能用了
□ 函数内部定义的成员函数不能加命名空间
§ 仍然使用cocos命令行工具编译
□ 得到了一大堆链接错误
®
® 也是意料之中
Ø 问题
○ Android SDK Manager闪退
§ 采用命令行android.bat直接升级
□ tools\android.bat update sdk --no-ui
□ 能够运行
§ 不要管SDK Manager了,谷歌粑粑升级了SDK,以后都直接从Android Studio里面管理
○ Invalid or unsupported command "update project -t android-25 -p
§ 找不到update命令,因为Android SDK升级了
§ 采用http://forum.cocos.com/t/creator1-4-1-android/45151/7提供的tools
○ 工程路径不能有空格……
§
○ 只要还有一个cmd窗口开着,新的cmd窗口也不会更新用户环境变量!
○ cmake要在能够使用visual studio cl编译器的环境下运行
§ x64_arm不行,x86_arm就可以,不知道为什么
□
○ protobuf单元测试有7个例子出错……
§
§ 倒霉,应该下release版的……
§
§ 用了release版(3.3.0)还是有一个错,不知道怎么回事
○ NDK编译错误
§ 命名空间重复声明错误
□
□ GCC对C++语法的要求更严格,在类内定义的成员函数开头不允许重写一遍命名空间
§ 找不到to_string()
□ 好像是GCC有点问题,换成sprintf吧