Skip to main content
gameduchy
Participant
April 2, 2018
Question

Adobe Air SDK 29 is not accepted by Apple

  • April 2, 2018
  • 41 replies
  • 34970 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

Participating Frequently
April 13, 2018

The most informative error I've got is

The entitlements specified in your application’s Code Signing Entitlements file are invalid, not permitted, or do not match those specified in your provisioning profile. (0xE8008016).

According to this documentation the Entitlements should match the one that are turned on for app ID on developer.apple.com (they are embeded into provision.profiles)

https://developer.apple.com/library/content/technotes/tn2415/_index.html

Not sure how they are build into the app bundle. Will compare between AIR 27 and 29.

Checked the provision profiles. They are the same for AIR 27 and 29.

But the App itself is signed differently.

Using command for unpacked bundle

codesign -d --ent :- ~/Downloads/Bundle/App.app/

Found that in AIR 29.0.0122

App is singed with additional Entitelments

<key>beta-reports-active</key>

        <true/>

That's why I can't install them on all of my test devices. I'm using mac to build apps.

Participating Frequently
April 16, 2018

I'm experiencing the exact same issue that prevents ad hoc builds created with AIR 29.0.0.122 to be installed  and as you correctly pointed out, it is caused by the beta-reports-active, which is not supported for ad hoc provisioning profiles.

Participating Frequently
April 13, 2018

I think we are having the same problem with ad-hoc ipa. I can't install it on the test devices.

Also the store ipa don't want to install. We have two developer programs, one for inhouse Enterprise and one normal Apple developer program.

When I use branch with AIR 27 everything is ok. When I try to build with AIR 29.0.0.122 with adding Assets.car it is not showing icon and and is grey after installation. Tapping it gives me can't install or redownload error. I've tried to install it throw hockey app uploading builds. Also using iTunes or Xcode.

Maybe somebody had that problem? Is it related to AIR 29 SDK?

Amrita Gangwani
Adobe Employee
Adobe Employee
April 13, 2018

Hi,

AIR ADK version 29.0.0.122 has been released. The Apple store app rejection issue, Tracker is addressed with this build. You may download the build from Download Adobe AIR SDK

Thanks!

Inspiring
April 13, 2018

Thanks I have just download it. But there are no release notes for it. When we can expect to see release notes?

Is the only change in the AIR 29.0.0.122 the Apple store app rejection issue?

Thanks

Flipline
Inspiring
April 19, 2018

I was able to workaround the Ad Hoc issue by resigning the IPA using codesign. Here's my solution but keep in mind that my app doesn't use any dynamic Frameworks, so the signing the app is very straight forward. I understand the process of signing is more complex when you have dynamic Frameworks but I don't know for sure.

Anyways, I simply used the commands below to resign the IPA on a MAC (sorry, no windows solution).

# Note: The command are executed in the directory where the IPA is stored. That's why there are no path references. Also, make sure

# you change references to MyApp.ipa, MyApp.app and "My iPhone Distribution Identity" to the correct values for you app.

# "My iPhone Distribution Identity" is usually something like "iPhone Distribution: My Company Name"

#Unzip the IPA Payload

unzip -q  MyApp.ipa

#Extract the current entitlements

codesign -d --entitlements :entitlements.plist "Payload/MyApp.app"

#Delete the unsupported beta-reports-active entitlement for Ad Hoc builds

/usr/libexec/PlistBuddy -c "Delete :beta-reports-active" entitlements.plist

#Remove the current signature

rm -rf "Payload/MyApp.app/_CodeSignature"

#Signs the app using the updated entitlements. Make sure that your distribution certificate is in your keychain

codesign -f -s "My iPhone Distribution Identity" --entitlements entitlements.plist Payload/MyApp.app

# Zips the resigned IPA. The new Ad Hoc app that you'll be able to install is MyApp-resigned.ipa

zip -qr MyApp-resigned.ipa Payload/


Good to see that removing the "beta-reports-active" entitlement does indeed fix this issue.

Amrita Gangwani​ any idea when a new release of AIR will be ready that stops this bug of automatically adding the "beta-reports-active" entitlement to adhoc builds?  As others have mentioned, this was introduced in the the most recent release last Tuesday, and no previous version of AIR automatically added this to adhoc builds.

zasflower2014
Inspiring
April 10, 2018

use this step:

chris.campbell
Community Manager
Community Manager
April 10, 2018

Hi all,

Here are the updated versions of the AIR SDK that we believe fix the issue reported in this thread.  We're still in the process of testing and would appreciate feedback from the community.  If everything looks good, we hope to update the official download page with this build within the next few days.

Windows AIR SDK 29.0.0.122

Mac AIR SDK 29.0.0.122

Thanks,

Chris

Known Participant
April 10, 2018

Good news! I just published a new IPA with the updated SDK and did the Strings test and nothing is showing up for the following any further:

IOKit, IOPSGetPowerSourceDescription, IOPSCopyPowerSourcesList, IOPSCopyPowerSourcesInfo

We are going to re-submit to apple tomorrow and will let you know how it goes.

Thanks Chris!

zasflower2014
Inspiring
April 10, 2018

use WinHex check the .ipa file unzip is OK.

IOPSGetPowerSourceDescription, IOPSCopyPowerSourcesList, IOPSCopyPowerSourcesInfo

these API is here:

https://developer.apple.com/documentation/iokit/1523839-iopscopypowersourcesinfo?language=occ


it is Mac OS only.

I found them at AIR19 AIR24 AIR29.
when you creat a empty AS AIR for IOS project.they are here.

so. AIR still can accept by ios.

smolho
Participant
April 10, 2018

We're in the same situation.

Waiting for updates

natural_criticB837
Legend
April 10, 2018

Hi, just a quick info: Our update for iOS just passed review in iTunes. We are also using Adobe Air 29.0.0.112, a couple of ANEs from Milkman, Distriqt and others. I don't know if it is related to usage of APIs though or if we were just lucky:

https://itunes.apple.com/us/app/mau-mau-online/id964155395

maheenkhalid
Participant
April 10, 2018

Hey, did you do a hex analysis of your application? Is your application using any of restricted APIs?

Participating Frequently
April 10, 2018

Guys, you should check this link better (IOS is blocking AIR, rejected for months,due to AIR has API using IOPSCopyPowerSourcesInfo ), Chris Campbell replied there already.

Participant
April 9, 2018

Looks like possible to fix this (calling mac osx methods on ios) in binary. We will test this soon (file libRuntimeHMAOT.arm-air.a). Looking forward hearing from adobe

LiLin000
Participant
April 8, 2018

想了一下,也许和下面这两段代码有关:

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

NativeApplication.nativeApplication.executeInBackground = true;

LiLin000
Participant
April 8, 2018

Air SDK 22, same problem.