[TIMOB-20192] [Windows Phone 8.1] Certification reject - This API is not supported for this application type - Api=OutputDebugStringA. Module=api-ms-win-core-debug-l1-1-1.dll
GitHub Issue | n/a |
---|---|
Type | Bug |
Priority | Critical |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2016-01-05T19:06:04.000+0000 |
Affected Version/s | Release 5.1.1 |
Fix Version/s | Release 5.2.0, Release 5.3.0 |
Components | Windows |
Labels | n/a |
Reporter | Marian Kucharcik |
Assignee | Kota Iguchi |
Created | 2015-12-22T08:30:22.000+0000 |
Updated | 2016-02-22T17:59:26.000+0000 |
Description
Hi guys, I created an Windows Phone 8.1 app, it's ready to publish and it's working fine. The problem is, that when I try to release it on the Store, it cannot pass certification process. I talked to MS Tech support and they pointed me to test it through WACK(Windows App Certification Kit). WACK throws me this error message:
{color:#d04437}MESSAGE TEXT="This API is not supported for this application type - Api=OutputDebugStringA. Module=api-ms-win-core-debug-l1-1-1.dll. File=EDUCentrum.exe." />
< MESSAGE TEXT="This API is not supported for this application type - Api=OutputDebugStringA. Module=api-ms-win-core-debug-l1-1-1.dll. File=HAL.dll." />
< /MESSAGES> {color}
I found this thread on community.appcelerator.com with same problem(but no answer/solution):
[link https://community.appcelerator.com/topic/3691/windows-phone-store-app-reject/2](https://community.appcelerator.com/topic/3691/windows-phone-store-app-reject/2)
Can you guys please look at it and fix it? I really need to release this app...
Thank you
[~cwilliams] Any pointers for this?
Hi guys, any news/solution on this bug? I received email from MS support, from Amanda, MS Tech Talk: .... I talked with my internal team and I wanted to pass along this information should it prove helpful. For < MESSAGE TEXT="This API is not supported for this application type - Api=OutputDebugStringA. Module=api-ms-win-core-debug-l1-1-1.dll. File=HAL.dll." /> < /MESSAGES> It should be using Output DebugStringW instead. ... Can you please try to change DebugStringA to DebugStringW? Thank you
[~max87] Hi, [~cwilliams] will get back to you soon. As this is the Christmas holiday season you can expect some delay in the response. [~pinnamuri] Do you know anything about it.
Looks like we're not skipping debug log output in our release builds somehow, causing the Api to be used in production builds and fail app certification!
https://github.com/appcelerator/titanium_mobile_windows/pull/521
Seems like JavaScriptCore.lib contains OutputDebugStringA too. Working on it...
Pushed fixes to master branch (which is currently the 6.0 target branch)
Hi guys, I don't understand how can I implement these changes in my project for resolve the certification of windows phone store. * What files should I update? * What are the paths for this file?
[~e2na] and [~max87] We're still working on this issue. It turns out that both our code and JavaScriptCore made use of a debug logging function that causes apps to fail their certification tests. So we're updating both to remove that, as well as looking into other issues that can cause failure to pass their certification tests (specifically right now we're re-enabling safe exception handling on x86 builds, but that requires us to make changes to the threading model used by our JavaScriptCore port on Windows 10). Hopefully soon you'll be able to grab a new build of our SDK off master branch branch (
appc ti idk install -b master
) and just have to run another build to get all the fixes.Actually [~e2na] and [~max87] now that this issue is fixed and you're doing Windows 8.1 development, you should be able to grab a build off master now and test the fix (the other issues are specific to Windows 10 certification/builds). Basically just do a
appc ti idk install -b master
, then update the trap.xml of the project and redo the build. It _should_ pass certification then.Hi Chris, thanks to the timely response. I installed the new SDK as you explained. The installation is successful and the compile also, but the error persists. I am attaching the log of the Windows app certification kit. {color:#d04437}â—¦The API is not supported for this type of application - Api=OutputDebugStringA. Modulo=api-ms-win-core-debug-l1-1-1.dll. File=HAL.dll.{color}
I think today's CI build fixed the issue. Would you try latest
6.0.0.v20160108152551
? (appc ti idk install -b master
)You are right, I installed the environment so clean and the error is fixed. Thank you for your work.
Hi guys, I installed SDK 6.0.0 and I pass WACK certification. However, I can't release the app - I stuck on Submission screen, that tells me, that my last submission failed certification, When I resend the appx, it stucks on certification process for a long time(after reload it redirects me to previous screen). I have another problem - after I installed new SDK 6.0.0 when I want do distribute app from Appc Studio(Publish - Windows Phone distribution), the process goes well but at the end there is no file output in targeted folder - it shows me notification in right bottom corner, but when I go to that folder, is empty. So I go to build folder of app(..\build\windows\phone.ARM\Release\MyApp_1.0.0.0_Bundle.appx) and upload this file. Can this cause the problem with certification? Thank you.
Hi guys, since yesterday, when I build our app to device, build success, but when app starts, it shows Splash screen and then crash. Throws this error: {color:#d04437}[ERROR] : The remote procedure call failed. [ERROR] : Error: The remote procedure call failed. at ChildProcess.
[~max87] The issue regarding the apps not getting copied over is addressed with TIMOB-20172 Grabbing the file from that location should have been fine, and shouldn't cause any issue. Not sure why the certification process is acting wacky for you. As far as the "crash" when installing to device, that's a generic error message and basically just means "something went wrong installing and launching the app". But you're saying the same app with no changes installs fine with 5.2.0, but not 6.0.0 builds? That's disconcerting as it may mean that we've introduced the bug in the SDK that's causing the crash... Is the app loading it's splash screen? Does it work on emulator? Does the default titanium app work?
Hi Chris, _same app with no changes installs fine with 5.2.0, but not 6.0.0 builds_ yes, that's right, when I swiych SDK to 5.2.0 it runs normally(no other changes) I tried to run this app on emulator and it's not working - same error. When I switch SDK to 5.2.0 it's working fine in emulator, so I think this is new bug in 6.0.0 Thank you
For the "crash at splash screen" issue, we have created a ticket TIMOB-20197. I think we want move there if we have further discussion about the crash.
Hi Kota, thanks for all help and work on this ticket/bug. I added myself as watcher in TIMOB-20197, I'm looking forward for fix. Thank you
HI Kota, Chris, I am facing same issues recently while uploading my app on Windows store * File HAL.dll has failed the SafeSEHCheck check. * API OutputDebugStringA in kernel32.dll is not supported for this application type. HAL.dll calls this API. * API OutputDebugStringA in kernel32.dll is not supported for this application type. CCEmployee.exe calls this API. I have tried updating the sdk as you instructed previously but I am still facing the same issues again. I have to upload this app asap pl help.
[~paramsb] What version of the SDK did you update to? You need to grab a master build of the SDK and make sure the app tiapp.xml is pointing at it as well.
ti sdk install -b master -d
to grab a 6.0.0 master branch build of the SDK...Hi Chris, I tried also latest 5.2.0 SDK from 5.2.x branch(http://builds.appcelerator.com.s3.amazonaws.com/index.html#5_2_X) but it seems, that this bug is not fixed in it - my app runs fine, but cannot pass the certification. In other hand, when I install 6.0 SDK, app keeps crashing and has problem with JSON(no problem with 5.2.x, same data). Thanks
Hi Chris, I noticed that you edited "Fix version" and added 5.2.0. Will be this fix included in today's/tommorows continous release of 5.2.0? Thank you for your answer.
[~max87] Assuming all the builds go smoothly, yes there should be a new build of the SDK on the 5_2_X branch with the fix in a few hours.
ti sdk install -b 5_2_X
That's great news, thank you Chris.
@Chris Williams I have upgraded my SDK to 6.0.0, and now I am able to pass the Windows Security Certification and API check, but now this upgraded SDK has affected my apps layout as .tss files are not working and also app gets crashed frequently.
Hi Chris, I succesfully build my app with 5.2.0.v20160216202526 SDK, I passed WACK certification but can't pass Submission certification. It throws Error 2001(https://msdn.microsoft.com/en-us/library/windows/apps/mt445539.aspx). I tried recompile as it states on that site, but no change. Can you please advice me what I have to change to pass Submission certification? Thank you
Ugh, that error could mean one of several different issues apparently. Does it give no further details? The page lists the following possible causes: - -*One or more assemblies in the package are obfuscated incorrectly*: Use a different tool to perform the obfuscation, or remove the obfuscation. The compile process optimizes the obfuscated assemblies, but occasionally some assemblies are obfuscated using a tool that modifies the MSIL in an unsupported way that will cause an error.- - *The size of one or more methods in the app exceeds 256 KB of IL*: Refactor the offending method into smaller functions. The size of MSIL for methods in an assembly can be determined by using the ILDASM tool. - -*The strong name signature validation failed for one or more assemblies*: This error typically occurs when the strong name signing was performed using a key different than the one expected in the assembly metadata. Sign with the correct key, or remove strong name signing.- - -*The package contains mixed-mode (with managed and native code) assemblies*: Mixed-mode assemblies are not supported on Windows Phone. Remove the mixed-mode assemblies from the package and resubmit the app.- - *A Windows Phone 8.1 XAP or appx/appxbundle assembly is not valid*: Make sure your .winmd file has at least one public entry point. You can use any decompiler application to review the code and check for public entry points if needed. Of those, some just shouldn't apply/happen (the ones I struck out). We only do native code (C++/CX), so there's no mixed-mode code, and only managed code (VB/C#) uses strong name signing. We don't do anything special to obfuscate code either. So I'm guessing somehow we're generating an invalid .winmd with no public entry point; or maybe a method is exceeding 256KB of IL? We'll have to take a deeper dive to see what the heck is going on here... cc [~kota] and [~gmathews]
Hi Chris, I've got only Error Code 2001(this is also step forward from MS, in the past when I tried to pass certification it throws that there was some error and I'm supposed to correct it and try again, but no sign of what is wrong...) Anyway, thank you for your support and I'm looking forward for your answer. Thank you. Best regards
Make sure your .winmd file has at least one public entry point
sounds most likely the issue. This sounds it means eachwinmd
should have at least public entry point, which means each winmd should have had at least one publicref class
. As far as I remember only few winmd have publicref class
in Titanium.https://github.com/appcelerator/titanium_mobile_windows/pull/563
HI Chris, After installing this new update the app is crashing repetedly, Also I tried to package the app using Windows Phone option and uploaded it to the Windows App Store I am encountering Error 2001.
[~max87] The fix from [~kota] has landed on master branch (6.0.0) for adding one entry point to each winmd file. I'll backport it to 5.2.0 branch as well now.
Verified using: Windows 10 Pro VS 2015 Update 1 Appc NPM: 4.2.3-2 Appc Core: 5.2.0-269 Ti SDK: 5.2.0.v20160219124528 Appc Studio: 4.5.0.201602170821 Verified using the following steps:
Using Ildasm.exe on each .winmd file to ensure they all have at least one public entry point
Using Windows App Certification Kit on Alloy and Classic apps packaged for both dist-phonestore and dist-winstore using 8.1 SDK to check for unsupported APIs
Using Windows App Certification Kit on Alloy and Classic apps packaged for both dist-phonestore and dist-winstore using 10.0 SDK to check for unsupported APIs
All of the above checks are successful. I will wait to close this ticket until it is verified that https://github.com/appcelerator/titanium_mobile_windows/pull/563 fixes Error 2001 as seen by [~max87] and [~paramsb].Hi guys, I can confirm, that my app builded with SDK 5.2.0.v20160220080449 successfully passed all stages of MS certification and finally is being published to the Store! Very big thanks to all of you for your hard work.
Hi Evan, I am sorry but I am facing some other issues in my project, so can't verify right now. Will ensure you asap. Thanks
[~max87], Thanks for the confirmation. [~paramsb], For now, I will close this ticket as fixed. If you still encounter this issue, please feel free to reopen this ticket.