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

Amrita Gangwani
Adobe Employee
Adobe Employee
May 4, 2018

Hi,

The ad hoc provisioning profile issue has been fixed in our latest beta.You may download the latest beta from Download Adobe AIR 30 Beta - Adobe Labs.

Thanks.

Participating Frequently
May 4, 2018

Hello,

Will the fix for adhoc provision singing will be backported to AIR 29?

Because we are still want to support 32bit ios devices.

Thanks.

Colin Holgate
Inspiring
May 4, 2018

One question for you who are having ad hoc issues: Does it not work fine if you submit to Apple with an App Store provisioning profile? If testing using ad hoc is the only issue, you can do your development and testing with a development profile, and then submit to Apple with an App Store provisioning file. Wouldn't that work?

Inspiring
May 3, 2018

Hey, is it normal that I still see these in winHEX even with air 29.0.0.112?

_IOPSGetPowerSourceDescription, _IOPSCopyPowerSourcesList, _IOPSCopyPowerSourcesInfo

Flipline
Inspiring
May 3, 2018

Yeah, 112 is the older version of AIR before they fixed that.

Inspiring
May 3, 2018

Ok, just updated to 122 and I can't find it anymore thx.

Shahbaz Pothiawala
Participating Frequently
April 26, 2018

Hi. I am following this thread since that time I was getting error IOPSCopyPowerSourceInfo. I am now using AIR SDK 29 from the Adobe website along with Assets.car file packaged with the app. However, I now get the following error email from Apple saying :

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSLocationAlwaysUsageDescription key with a string value explaining to the user how the app uses this data.

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSLocationWhenInUseUsageDescription key with a string value explaining to the user how the app uses this data.

On searching, I found that ios apps require permissions to be set in XML that would also reflect in info.plist file.

However, my app does not require any location permission! Is it the new sdk that needs location permission? If so, why? and how do I solve this error?

Known Participant
April 26, 2018

Hi, I've just had the same problem! Just when I thought I'd got it nailed, now this new bug!

Shahbaz Pothiawala
Participating Frequently
April 26, 2018

I think I got some solution to my own problem. Adding the below code in the app descriptor xml might work, as doing so my app just passed the initial phase and is now under review by apple. hope this works.

<InfoAdditions>

      <![CDATA[<key>NSLocationAlwaysUsageDescription</key><string>Required by Adobe SDK</string><key>NSLocationWhenInUseUsageDescription</key><string>Required by Adobe SDK</string><key>UIPrerenderedIcon</key><true/><key>UIDeviceFamily</key><array><string>1</string><string>2</string></array>]]>

    </InfoAdditions>

Inspiring
April 20, 2018

It looks like you guys released this on the main download site, this means we can consider this production-ready?

https://www.adobe.com/devnet/air/air-sdk-download.html

Colin Holgate
Inspiring
April 20, 2018

It seems to be the same build number and modified date as the build that has the Ad Hoc issue, but it's no doubt as good as what was there before, and you can at least submit apps to Apple with it.

Known Participant
April 23, 2018

Hi Colin,

I've just submitted an app to Apple with the latest SDK: Air 29.0.0.122

The build was sent back with this quick email response:

Missing Asset Catalog - Your app is missing the asset catalog file in 'Bullying.app'. For more information see http://help.apple.com/xcode/mac/current/#/dev10510b1f7.

Do you know if new icons are needed that we need to attach?

- I've never needed to add an Asset.car file in the past (do we need to?)

- I've managed to build apps with the minimum icons: 180,167,152,144,120,76,72,57

I'm using Flash Animate V18 (107)

Do you know if updating will fix this issue? (I often don't update in case things like this go wrong!)

Thanks,

Matt

Participant
April 19, 2018

Hi - we're trying to use the new Air29 build; it's compiling fine to a swf but we're getting the following error when we try to package it for iOS using our Developer profile:

ld: unsupported address encoding (D0) of personality function in CIE for architecture arm64

Compilation failed while executing : ld64

It's compiling fine with Air 28. As I understand it, this is a problem with getting Windows to talk to iOS - has anyone successfully used the SDK to make a build through Windows?

Participant
April 18, 2018

I'm having the same issue.

I build against Air 29 as Adhoc and I can't install on a device. I build against Air 26 as Adhoc and everything is fine.

If I build against Air 29 as an AppStore build, will it be safe to submit?

Amrita Gangwani
Adobe Employee
Adobe Employee
April 18, 2018

Hi,

Thanks for reporting the issue. The issue seems to be due to an unwanted tag in your Entitlements.plist. You may try following options:

1) Remove the existing provisioning and re-generate the provisioning from the iOS Provisioning portal and try packaging again

OR

2) If you've added the following tag in your application XML

     <key>keychain-access-groups</key>

        <array>

        <string>(your app id)</string>

        </array>

Try packaging the application after removing the tag. The tag is only needed to share keychain access across apps created by the same group.

Participating Frequently
April 18, 2018

The solutions you suggested didn't work for me. I've made sure to generate a new ad hoc provisioning profile and directly inspected it to ensure that there are not unwanted entitlements. Also, in my application descriptor XML there are no <key>keychain-access-groups</key> tags.

After packaging the application, I keep getting the installation issue and the installation fails warning about an entitlements problem. When I use codesign to check the entitlements  in my application I found that the entitlement below was added:

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

<true />

Of course that entitlement is not in my provisioning profile with 100% certainty because as I stated above, I directly inspected the new provisioning profile I generated. This makes because Apple doesn't allow beta-reports-active for Ad Hoc or development provisioning profiles: Technical Q&A QA1830: The beta-reports-active Entitlement

beta-reports-active is being added by ADT when it packages and signs the Ad Hoc app. That is the issue you need to address. ADT is arbitrarily adding an entitlement without verifying what's in the provisioning profile.

Amrita Gangwani
Adobe Employee
Adobe Employee
April 18, 2018

Hi,

The ad-hoc provisioning profile issue is known to us. We are working on it.

There should not be an issue with the developer provisioning profile.

Thanks.

Participating Frequently
April 17, 2018

Hello, sorry that I still writing to this thread, but I think that issue with adhoc is related to latest AIR 29 build

We were able to install builds to our devices with AIR 27 and AIR 28

I've submitted a bug ticket

Tracker

If somebody has a workaround will appreciate that.

Participating Frequently
April 16, 2018

Hello,

We found that problem with development build was with developer certificate and provision profile.

But our Enterprise Inhouse builds still does not work.

Also the Appstore build with AIR 29 can't be installed on test devices. AIR 27 works.

We found one interesting error in console.

entitlement ‘<private>’ has value not permitted by provisioning profile ‘<private>’

Previously we were thinking it was related to the beta-reports-active

But this Entitlement beta-reports-active is in appstore distribution provision profile and should be in Appstore binary.

Does anyone have an idea what can it be? We can't submit our app even with the updated AIR 29 SDK.

Maybe @Adobe can backport that fix for IOPS into AIR 27 and yearly?

dmtkuyuk
Known Participant
April 16, 2018

Hi Everyone,

I am developing an app using Adobe Animate CC 2018. But i can't upload my app on a ios 11 device. I uploaded other old ios devices, there is noı problem. But if i want to upload on a ios 11 device, it has an error.

What can i do?

Is this problem fixed?