SDKBOX Frustrations

I just upgraded Cocos2d-x to 3.14.1 and I’m running into some issues with SDKBOX. To be honest, SDKBOX has always been a pain to work with. I wanted to mention a few things I think need to be looked at.

  • There’s no place to file and check on the status of bugs. I have to come either to this forum or to SDKBOX “answers” and perform various searches to see if anybody else has had the same issue and what the resolution was. It’d be a whole lot easier if there a GitHub page with issues that users could file against SDKBOX.

  • It’s impossible to install versions of SDKBOX plugins other than the latest. If there’s a problem with the latest after I’ve “upgraded” and I don’t have access to the old cached versions on my own machine, there’s no way for me to obtain an older, working version unless I’ve kept copies myself.

  • When I upgraded Cocos, I did a big git clean -fdx to get rid of any files that weren’t supposed to be there. I had to do this because SDKBOX actually stores many of its jar files inside the cocos/platform directory, but they’re not tracked by git, so you’re completely unable to revert to a previous version of your code and be assured that it works.

  • After doing my big git clean, I wanted to reimport all of the SDKBOX libraries so I’d get the latest versions. I ran all of my import statements and they all succeeded. My project built, but then then crashed as soon as I tried to initialize one of my SDKBOX plugins. I checked the adb logs and found that getEnvAttach had failed. This seems to be caused by SDKBOX not being properly initialized in Cocos2dxActivity.java, and sure enough I was missing that code entirely. So why wasn’t I told anything when I imported each of my plugins again?! When I turn on the verbose option (sdkbox import sdkboxads -v) I see that it spits out skipped patch_file Cocos2dxActivity.java. Why is it skipping the patch? Why isn’t a warning generated on the normal output? Now I have to go reference the Manual Integration section for this particular plugin to fix it myself. Again, there seems to be some kind of cached state or reasoning behind why SDKBOX isn’t patching this file, but I have no idea what it is.

So my suggestions are the following:

  • Have a single portal for reporting bugs/issues rather than requiring users to search through message boards.

  • Allow users to specify old versions of SDKBOX plugins to install. That way if there’s something wrong with the current release they at least have an option to install an older, working version.

  • Don’t have any hidden state in SDKBOX (i.e. files that aren’t tracked in source control). If something goes wrong, I want to be able to revert and have my project work the way it used to. Since the files SDKBOX is adding to my projects aren’t tracked (and are stored, but ignored, within cocos’s source-controlled directories) I can’t revert if something doesn’t work. On iOS, all SDKBOX frameworks are added within proj.ios_mac, whereas with Android, the required libraries/jar files are stored under the cocos/platform directory. This is inconsistent and especially problematic because the cocos .gitignore ignores these files so they’re not tracked in git. This prevents a user from reverting to a previous version in case of a problem. It’s also even worse because SDKBOX won’t allow you to download older versions, so you’re totally screwed if you don’t have your own backup copies.

  • If the import process is skipping patches or isn’t guaranteed to be correct, show a warning or error! I shouldn’t have to dig around in verbose mode to determine that the import process didn’t work correctly. Either move to require entirely manual integration for each plugin or make sure that if the import process says it succeeds that it actually did succeed!

I would be happy to help fix this stuff, but the closed nature of SDKBOX sources doesn’t allow me to peek into the internals.

1 Like

Here is my 50 cent to your post:

  • yours suggestions +:

  • missing release info for plugins 2.3.9 what changed?

  • missing “warning” that gpg plugin can’t create new google play profiles on iOS during singup. Only account with valid Google Play Games profile can be used (for sync/save etc).
    See the page from 16.12.2016 section “Account creation within iOS is no longer supported” https://android-developers.googleblog.com/2016/12/games-authentication-adopting-google.html
    Unity users now faced with same problem https://github.com/playgameservices/play-games-plugin-for-unity/issues/1562
    I tested it on iOS and Adnroid, GPG plugin works 100% only on android

  • missing info if we can depend on remote file name and location “config” and how to read it (encrypted with xxtea). Better than still export, download and build game again and again…

  • add more details how to red updated config here: SDKBOX How to read/parse updated sdkbox_config.json? After liveops change

  • missing info how to reset achievements on iOS during debug. I must use this method https://developer.apple.com/reference/gamekit/gkachievement/1520717-resetachievementswithcompletionh

  • I don’t know if achievements work, I try them for two days and seems that not work as described in the documentation.

  • only onReveal callback was called. I try 10x to call it with name from the sdkbox config sdkbox::PluginSdkboxPlay::reveal(“flip_cards2n”), and achievement is still in state 2 (hidden). In the real iOS UI this achievement is revealed with picture.

  • onReveal got some grbage strings for the name “√ìË√ìË√ì∏t+∏t+∏t+∏t+∏t+p+·z”, name is flip_cards2n, so why some garbage? CCLOG %s was used for to log if any doubt. This I get for iOS 9.3.5, for 10.2 got empty string.

  • onAchievementsLoaded got sometimes same/old info even when called with true, sdkbox::PluginSdkboxPlay::loadAchievements(true). For state forever old, current_steps sometimes freez on 0.0 and can’t be incremented.
    This is cloud problem? Some call rate exceed? Any info about rates, service status?

  • no notification banner on iOS when 100% progress of the incremental achievement. Checked 100x “show_achievement_notification”:true on local and liveops (type 1 incremental)

  • form the sdkbox play header. * debug is a common value to all plugins which enables debug info to be sent to the console. Useful when developing. I have debug on in the sdkconfig local/liveops. Conected to the real device with real ip and get nothig/no messages.
    Is there any update? http://www.cocos2d-x.org/wiki/User_Tutorial-Console_Tutorial

  • what is this message: no bundle for bundleID: (null). Project bundle is correct same as itunes/live ops

  • or even better message: url queue underflow. Is called too many times?

  • and the last one, what is this information (version): Copyright © 2016 SDKBOX Inc. v1.0.1.16? Is there any track what is chaged in every release?

If all works and Iam wrong, please tell me little bit more.

EDIT for reveal and callbacks:
Calling reveal before increment achievement on iOS break the callbacks. If I commented reveal call, I finally get callbacks for the onIncrement on unlock etc.
Problem with the hidden state still remain. Achi is 100% finished in iOS (unlocked… you flipped…) UI.

PS:
Installation Successful :slight_smile:

1 Like

Thanks for the feedbacks, we love hearing them so we can improve SDKBOX, hopefully we can address all these in the future!

Thanks for the feedback, I created a repo for tracking issues


will updated it with tags and instructions soon

Yes, that is a problem, we can implement this, also if you have any issue with the latest version, let us know, we’ll fix it ASAP.

That’s actually an issue with how cocos2d-x works. some jars has to be inside the engine folder. I’ve been thinking about a better way to doing this with the new version of cocos2d-x, might need some big changes that will break backwards compatibility…

Seems like a bug can you let me know if the .sdkbox_packages.json was checked in to git?

Do you mean the *.jar and *.frameworks files are been ignored? I would recommend add them to git…

Yes, we can add that.

2 Likes

That was my fault, I’ll update release notes soon

I’ll discuss the remote config issue on the other thread

what kind of issue are you having, I just helped one user release game with achievement on app store. most likely it’s setting related.

We’ll add this function for next release

We’ll also look into onReveal achievement and liveops related issues