• AnySDK Framework
    • 使用 AnySDK
      • 原生
      • H5
    • 无需使用 AnySDK
    • 删除 AnySDK 后仍需使用
    • 更新 AnySDK Framework
    • 接入常见问题

    AnySDK Framework

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

    使用 AnySDK

    原生

    • 开发者可根据 AnySDK 官方文档 直接接入 AnySDK 相关接口

    H5

    • 构建时勾选 AnySDK 选项

    • 开发者可根据 AnySDK H5 接入文档 直接接入 AnySDK 相关接口

    无需使用 AnySDK

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

    • 删除 frameworks/runtime-src/Classes 下的

      1. jsb_anysdk_basic_conversions.cpp
      2. manualanysdkbindings.cpp
      3. jsb_anysdk_protocols_auto.cpp
      4. SDKManager.cpp
      5. jsb_anysdk_basic_conversions.h
      6. manualanysdkbindings.hpp
      7. jsb_anysdk_protocols_auto.hpp
      8. SDKManager.h
    • 删除 main.js 下的

      1. // anysdk scripts
      2. if (cc.sys.isNative && cc.sys.isMobile) {
      3. jsList = jsList.concat(['jsb_anysdk.js', 'jsb_anysdk_constants.js']);
      4. }

      在需要定制的项目路径下添加一个 build-templates 目录,里面按照平台路径划分子目录, 将删除代码的 main.js拷贝在子目录下
      结构类似:

    1. project-folder
    2. |--assets
    3. |--build
    4. |--build-templates
    5. |--web-mobile
    6. |--main.js
    7. |--jsb-binary
    8. |--main.js
    9. |--jsb-default
    10. |--main.js
    • 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
      • Xcode 删除 libPluginProtocol.a 引用
      • Xcode 删除 Classes 下的引用
        1. jsb_anysdk_basic_conversions.cpp
        2. manualanysdkbindings.cpp
        3. jsb_anysdk_protocols_auto.cpp
        4. SDKManager.cpp
        5. jsb_anysdk_basic_conversions.h
        6. manualanysdkbindings.hpp
        7. jsb_anysdk_protocols_auto.hpp
      • 删除预编译宏 PACKAGE_AS
    • 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