Copy link to clipboard
Copied
With AIR 3.8.0.440, iOS build with "adt -package -target ipa-ad-hoc" fails with a linker error:
ld: -pie can only be used when targeting iOS 4.2 or later
What's the correct option to suppress this error or does it need a fix for adt?
In the app.xml,
<key>MinimumOSVersion</key>
<string>5.0</string>
is already present in the iPhone InfoAdditions section.
(Building the same app with AIR 3.8.0.370 is fine)
Copy link to clipboard
Copied
Thanks for reporting, are you using any ANE?
-Pahup
Copy link to clipboard
Copied
Yes, it contains ANE modules, but some don't come with source code so can't rebuild them.
Copy link to clipboard
Copied
Could you try unbundling the ANE and see if the platform.xml has any minimum OS vesion requirement? Please see this for more details on platform.xml - http://help.adobe.com/en_US/air/extensions/WSf268776665d7970d-2e74ffb4130044f3619-7fff.html
Thanks
-Pahup
Copy link to clipboard
Copied
Some of the ANE modules have
<option>-ios_version_min 4.0</option>
in <linkerOptions> but some have none. No version other than min 4.0 is specified.
If it's relevant, some have
<sdkVersion>6.0.0</sdkVersion>
or
<sdkVersion>5.1</sdkVersion>
or
<sdkVersion>4.3.0</sdkVersion>
or
<sdkVersion>4.0</sdkVersion>
in their platform.xml.
Copy link to clipboard
Copied
Could you please try changing the <option>-ios_version_min 4.0</option> to <option>-ios_version_min 4.3</option>
Please bundle the ANE again and then try packaging the IPA.
-Pahup
Copy link to clipboard
Copied
By bundle again, do you mean just unzip/zip the jar package? Is it OK to modify the XML and just pack it again? I'd thought it involves with the jar signer. Since those ANEs are third-party, I think I can't package them again in the proper way.
Copy link to clipboard
Copied
yes, please zip it again and see if it works, but this is not a recommeneded way. Ideally, you should contact the ANE provider for a fix.
This change is required in AIR 3.8 to support PIE, for which Apple has now started to warn about while publishing the apps on app store.
Please let us know how it goes.
-Pahup
Copy link to clipboard
Copied
If an ANE module has no ios_version_min in the <linkerOptions>, is it necessary to add it?
Copy link to clipboard
Copied
No, it shouldn't be, just change the existing ones.
-Pahup
Copy link to clipboard
Copied
Just to chime in and say we had the same issue.
The ANEs are bundled so we can't access any of their code - we're using compiled ANEs.
Other Air releases work fine with the same ANEs.
Thanks.
Copy link to clipboard
Copied
Just unzip & set 4.3 & zip again resulted in "conflict in file name" by adt.
Copy link to clipboard
Copied
Hi,
Can you make sure that both your old ane and new ane are not present in your extensions directory.
Also, how are you zipping/unzipping the ANE?
If you are on a Mac, try these steps on the terminal:
1) Create a new temp directory, say temp (mkdir temp)
2) cd temp
3) Copy the ane you need to make changes to into this directory.
4) unzip nameofane.ane
5) rm nameofane.ane
6) Make changes to the platform.xml file using a text editor or vim
7) cd to the temp directory again, (if you are now elsewhere)
8) zip -r nameofane.ane .
9) Copy the ane file created into your extensions directory, where you have placed the other extensions and then, package the IPA using adt.
If you are on Win,
1) Rename the .ane to .zip
2) Extract the contents of .zip
3) Make changes to platform.xml and save it.
4) Go back to the directory where you extracted the files, select all the folders/files and right click to zip them back.
5) Rename the .zip to .ane and then, package the IPA.
It should work.
Copy link to clipboard
Copied
Thanks, it's working now.
But I still get a warning about PIE due to an ANE module that has no min OS version specified.
With this ANE module,
http://www.adobe.com/devnet/air/native-extensions-for-air/extensions/networkinfo.html
I get this warning;:
ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in _findInterfaces from C:\Users\RyuK\AppData\Local\Temp\0d13842f-d1d7-4725-a9cc-d3fe4a86d55c/libcom.adobe.Networkinfo.a(NetworkInfoiOSLibrary.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
Copy link to clipboard
Copied
I submitted the app and got the warning about PIE from Apple due to the Networkinfo ANE module, please update it asap, though it's not likely to get it rejected by that. I have no idea why the function is not natively supported by AIR already while Android supports it.
Copy link to clipboard
Copied
Which AIR 3.x build number did you use where you see PIE disabled warning? It is fixed in AIR 3.8 labs build http://labs.adobe.com/technologies/flashruntimes/air/. Could you please try and share the result.
Regards,
Nimit
Copy link to clipboard
Copied
It was 3.8.0.440. Do you mean, by using 3.8.0.490, App Store won't send you the PIE warning even though it's built with the same ANE module?
Copy link to clipboard
Copied
I have downloaded ANE from http://download.macromedia.com/pub/developer/air/ane/Binaries.zip and application packaged successfully without throwing PIE disable warning. Could you please to try package an application using .swf, .xml and ANE attached at https://www.dropbox.com/s/9ioyzixet6lyxkg/NetworkInfo.zip and share if you are able to see the PIE warning.
Copy link to clipboard
Copied
I built it with
adt -package -target ipa-ad-hoc -hideAneLibSymbols yes
and both 3.8.0.440 and 3.8.0.490, and both of them gave no warning.
Copy link to clipboard
Copied
The error "ld: -pie can only be used when targeting iOS 4.2 or later" most certianily occurs because some of your ANE has min OS version specified in it's platform.xml.
Could you please share which ANEs are you using. And could you also share the ANEs with me or Nimit.
Thanks,
Daman