标签:
本文以Cocos2d-JS项目作为示例,讲解如何集成AnySDK-JS。
1、如何创建项目我就省略了,直接进入主题。
首先,我需要下载anysdk框架包,下载地址:http://www.anysdk.com/downloads
选择AnySDK Framework for JS下载。
将下载下来的AnySDK_Framework_JS.zip文件解压,目录如下:
其中framework目录下,有三个版本的stl库。根据当前项目使用的stl库选取相应的stl库。(一般为:gnustl_static)
以Cocos2d-x框架为例,开发者可以在工程目录下jni/application.mk文件第一行找到stl库类型设置 如果此处设置的是 APP_STL := gnustl_static,则表示当前工程以gnu静态库的方式引入使用stl标准库,此时应选择集成protocols_gnustl_static这个文件夹中的框架资源。 反之,则应选择集成 protocols_stlport_static文件夹中的框架资源。
2 、获取anysdk-jsb绑定文件
src下面则是一个anysdkConst.js文件,该文件是对应C++里面定义的枚举变量。(使用的时候,需要添加到project.json里面)
"jsList" : [ "src/resource.js", "src/anysdkConst.js", "src/app.js" ]
因为我们是使用Cocos2d-JS 3.x创建的项目,所有我们选择3.x的目录。
3.1、拷贝anysdk framework stl库到protocols文件夹
首先,查看anysdkTest项目的frameworks/runtime-src/proj.android/jni/application.mk
文件第一行找到stl库类型设置。 如下图:
然后,进入anysdkTest项目的frameworks/runtime-src/proj.android
目录,新建protocols文件夹。根据上面查看到的stl类型,选取AnySDK_Framework_JS/framework/protocols_gnustl_static
库,然后将该目录下的android和include文件夹拷贝到protocols目录。
3.2、 将AnySDK_Framework_JS/framework/protocols_gnustl_static
目录下的res文件,拷贝到proj.android/res
目录下,注意选择合并,避免文件覆盖。
3.3、将AnySDK_Framework_JS/3.x
目录下的文件拷贝到proj.android/Classes
目录下
3.4、编辑proj.android/jni/Android.mk
文件
在LOCAL_SRC_FILES新增 两个文件: autoanysdkbindings.cpp 和 manualanysdkbindings.cpp,例:
LOCAL_SRC_FILES := ../../Classes/protobuf-lite/google/protobuf/io/coded_stream.cc ... ../../Classes/autoanysdkbindings.cpp ../../Classes/manualanysdkbindings.cpp javascript/Runtime_android.cpp javascript/main.cpp
在LOCAL_C_INCLUDES 新增目录:protocols/android 和 protocols/include,例:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes/runtime $(LOCAL_PATH)/../../Classes/protobuf-lite $(LOCAL_PATH)/../protocols/android $(LOCAL_PATH)/../protocols/include $(LOCAL_PATH)/../../Classes
新增 static lib, 例:
LOCAL_WHOLE_STATIC_LIBRARIES += PluginProtocolStatic
新增 modules, 例:
$(call import-module,protocols/android)
3.5、增加ADK_MODULE_PATH:
3.x, 修改 build-cfg.json文件(也就是加上: "" ):
"ndk_module_path" :[ "../../js-bindings", "../../js-bindings/external", "../../js-bindings/cocos2d-x", "../../js-bindings/cocos2d-x/cocos", "../../js-bindings/cocos2d-x/external", "" ],
3.6、在proj.android目录下新建libs文件夹,然后将AnySDK_Framework_JS/framework/protocols_gnustl_static/android
目录下的libPluginProtocol.jar拷贝到该目录下。
3.7、
添加设置javaVM代码
编辑proj.android/jni/javascript/main.cpp
文件。如图:
3.8、配置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" />
3.9、在JAVA层初始化AnySDK Framework框架
首先找到游戏工程的主Activity,以Cocos2d-x引擎游戏为例,主Activity即是继承了cocos2dxActivity的Activity。 并在主Activity的onCreate()方法中新增如下代码来初始化AnySDK Framework:修改proj.android/src/org/cocos2dx/javascript/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); }
Cocos2d-JS 项目接入 触控广告平台(基于anysdk)
标签:
原文地址:http://www.cnblogs.com/recock/p/4234478.html