SDKBOX skips some steps but install succeeds

Hi

I am trying to add SDKBOX Play plugin with CocosCreator 2.4.1. I am using the plugin downloaded from CC Extension Store. I tried staging server too but same problem exists. Initially there was an error about res/sdkbox_config.json not found but that was solved by SDKBOX with Cocos Creator 2.4.1

But I noticed that even after the install is successful, it no longer works. I can see in the SDKBOX log files that some steps were skipped and some failed.

Here are the steps that were skipped:

skipped xcode_add_compiler_flag -DSDKBOX_ENABLED
skipped android_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_ENABLED None
skipped android_studio_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_ENABLED None
skipped xcode_add_compiler_flag -DSDKBOX_COCOS_CREATOR
skipped android_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_COCOS_CREATOR None
skipped android_studio_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_COCOS_CREATOR None
skipped xcode_add_compiler_flag -DSDKBOX_ENABLED
skipped android_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_ENABLED None
skipped android_studio_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_ENABLED None
skipped xcode_add_compiler_flag -DSDKBOX_COCOS_CREATOR
skipped android_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_COCOS_CREATOR None
skipped android_studio_add_key_value 2 LOCAL_CPPFLAGS -DSDKBOX_COCOS_CREATOR None
skipped xcode_add_framework AVFoundation.framework
skipped xcode_add_framework CoreGraphics.framework
skipped xcode_add_framework CoreMedia.framework
skipped xcode_add_framework SystemConfiguration.framework
skipped xcode_add_framework GameController.framework
skipped xcode_add_linker_flag -ObjC
skipped copy_file (u'/Users/fleon/.sdkbox/plugins/sdkbox-sdkboxplay_v2.7.0.0/plugin/android/libs/sdkbox.jar', '/Users/fleon/git/curse-of-the-cards/game/build/jsb-link/frameworks/runtime-src/proj.android-studio/libs/sdkbox.jar')
skipped copy_file (u'/Users/fleon/.sdkbox/plugins/sdkbox-sdkboxplay_v2.7.0.0/plugin/android/libs/PluginSdkboxPlay.jar', '/Users/fleon/git/curse-of-the-cards/game/build/jsb-link/frameworks/runtime-src/proj.android-studio/libs/PluginSdkboxPlay.jar')
skipped android_add_source ../../Classes/PluginSdkboxPlayJS.cpp None
skipped android_add_source ../../Classes/PluginSdkboxPlayJSHelper.cpp None
skipped android_add_source ../../Classes/SDKBoxJSHelper.cpp None
skipped android_set_permission INTERNET False
skipped android_studio_set_permission INTERNET False
skipped android_set_permission ACCESS_NETWORK_STATE False
skipped android_studio_set_permission ACCESS_NETWORK_STATE False
skipped android_add_xml_item xml path tag key
skipped android_add_xml_item xml path tag key
skipped android_add_activity com.google.android.gms.ads.AdActivity android:configChanges=keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize android:theme=@android:style/Theme.Translucent
skipped android_add_string google_app_id google_app_id
skipped android_add_static_library PluginSdkboxPlay
skipped android_add_static_library sdkbox
skipped android_del_call import-module, ./pluginsdkboxplay
skipped android_add_call import-add-path,$(LOCAL_PATH)
skipped android_add_call import-module, ./sdkbox
skipped android_add_call import-module, ./PluginSdkboxPlay
skipped android_set_key_value 1 APP_PLATFORM android-9
skipped android_add_key_value 2 LOCAL_LDLIBS -landroid None
skipped android_add_key_value 2 LOCAL_LDLIBS -llog None
skipped android_set_key_value 3 proguard.config ${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

Here are the steps that failed

FAILED proguard-rules.pro compare after ('#sdkbox', '-keep class com.sdkbox.** { *; }', '-dontwarn com.sdkbox.**') None
FAILED proguard-rules.pro compare after ('# google play service', '-keep class com.google.android.gms.** { *; }', '-dontwarn com.google.android.gms.**', '-keep class com.google.protobuf.** { *; }', '-dontwarn com.google.protobuf.**', '-keep class * extends java.util.ListResourceBundle {', '    protected Object[][] getContents();', '}', '-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {', '    public static final *** NULL;', '}', '-keepnames @com.google.android.gms.common.annotation.KeepName class *', '-keepclassmembernames class * {', '    @com.google.android.gms.common.annotation.KeepName *;', '}', '-keepnames class * implements android.os.Parcelable {', '    public static final ** CREATOR;', '}') None
FAILED proguard-rules.pro compare after ('#sdkbox', '-keep class com.sdkbox.** { *; }', '-dontwarn com.sdkbox.**') None
FAILED proguard-rules.pro compare after ('# google play service', '-keep class com.google.android.gms.** { *; }', '-dontwarn com.google.android.gms.**', '-keep class com.google.protobuf.** { *; }', '-dontwarn com.google.protobuf.**', '-keep class * extends java.util.ListResourceBundle {', '    protected Object[][] getContents();', '}', '-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {', '    public static final *** NULL;', '}', '-keepnames @com.google.android.gms.common.annotation.KeepName class *', '-keepclassmembernames class * {', '    @com.google.android.gms.common.annotation.KeepName *;', '}', '-keepnames class * implements android.os.Parcelable {', '    public static final ** CREATOR;', '}') None
FAILED proguard-rules.pro compare after ('#sdkbox', '-keep class com.sdkbox.** { *; }', '-dontwarn com.sdkbox.**') None
FAILED proguard-rules.pro compare after ('# google play service', '-keep class com.google.android.gms.** { *; }', '-dontwarn com.google.android.gms.**', '-keep class com.google.protobuf.** { *; }', '-dontwarn com.google.protobuf.**', '-keep class * extends java.util.ListResourceBundle {', '    protected Object[][] getContents();', '}', '-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {', '    public static final *** NULL;', '}', '-keepnames @com.google.android.gms.common.annotation.KeepName class *', '-keepclassmembernames class * {', '    @com.google.android.gms.common.annotation.KeepName *;', '}', '-keepnames class * implements android.os.Parcelable {', '    public static final ** CREATOR;', '}') None

Clearly, SDKBOX is unable to add some compiler flags and link libraries, so I tried to do all of that myself but it still doesn’t work, and its hard for me to figure out where things really went wrong.

I think the problem is with some issues in paths, but I am not sure.

Here’s the complete log: https://gist.github.com/fleon/62d0e33873fc34387cdf5b8013dc6925

Let me know what I can do here. This issue is with any SDKBOX plugin and its really blocking me from integrating things like SDKBOXPlay or Firebase or GA.

I was able to resolve this. For iOS, these are the steps I had to follow:

  1. Add any new cpp files added by SDKBOX to Compile Sources under build settings of your iOS Target

  2. Add any new frameworks added by SDKBOX to Link Binary With Libraries under build settings of your iOS Target

  3. Add res folder to Copy Bundle Resources. This contains the sdkbox_config.json file. If there is no res folder or the config file is missing see this thread for resolution: https://discuss.cocos2d-x.org/t/failed-to-integrate-sdkbox-plugin-with-cocos-creator-2-4/50926/9

  4. Finally, the most critical part: Apparently there is no option for Clang compiler flags in my iOS target so I have to add them as pre-processor macros instead. Add flags for both debug and release version under Apple Clang - Preprocessing.


    My old project had the option of compiler flags in the target, but this project does not have it. Screenshot of old project below

Ideally SDKBOX should have handled all this automatically, but with the current version of Cocos Creator, it does not do all the above steps automatically.

cc @yinjimmy

Thanks for your report.

@htlxyz , plz help to fix this issue.

yes, creator 2.4.1 change res folder

Yes, but other than that, SDKBOX doesn’t add compiler flags for Xcode, and doesn’t add source codes and frameworks to the build either.

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.