链接:http://dev.umeng.com/game/game-cocos2d-n/quick-start-n
这里我吃了一憋,我竟然尝试使用 iOS 架构的静态库文件转译 android,太年轻啊!
还有,uMeng 的这份帮助文档是我在问过客服之后才找到的,真的有点儿难找,
我一直都是点进 “统计分析” 里面去找的,但这份该死的文档竟然是在 “游戏统计分析” 里面!
另外,uMeng sdk v2.0 中,去掉了 setAppVersion 这个方法,问了一下,不会影响到对 crash 的分析。
1. 在项目中集成SDK
1.1. Andorid
导入SDK
- 先在友盟的管理后台中创建App,获得AppKey
- 下载SDK并解压缩
-
导入插件
下载最新版SDK的zip包,将其中的mobclickcpphelper.jar文件复制到本地工程libs子目录下,将
libMobClickCpp
文件夹复制到[COCOS2DX_ROOT]/cocos2dx/platform/third_party/android/prebuilt
目录下(cocos2d-x 3.0以上这个目录是[COCOS2DX_ROOT]/external
) -
配置
Eclipse用户右键工程根目录,选择
Properties -> Java Build Path -> Libraries
,然后点击Add External JARs...
,选择指向jar的路径,点击OK注意
Eclipse ADT 17 以上版本用户,不需要这个步骤,完成第一步的合并libs文件夹之后,在Eclipse里面刷新一下工程就好了。不要通过上述步骤手动添加jar包引用。 详情请参考Dealing with dependencies in Android projects.
-
导入静态库
- 修改你的工程
Android.mk
文件在LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
后添加LOCAL_WHOLE_STATIC_LIBRARIES += mobclickcpp_static
, - 在
$(call import-module,cocos2dx)
后添加$(call import-module,libMobClickCpp)
。 - 如果你的工程没有使用
libcurl
库,还要在相应位置添加$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
(cocos2d-x 3.0以上请替换为$(call import-module,curl/prebuilt/android)
)和LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static
- 修改你的工程
-
导入完成
配置 AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
添加JAVA代码
- 在游戏主Activity的
onCreate
方法中中加入如下代码:
MobClickCppHelper.init(this);//请务必添加在super.onCreate(savedInstanceState);之后
添加JNI相关代码
- 在游戏主
main.cpp
中加入如下代码:
#include "MobClickJniHelper.h"
在JNI_OnLoad
方法中添加如下代码:
umeng::MobClickJniHelper::setJavaVM(vm);
注意
在cocos2d-x3.x中,
JNI_OnLoad
函数被移动到了[COCOS2DX_ROOT]/cocos/platform/android/javaactivity.cpp
文件之中,我们需要把这个文件的JNI_OnLoad
函数移动到main.cpp
文件中,之后添加umeng::MobClickJniHelper::setJavaVM(vm);
。
javaactivity.cpp
文件中:/*jint JNI_OnLoad(JavaVM *vm, void *reserved) { JniHelper::setJavaVM(vm); return JNI_VERSION_1_4; }*/
main.cpp
文件中添加:extern "C" { jint JNI_OnLoad(JavaVM *vm, void *reserved) { JniHelper::setJavaVM(vm); umeng::MobClickJniHelper::setJavaVM(vm); return JNI_VERSION_1_4; } }
1.2. iOS
导入SDK
- 解压缩压缩包。
-
导入插件
所需文件:
libMobClickCpp.a
(请查看C++ Standard Library
的设置,xcode默认的Compiler Default
是libstdc++
,如果您的项目正在使用libc++
编译请使用libMobClickCppWithLibCpp.a
)MobClickCpp.h
请在你的工程目录结构中,右键选择
Add->Existing Files…
,选择这两个文件。或者将这两个文件拖入XCode工程目录结构中,在弹出的界面中勾选Copy items into destination group's folder(if needed)
, 并确保Add To Targets
勾选相应的target。 如果你的工程没有使用libcurl
库,还要把[COCOS2DX_ROOT]/cocos2dx/platform/third_party/ios/libraries/libcurl.a
(cocos2d-x 3.0以上请替换为[COCOS2DX_ROOT]/external/curl/prebuilt/ios/libcurl.a
)按照上面的方法加入到工程中。 -