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
Flipline wrote
Whoa, this labs beta release also drops support for universal 32-bit/64-bit iOS apps and is just 64-bit only from now on. That's a huge change, all of our customers still using an iPad 2, iPad 3, iPad 4, iPad Mini won't be able to download our app updates or new apps anymore since those only work when a 32-bit version is included in the app.
Why was 32-bit support dropped?? Lots of people still use iPad 2, 3 and 4. Most of our customers are still on iPad 2!
This change leaves A LOT of users out.
Will we have to be stuck on AIR 29 for years to come?
Copy link to clipboard
Copied
Loosing 32-bit support is also a deal breaker for entreprise app.
In the meantime Flutter is working hard for adding 32-bit support Support ARM32 iOS devices (iPhone 4, iPhone 5) · Issue #2089 · flutter/flutter · GitHub
Copy link to clipboard
Copied
Hi,
You need to upload the app packaged with ipa-app-store target (which will not be having any signature changes).
Also, the ad hoc provisioning profile issue has been fixed in our latest beta. Please give it a try from Download Adobe AIR 30 Beta - Adobe Labs​.
Thanks!
Pravishti | Adobe AIR Engineering
Copy link to clipboard
Copied
pravishtis​ does this mean ad hoc provisioning will not be fixed in AIR 29, and will be left broken as-is? With AIR 30 dropping support for 32-bit/universal apps, I have a feeling many developers will need to remain with AIR 29 so we can keep supporting our customers, and with ad hoc provisioning broken there's not an easy way to do that now.
Copy link to clipboard
Copied
Flipline wrote
does this mean ad hoc provisioning will not be fixed in AIR 29, and will be left broken as-is? With AIR 30 dropping support for 32-bit/universal apps, I have a feeling many developers will need to remain with AIR 29 so we can keep supporting our customers, and with ad hoc provisioning broken there's not an easy way to do that now.
Your best bet for now is using AIR 29.0.0.112 for ad-hoc testing and AIR 29.0.0.122 for App Store releases.
Unfortunately AIR 29.0.0.112 is not available at Adobe's AIR SDK Archive site (Find and download archived versions of Adobe AIR SDK ). It seems they stopped archiving AIR SDK versions at AIR 25. If you need AIR 29.0.0.112 SDK I can upload it somewhere so you can get it.
Best regards.
Copy link to clipboard
Copied
Hi,
I'm still having the same issues :-S
can you send me an example descriptor file, and the folder path that i need to put the Assets.car + images. I've put them all on the same level as the descriptor file.
Thank you
Copy link to clipboard
Copied
Hi,
You need to give the paths of icon images inside the icon tag in the application descriptor like this:
You can give the names and paths(relative to the application descriptor) of the images as per your convenience.
For Assets.car, you just need to place it parallel to the application descriptor and package it in the app like any other resource.
Thanks!
Pravishti | Adobe AIR Engineering
Copy link to clipboard
Copied
I think it's about time Adobe clarified the position regarding 32-bit and other support going forward.
I don't want to be in a position where I take on a project that I cannot fulfil because Adobe won't support the IOS platform that they are using.
It's important that the question of supported IOS platforms is clarified. Now.
It's also important that Adobe clarifies whether any older versions of Air will be updated so support of 32bit can continue in the short term at least.
Clients don't always understand this stuff. They ask for iPhone or iPad apps to be developed. The current situation could prove disastrous.
Copy link to clipboard
Copied
"Now."
You're being a bit rude tbh.
Copy link to clipboard
Copied
That's not my intention.
I say now because time is really of the essence and if Adobe is actually going to abandon the 32 bit platform, now is the time to tell people.
I might get approached at any moment to do some cross-platform work for IOS and Android. For all I know the client may have a heavy investment in 32 bit hardware. Should I be committing to a project that may not be fulfillable using Animate CC?
I don't feel I am being rude at all. I'm disappointed that Adobe is not communicating their intentions.
Copy link to clipboard
Copied
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
Copy link to clipboard
Copied
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!
Copy link to clipboard
Copied
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:
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.
Copy link to clipboard
Copied
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.
Copy link to clipboard
Copied
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.campbell​ pravishtis​
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.
Copy link to clipboard
Copied
JulianDMG​
You're right that the way you're supposed to target newer devices is by changing MinimumOSVersion, but the Q&A and other Apple documentation also says that this only works as long as you do not make any changes to UIRequiredDeviceCapabilities when you do that. The 64-bit-only builds from the AIR 30 beta were making changes to UIRequiredDeviceCapabilities automatically, so even if we set MinimumOSVersion to 11, it still wouldn't be allowed as an update since you can't change UIRequiredDeviceCapabilties after release for any reason. It's bizarre since the MinimumOSVersion would limit it to 64-bit-only devices anyway, but unless they change their policies in the future you just can't touch that UIRequiredDeviceCapabilities key.
Thankfully Chris announced that they'll be restoring 32+64-bit builds in AIR 30 in an upcoming beta update!
Re: AIR 30 dropping support for 32-bit in iOS apps
So hopefully we won't have to worry about this again until Apple makes the requirement themselves, in which case I'm assuming they'd change their update policies.
Copy link to clipboard
Copied
Hi,
The latest beta AIR SDK 30 supports packaging universal iOS applications. You may download the beta from Download Adobe AIR 30 Beta - Adobe Labs
Thanks!
Copy link to clipboard
Copied
Hi Amrita,
Can you tell us if this release includes the 32+64-bit builds as Chris mentiond?
Thankfully Chris announced that they'll be restoring 32+64-bit builds in AIR 30 in an upcoming beta update!
Copy link to clipboard
Copied
Yes, this release includes the 32+64-bit builds.
Thanks,
Amrita
Copy link to clipboard
Copied
Hi Amrita,
I've tried out the new version with an Enterprise app but it won't install.
Does this version not include that bugfix?
I'm sorry to bother you so many times....
Best Regards,
Risa
Copy link to clipboard
Copied
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!
Copy link to clipboard
Copied
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?
Copy link to clipboard
Copied
chris.campbell​ pravishtis​ niestudio​ OMA2k​
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.
Copy link to clipboard
Copied
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,
You can specify the path(with respect to application descriptor) and names as per your convenience.
Let us know if you still face issues.
Thanks!
Pravishti | Adobe AIR Engineering
Copy link to clipboard
Copied
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