Skip to main content
gameduchy
Participant
April 2, 2018
Question

Adobe Air SDK 29 is not accepted by Apple

  • April 2, 2018
  • 41 replies
  • 34628 views

IOS is blocking AIR, rejected for months,due to AIR has API using IOPSCopyPowerSourcesInfo

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:

Thanks for your resubmission.

Guideline 2.5.1 - Performance - Software Requirements

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.

This topic has been closed for replies.

41 replies

yindekai
Participant
April 7, 2018

这个问题只有等aodbe解决了吗?

slavik_yad
Participant
April 7, 2018

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?

Inspiring
April 7, 2018

As far as I my submissions attempts and rejections goes the issue has been present for me from AIR 26 to AIR 29

Participant
April 6, 2018

Air SDK 27. same problem.

Myflashlabs told me that they didn't use it.

Waiting for adobe fix

Participant
April 6, 2018

Air SDK 27. same problem.

Myflashlabs told me that they didn't use it.

Waiting for adobe fix

onehalf3544
Participant
April 6, 2018

I have same problem today, when I was try to go from AIR25 to AIR29

Participant
April 6, 2018

We have then sample problem. Air SDK 25.

Participant
April 6, 2018

We also have the same problem. AIR SDK27.

Inspiring
April 5, 2018

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.

marchbold
Inspiring
April 6, 2018

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.

air native extensions // https://airnativeextensions.com
Inspiring
April 5, 2018

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

Participating Frequently
April 5, 2018

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.

Known Participant
April 5, 2018

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.