Skip to main content
gameduchy
Participant
March 31, 2018
Question

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

  • March 31, 2018
  • 41 replies
  • 30556 views

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
July 12, 2018

Hi Amrita,

Are there any updates on this issue yet?

Inspiring
July 12, 2018

As far as I know these problems were fixed with the latest build of AIR 29 and with AIR 30, which fixed other issues as well.

Have you tried AIR 30 SDK?

Download Adobe AIR SDK

sashir82552880
Inspiring
May 7, 2018

chris.campbellpravishtisniestudioOMA2k

I used the AIR SDK 30 and created a final release package for Apple App Store ipa and uploaded the ipa to itunes connect. I got the below error:

Dear Developer,

We identified one or more issues with a recent delivery for your app, "Dollar Mobile". Please correct the following issues, then upload again.

Invalid Code Signing Entitlements - The entitlements in your app bundle signature do not match the ones that are contained in the provisioning profile:

The bundle contains a key that is not included in the provisioning profile: "beta-reports-active" in Payload/Dollar.app/Dollar

Your binary is not optimized for iPhone 5 - - New iPhone apps and app updates submitted must support the 4-inch display on iPhone 5 and must include a launch image referenced in the Info.plist under UILaunchImages with a UILaunchImageSize value set to {320, 568}. Launch images must be PNG files and located at the top-level of your bundle, or provided within each .lproj folder if you localize your launch images. Learn more about iPhone 5 support and app launch images by reviewing the 'iOS Human Interface Guidelines' at https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen.

Missing required icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 7.0.

Missing required icon file - The bundle does not contain an app icon for iPad of exactly '76x76' pixels, in .png format for iOS versions >= 7.0.

Missing required icon file - The bundle does not contain an app icon for iPad of exactly '152x152' pixels, in .png format for iOS versions >= 7.0.

Can you please suggest and advise. Thanks.

pravishtis
Adobe Employee
Adobe Employee
May 8, 2018

Hi,

For the provisioning-profile error, could you please try once with generating a new provisioning-profile from Apple Developer Portal and packaging the application with the new provisioning.

For the launch images error, please make sure you're including the launch images as per the specifications mentioned here: Launch Images on iOS with Adobe AIR​.

For the icons error,

  • Include the icons in the icons tag(for iOS 10 and below) in application descriptor as follows:

    

     You can specify the path(with respect to application descriptor) and names as per your convenience.

  • Create Assets.car(for iOS 11 and above) and package it with swf and app-xml as any other resource. For assistance on creating Assets.car, please refer Release Notes Flash Player 28 AIR 28​.

Let us know if you still face issues.

Thanks!

Pravishti | Adobe AIR Engineering

Participating Frequently
May 10, 2018

Hello,

I have tried all of what you mentioned but I stil cannot install the ipa ( build using an enterprise provisioning file and certificate ) on to my iPad. I am still expriencing the same, XXX cannot be installed at this time. ( I really wish Apple made this alert more detailed... )

Can you please look into this for us?

e.g. Was I supposed to use an adhoc provisioning file? For the enterprise apps, what is the procedure?

Thank you in advance...

Best Regards,

Risa

Participating Frequently
May 7, 2018

Hello everyone,

Has anyone tried using Air30 yet?

I tried it but still can't install the app using the enterprise provisioning file.

I'm still getting the same "Unable to download app. "name of my app" could not be downloaded at the time." message.

Am I doing something wrong?

Participant
May 4, 2018

Dear Adobe,

The decision to drop 32bit support, if implemented, will be devastating to our business. We put a lot of faith in you when we decided to use AIR to make our product. Please don't let us down now!

Flipline
Inspiring
May 4, 2018

chris.campbell​,

We've already been told in another thread that this decision to remove 32-bit from iOS apps was based on a change in macOS, a completely separate platform that is unrelated to iOS.  It's shocking that this decision was made arbitrarily like this, when there is not any actual reason that iOS can not support 32+64bit apps (in fact, combined 32+64bit is still the standard for Xcode and all other SDKs and solutions including Unity, Corona, etc.for iOS deployment).

The biggest issue though is that, according to Apple's policies, existing apps that are already 32+64-bit CAN NOT be updated with a version that is limited to 64-bit-only.  You can find documentation for this Apple policy here:

Device Compatibility

Important: All device requirement changes must be made when you submit an update to your binary. You are permitted only to expand your device requirements. Submitting an update to your binary to restrict your device requirements is not permitted. You are unable to restrict device requirements because this action will keep customers who have previously downloaded your app from running new updates.

This documentation applies to UIRequiredDeviceCapabilities keys "arm64" and "armv7" among others, and this is precisely what Adobe's current build of AIR 30 is doing -- adding arm64 as a requirement, which was not present in apps previously released in AIR, which will "keep customers who have previously downloaded your app from running new updates" as is mentioned in the Apple policy.

This change in AIR 30 is much more than Adobe dropping support for 32-bit apps.  Based on this Apple policy, this is Adobe dropping support for every AIR app that has ever been released for iOS.  We will not be able to use AIR 30 moving forward, because that would mean abandoning all existing apps without ever being able to update them.

Flipline
Inspiring
May 6, 2018

Adobe, here is additional information on not being able to update existing apps with AIR 30 from an Apple Technical Q&A:

https://developer.apple.com/library/content/qa/qa1623/_index.html

This article also confirms that you can not change UIDeviceCapabilities in an update or your app update will be rejected.  Even if you change the MinimumOSVersion, you still can not change UIDeviceCapabilities in the process.  Since this is the case, 64-bit-only AIR 30 can not be used for updates for every AIR iOS app that has ever been released.  Dropping support is one thing, but losing support for anything we've ever released with your software is massive.

Participating Frequently
May 12, 2018

Flipline

I think you're not completely understanding the Apple Technical Q&A you're referencing. Creating a 64 bit only update to your app could violate the App Store guidelines. However, that can be avoided by, as explained in the Technical Q&A, "Target[ing] a newer version of iOS that requires a newer device". As you know, iOS 11 completely dropped 32 bit support, so it runs exclusively on devices with 64-bit processors. When you create your update with AIR 30, if your target iOS 11 setting the MinimumOSVersion key your 64 bit only app should not be rejected. It might be that when AIR 30 is released the target iOS version is set to 11 by default, so you won't have to do anything.

Now, that being said, I do think it would have been good to keep 32 bit support apps for a bit longer as the market share for those devices is about 20% - 23% (App Store - Support - Apple Developer) but you can for now continue to support those devices using AIR 29.

chris.campbellpravishtis

Also, it would be good to hear Adobe's justification for dropping support for the universal 32+64 bit IPA. I hope it meas they're optimizing the runtime or the code generation. That's me being positive but who knows.

davidp23103486
Participant
May 4, 2018

Hey there friendly Adobe folks. I know you obviously have a lot of factors to consider, but our company is pretty much dead in the water after five years of development if you go through with this. Please keep this alive!

Participating Frequently
May 4, 2018

This 32bit decision could be pretty devastating to us as well. We just launched our children's app less than a week ago, and we assume the bulk of our audience will be using older "hand me down" iPads.

Please don't kill this, Adobe

Participant
May 2, 2018

Hi,

Got this errors when submiting the ipa file:

I'm using the latest Apache Flex SDK using FlashBuilder. Added the Assets.car files as well as the images generated in the following website:

Generate ios、android app ICON and Assets.car online

Also added the references on my xml descriptor file:

also

What i'm doing wrong?

Thank you

pravishtis
Adobe Employee
Adobe Employee
May 3, 2018

Hi,

Can you please try once with removing the CFBundleIconName tag because it is not required for iOS packaging.

Let us know if you still face issues.

Thanks!

Pravishti | Adobe AIR Engineering

sashir82552880
Inspiring
May 3, 2018

Hi pravishtis

We use AppBlade for adhoc devices testing so I created a build with 122 did the signature change and uploaded the build to AppBlade and completed the testing. My question is which build do I upload to App Store the one without signature change or the one with signature change?

Thanks!

Participant
April 27, 2018

Hey,

I'm using Apache Flex 4.16.1 SDK. How can i merge this latest Adobe SDK(.122) to Apache Flex SDK so i'll be able to deploy apps before the official Apache relase with the fix. Any idea?

Thanks

Inspiring
April 27, 2018

I think just unzipping the AIR SDK over your Apache Flex SDK, overwriting some of its files should be enough (make a backup first just in case you need the previous version or it doesn't work for some reason)

Participant
April 27, 2018

We've upgraded our project from AIR 25 to 29, in order to bypass this issue.

However, our binaries are now not being accepted by iTunes connect, and we are not getting emails with any errors. Has anyone else encountered this? What might this be?