AnySDK Framework

Cocos Creator 内置 Cocos 引擎中包含了 AnySDK Framework 资源。即开发者构建发布出的平台工程已经包含了 AnySDK Framework。该章节介绍了如何选择性使用 AnySDK。

使用 AnySDK

原生

H5

无需使用 AnySDK

开发者若不需要使用 AnySDK,目前只支持手动删除相关文件,删除步骤如下:

  • 删除 frameworks/runtime-src/Classes 下的
    1. jsb_anysdk_basic_conversions.cpp
    2. manualanysdkbindings.cpp
    3. jsb_anysdk_protocols_auto.cpp
    4. SDKManager.cpp
  • Eclipse 工程

    • 删除 libs 下的 libPluginProtocol.jar 文件
    • 删除 res 下的
      1. drawable/plugin_btn_close.png
      2. drawable/plugin_ui_ad.png
      3. values-en/plugin_string.xml
      4. values/plugin_string.xml
      5. layout/plugin_ads.xml
      6. layout/plugin_login.xml
    • 删除 jni 下的 Android.mk 中 LOCAL_WHOLE_STATIC_LIBRARIES := PluginProtocolStatic
    • 删除 jni 下的 Android.mk 中

      1. LOCAL_SRC_FILES := ../../Classes/SDKManager.cpp \
      2. ../../Classes/jsb_anysdk_basic_conversions.cpp \
      3. ../../Classes/manualanysdkbindings.cpp \
      4. ../../Classes/jsb_anysdk_protocols_auto.cpp
    • 删除 jni 下的 Application.mk 宏定义 APP_CPPFLAGS := -DPACKAGE_AS

    • 修改 src/org/cocos2dx/javascript/SDKWrapper.java 文件中 private final static boolean PACKAGE_AS = true;true 修改为 false
  • Android Studio 工程
    • 删除 libs 下的 libPluginProtocol.jar
    • 删除 res 下的
      1. mipmap/plugin_btn_close.png
      2. mipmap/plugin_ui_ad.png
      3. values-en/plugin_string.xml
      4. values/plugin_string.xml
      5. layout/plugin_ads.xml
      6. layout/plugin_login.xml
    • 删除 jni 下的 Android.mk 中 LOCAL_WHOLE_STATIC_LIBRARIES := PluginProtocolStatic
    • 删除 jni 下的 Android.mk 中
      1. LOCAL_SRC_FILES := ../../Classes/SDKManager.cpp \
      2. ../../Classes/jsb_anysdk_basic_conversions.cpp \
      3. ../../Classes/manualanysdkbindings.cpp \
      4. ../../Classes/jsb_anysdk_protocols_auto.cpp
    • 删除 jni 下的 Application.mk 宏定义APP_CPPFLAGS := -DPACKAGE_AS
    • 修改 src/org/cocos2dx/javascript/SDKWrapper.java 文件中 private final static boolean PACKAGE_AS = true;true 修改为 false
  • Xcode 工程
    • 删除 libPluginProtocol.a
  • Web 工程
    • 找到 index.html 文件删除
      1. <script charset="utf-8" id="protocols" type="text/javascript">
      2. var protocols = document.createElement("script");
      3. protocols.onload = function () {
      4. anysdk.agentManager.init();
      5. anysdk.agentManager.loadAllPlugins(function (code, msg) {
      6. });
      7. };
      8. protocols.src = "http://statics.h5.anysdk.com/protocols/protocols.js";
      9. document.body.appendChild(protocols);
      10. </script>

删除 AnySDK 后仍需使用

  • 使用 Cocos Console 调用命令 cocos package import -b anysdk -p project-path --anysdk

更新 AnySDK Framework

  • 使用 Cocos Console 调用命令 cocos package update -p project-path --anysdk 即可实现更新

接入常见问题

  • 渠道包出现闪退现象
    • 产生原因: 构建出的 Cocos 工程中 frameworks/runtime-src/Classes/SDKManager.cpploadAllPlugins 方法已经调用了 init 方法,用户在 JS 层调用 init 方法无法生效。
    • 解决方案: 用户无需再 JS 层调用 ‘init’ 方法,需使用构建出的 Cocos 工程中 frameworks/runtime-src/Classes/SDKManager.cpploadAllPlugins 方法 init方法,传递 appKey、appSecret、privateKey、oauthLoginServer