Copy link to clipboard
Copied
Our mobile game uses FLash, and AIR 29 to make it work on IOS devices,
However, we can't upgrade our game since half year ago, and Apple review team finally told us the reason:
REJECTED:
Your app uses or references the following non-public APIs:
_IOPSCopyPowerSourcesInfo, _IOPSCopyPowerSourcesList, _IOPSGetPowerSourceDescription
The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.
Next Steps
If you are using third-party libraries, please update to the most recent version of those libraries. If you do not have access to the libraries' source, you may be able to search the compiled binary using the "strings" or "otool" command line tools. The "strings" tool can output a list of the methods that the library calls and "otool -ov" will output the Objective-C class structures and their defined methods. These tools can help you narrow down where the problematic code resides. You could also use the "nm" tool to verify if any third-party libraries are calling these APIs.
Resources
For information on the "nm" tool, please review the "nm tool" Xcode manual page.
If there are no alternatives for providing the functionality your app requires, you can file an enhancement request.
Then we found it's in AIR sdk, even 29.
Then we replied:
The earlier letter said our app has the following non-public APIs:
"_IOPSCopyPowerSourcesInfo", "_IOPSCopyPowerSourcesList" and "_IOPSGetPowerSourceDescription".
We checked the ipa file with the tools you suggested.
"nm" and "oTool" found none.
The tool "strings" only found "IOPSCopyPowerSourcesInfo", "IOPSCopyPowerSourcesList" and "IOPSGetPowerSourceDescription" (non-underlined) referenced.
After searched the non-underlined version from the apple develop center, we thought they are public APIs.
However, we never called them.
These were found in the popular SDK Adobe AIR, and were alone there for years.
We haven't got any alternatives beyond Adobe AIR.
Copy link to clipboard
Copied
The certificate warning comes from Apple recently changed requirements. It happens with other AIR versions before 29. It will not prevent your app from being accepted so you can move on.
See thread New Bug with Adobe Air 29.0.0.122
Copy link to clipboard
Copied
"Analysis of the hex contents of the packed IPA file reveals that those methods are at least referenced somewhere in the contents. I was also able to locate names of those functions in the libRuntimeHMAOT.arm-air.a file located in lib\aot\lib folder of AIR SDK."
If we manually remove the references from this file, will it solve the problem temporarily?
Copy link to clipboard
Copied
Hey, how did you analyse the IPA file. I tried using nm tool and also otool and didn't find any references to any of the APIs that Apple has mentioned. Thanks
Copy link to clipboard
Copied
@maheenkhalid
IOPS functions are found if you open the package with hex editor (or use the strings tool).
otool output does have CTUtilities and establishIOKitConnection references, though.
Copy link to clipboard
Copied
Copy link to clipboard
Copied
Developers,
Tracker bug submission issue has been resolved. Team is working on identifying the root cause for app submission issue on utmost priority.
We will keep this thread posted.
Thanks,
Ankit | Adobe AIR Engineering
Copy link to clipboard
Copied
Hi Anki,
What's the new? I hope this issue will be resolved soon.
Thanks.
Copy link to clipboard
Copied
Ankit - first off thank you AIR Team for continuing to develop this amazing platform!
I believe this is the link to that bug on: Tracker
Copy link to clipboard
Copied
Ankit,
Like dews and many others, I would just like to thank the AIR team for your hard work and dedication for making such a valuable tool. I thank my lucky stars for AIR everyday. Good luck identifying the problem before you, and I hope you find a solution soon!!!
Bill
Copy link to clipboard
Copied
Hi,
Is there any update? Has anyone managed to get their apps approved after this issue surfaced?
Hoping that your team managed to get some breakthrough. We have few critical updates lined up.
Copy link to clipboard
Copied
We've got a response from Apple. Here it is:
-----
Thank you for your response. We appreciate your efforts to comply with the App Store Review Guidelines.
Regarding 2.5.1, your app leverages non-public API in +[CTUtilities establishIOKitConnection].
The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
-----
@Anki(AG) I've found references to the function by that name in both libRuntimeHMAOT.arm-air.a and libRuntimeInterpreter.arm-air.a.
@Vivid75 Haven't tried that, but I'm pretty sure it would just produce a broken binary. You probably could decompile static libraries, but it would not be easy.
Copy link to clipboard
Copied
Just got the same reply from Apple. So do we know if this is the Adobe AIR development team's responsibility to fix? Looks like all references using IOKit need to be removed. I did remove the IOKit.framework from the lib/aot/stub path and it re-compiled fine. Not sure if it removes the references though. looking into it now.
Hopefully it is quick, because right now we can't publish using any version of Adobe AIR and have updates that are needed to support our customers.
Copy link to clipboard
Copied
Does this mean the reason is the AIR sdk and we cannot change anyting ourselves, so we need to wait for a new AIR sdk to be able to push new apps? This would be devastating for my company..
Copy link to clipboard
Copied
It seems so since the problem exists in more than 1 version of the Adobe AIR SDK. (27,28, and 29 so far)
Copy link to clipboard
Copied
Add Air SDK 26 to the list. Ours was just rejected for the same reasons.
Here are my ANEs
Copy link to clipboard
Copied
When i run
strings /Users/user/Payload/MyApp.app/MyApp
in terminal it does find these in its search.
com.apple.framework.IOKit
IOPSCopyPowerSourcesInfo
IOPSCopyPowerSourcesList
IOPSGetPowerSourceDescription
Copy link to clipboard
Copied
I got this reply from apple when i asked if they could help identify where the issue was coming from:
"Thank you for your reply. Our team found this app contains Private API abuse.
Examples of this abuse may be found in the method [CTUtilities establishIOKitConnection]. To continue review it would be appropriate to remove all Private API abuse, then resubmit for review. If this abuse is found in third party code, it would be appropriate to work with the third party developer to resolve this concern.
Thank you,
App Store Review"
Anyone know which method uses : CTUtilities establishIOKitConnection
Copy link to clipboard
Copied
They are being inconsistent about this. We had a submission approved yesterday - after apparently some here had already been rejected for this - but we had to submit an update because of a problem with a language xml file. Today we were rejected for this, and now we're stuck. So it's not anything we're doing, any functions we're calling or not calling, or any ANEs we're including.
It's clear that this is an AIR SDK issue that Apple has decided to reject apps for, which they didn't before and maybe aren't consistent about doing even now.
Copy link to clipboard
Copied
Just would like to confirm that I've been through all the compiled libraries and sources of our ANEs (distriqt) and we are not using these private APIs from IOKit in any of our ANEs and those strings aren't present in our extension binaries.
This issue seems unrelated to our ANEs at least.
Copy link to clipboard
Copied
We also have the same problem. AIR SDK27.
Copy link to clipboard
Copied
We have then sample problem. Air SDK 25.
Copy link to clipboard
Copied
I have same problem today, when I was try to go from AIR25 to AIR29
Copy link to clipboard
Copied
Air SDK 27. same problem.
Myflashlabs told me that they didn't use it.
Waiting for adobe fix
Copy link to clipboard
Copied
Air SDK 27. same problem.
Myflashlabs told me that they didn't use it.
Waiting for adobe fix
Copy link to clipboard
Copied
My app is using AIR 26. I planned to rollout a new version in a few days, based on AIR SDK 28.0.0.126. Seems like it will be better for me not to do this, isn't it?