Sample_CPP
简要说明: sample of cocos2d-x cpp
使用版本: cocos2d-x 3.3rc0
接入文档: http://docs.anysdk.com/CppTutorial
运行: ./cocos2d/tools/cocos2d-console/bin/cocos run -p android
###cocos2d-x c++接入anysdk简要流程: ####一:获取AnySDK Framework 到AnySDK官方网站注册登陆,然后到AnySDK Framework的下载页面( http://www.anysdk.com/downloads ) 下载完整的anysdk框架包,选择AnySDK Framework for C++进行下载解压后如下图:
####二:拷贝anysdk framework stl库到protocols文件夹 #####protocols文件: 首先,查看hello项目的hello/proj.android/jni/Application.mk文件第一行找到stl库类型设置。 如下图:然后,进入anysdkTest项目的frameworks/runtime-src/proj.android目录,新建protocols文件夹。根据上面查看到的stl类型,选取AnySDK_Framework_C++/protocols_c++_static库,然后将该目录下的android和include文件夹拷贝到protocols目录。 #####res文件: 将AnySDK_Framework_C++/protocols_c++_static目录下的res文件,拷贝到proj.android/res目录下,注意选择合并,避免文件覆盖。 #####放置libPluginProtocol.jar包: 在proj.android目录下新建libs文件夹,然后将AnySDK_Framework_C++/protocols_c++_static/android目录下的libPluginProtocol.jar拷贝到该目录下。 ####三:编辑 mk 文件 #####修改LOCAL_C_INCLUDES: 在LOCAL_C_INCLUDES 新增目录:protocols/android 和 protocols/include,例:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \ $(LOCAL_PATH)/../protocols/android \ $(LOCAL_PATH)/../protocols/include
#####新增 static lib: 例:
LOCAL_WHOLE_STATIC_LIBRARIES += PluginProtocolStatic
#####新增 modules: 例:
$(call import-module,protocols/android)
android.mk(修改之后)如图:
####四:增加NDK_MODULE_PATH 修改 build-cfg.json文件的 ndk_module_path 部分如下:
"ndk_module_path" :[ "../cocos2d", "../cocos2d/cocos", "../cocos2d/external", "" ],
####五:添加设置javaVM代码 修改main.cpp文件(在jni下面)
#include "PluginJniHelper.h" #define LOG_TAG "main" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) using namespace cocos2d; using namespace anysdk::framework; void cocos_android_app_init (JNIEnv* env, jobject thiz) { LOGD("cocos_android_app_init"); AppDelegate *pAppDelegate = new AppDelegate(); JavaVM* vm; env->GetJavaVM(&vm); PluginJniHelper::setJavaVM(vm); }
如图:
####六:配置AndroidManifest.xml 添加框架需要的权限
uses-permission android:name="android.permission.INTERNET"
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
uses-permission android:name="android.permission.ACCESS_WIFI_STATE"
uses-permission android:name="android.permission.RESTART_PACKAGES"
uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"
####七:在JAVA层初始化AnySDK Framework框架 修改项目下/proj.android/src/org/cocos2dx/cpp/AppActivity.java文件:
import com.anysdk.framework.PluginWrapper; public class MainActivity extends Activity{ protected void onCreate(Bundle savedState) { super.onCreate(savedState); PluginWrapper.init(this); // for plugins } }
重写Activity生命周期相关方法,代码如下:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode, resultCode, data); PluginWrapper.onActivityResult(requestCode, resultCode, data); } @Override protected void onResume() { super.onResume(); PluginWrapper.onResume(); } @Override public void onPause(){ PluginWrapper.onPause(); super.onPause(); } @Override protected void onNewIntent(Intent intent) { PluginWrapper.onNewIntent(intent); super.onNewIntent(intent); }
AppActivity.java:
接入完成,下面就可以使用了。