SkiaSharp violates Windows Store App Certification

Hi All

Just finished creating a great UWP app using SkiaSharp. Ive tried running the App Store Certification Kit, but I get the following voilations:

Error Found: The supported APIs test detected the following errors:
API TlsAlloc in kernel32.dll is not supported for this application type. libSkiaSharp.dll calls this API.
API TlsGetValue in kernel32.dll is not supported for this application type. libSkiaSharp.dll calls this API.
API TlsSetValue in kernel32.dll is not supported for this application type. libSkiaSharp.dll calls this API.
Impact if not fixed: Using an API that is not part of the Windows SDK for Windows Store apps violates the Windows Store certification requirements.

So, can we publish to the Windows App Store with SkiaSharp ? if not the UWP support doesnt make any sense.

Can anyone help me out with this ? Thanks

Dean

Tagged:

Posts

  • DaveHuntDaveHunt USMember ✭✭✭✭✭

    @DeanChalk

    According to the source on github, the UWP library should be calling FlsAlloc/FlsGetValue/FlsSetValue instead of the Tls* functions. It looks like the latest stable nuget package is about 4 months behind github. Also, some changes were made in the UWP source on 21 June. So even the latest beta nuget package (15 June) may not work with UWP, but it may be worth a try.

    At any rate, SkiSharp is a work-in-progress, so your mileage may vary.

  • DeanChalkDeanChalk GBMember

    Wow @DaveHunt that brilliant feedback - thanks so much - it answers my question perfectly. I assumed it was a fundamental flaw in the package, but it turns out its a temporary glitch in the current 'work-in-progress' builds - phew!

    I am using the latest beta, and it doesn't work. Maybe Ill try and compile the source myself and see if that fixes things.

    Thanks again.

  • DeanChalkDeanChalk GBMember

    So close and yet so far - Ive just upgraded to the latest beta and now I get

    API getenv in api-ms-win-crt-environment-l1-1-0.dll is not supported for this application type. libSkiaSharp.dll calls this API.

    I dont know if anyone knows who controls the SkiaSharp github repo, but if someone does know can they tell me as I need to work out a way forward with this - I have a great UWP product ready to roll, and no one is running the Windows Cert kits on this

  • DaveHuntDaveHunt USMember ✭✭✭✭✭

    It looks like the problem is in Skia itself. Skia makes use of Lua and libSDL, which both have calls to getenv in them.

    As libSDL actually calls SDL_getenv, it may be they have a UWP-compatible version of that, so the culprit would most likely be Lua. Skia has it's own copy of the Lua source, which clearly has calls to getenv.

    You might try replacing those calls in the skia/third_party/lua/src of Skia and building your own Skia library to use with SkiaSharp. That doesn't look fun, but it might be worth a shot.

    The SkiaSharp build process does some magic to replace some non-UWP-compatible calls, but doesn't appear to address some (all?) of the third-party libraries it uses.

  • DeanChalkDeanChalk GBMember

    OK, so in conclusion then UWP support (for making apps deployable) is a long way off.
    Probably best to can UWP and concentrate on the other (possibly more important) platforms.

    Thanks ever so much for your help, i really appreciate it :)

  • DaveHuntDaveHunt USMember ✭✭✭✭✭

    I'm sorry to say you're probably right.

    You're welcome, though I wish I could have offered a better option.

  • mattleibowmattleibow ZAXamarin Team Xamurai

    Hi @DaveHunt and @DeanChalk, thanks for using SkiaSharp.
    I have been hard at work getting UWP support finished, and I think I have done it. The last two releases: v1.53.1 and v1.53.1.1 should not cause any certification errors.

    Please open an issue (https://github.com/mono/SkiaSharp/issues) if this is still the case so we can fix it ASAP.

  • DeanChalkDeanChalk GBMember

    @mattleibow - thanks for all the hard work, my app now passes windows store certification kit and it's about to be published. It's an icon creation tool that uses SkiaSharp to draw vector icons from path data and then export them to PNG files, so SkiaSharp has been central to the whole app - I'm well chuffed - thanks again

  • DeanChalkDeanChalk GBMember
    edited August 2016

    Well, looks like the issues continue I'm sorry to say.

    Although my app passed the certification kit in Visual Studio 2015, when I actually submitted the app to the store it fails compliance because of non-supported API's

    API getenv in api-ms-win-crt-environment-l1-1-0.dll is not supported for this application type. libSkiaSharp.dll calls this API.

    I'll log this issue again on GitHub

    Thanks again

    EDIT

    Hang fire for a bit - I've just noticed another update to the SkiaSharp nuget package - i was using 1.53.1 but now there is 1.53.2 available - ill give it a shot.

  • mattleibowmattleibow ZAXamarin Team Xamurai

    @DeanChalk Thanks for brining this to my attention. I submitted an app and got the same thing. I am not exactly sure what is using it, and why the client doesn't detect it, but I will get to the bottom of it!

  • mattleibowmattleibow ZAXamarin Team Xamurai

    All right, moving this to GitHub: https://github.com/mono/SkiaSharp/issues/129

  • mattleibowmattleibow ZAXamarin Team Xamurai

    Your submission for Skia.UWP.Demo passed certification.

    It will take up to 16 hours for your changes to be visible to all of your customers. Once published, your app's listing will be available at https://www.microsoft.com/store/apps/9NBLGGH51856.

    Thank you,
    The Windows Store Team

Sign In or Register to comment.