How to inspect the Xcode files generated by Delphi? - ios

Because I have serious problems with Application Loader reporting both codesign + Bundle ID errors, I have become quite desperate to find a solution.
I think I will need to inspect the Xcode files generated by Delphi, so I can better seek help online... Does anyone know if there is a way to see (and possibly change) the files generated by Delphi when building and deploying for release / app store?
For reference, here are the relevant SO entries:
Delphi XE4 iOS Application failed codesign verification
Delphi XE4 and iOS Application Loader complaining "This bundle is invalid"
iOS app Bundle ID errors and iTunesConnect

In lack of other answer, I am going to answer this myself. I learnt elsewhere at Embarcadero forums that the .ipa files generated are actually .zip files which you can unzip and view content of.

Related

Executable File in Xcode 6

I finished creating a basic mobile app on Xcode and I want to be able to generate an executable file (much like a jar executable) that has compiled all my related files and can launch my app on another computer without Xcode. I've looked at other resources online that have directed me to the picture below and I think the highlighted file is my executable (correct me if I'm wrong) but when I double click it I get an alert telling me that "this application is not supported on this type of Mac".
Any insight on how I can generate an executable or find one automatically generated by Xcode would be helpful. Thanks in advance!

Invalid Binary in ItunesConnect on Xamarin Project

My Issue
Supported by the Xamarin guidance here http://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/app_distribution_overview/publishing_to_the_app_store/ I used the App Loader tool (recently downloaded version 3) and uploaded my .ipa file. Everything indicates success but after a few minutes, it moves from “uploaded” to “invalid binary”
I have checked stackoverflow and done a few suggestions ive double-checked all my image files and the build for 64 bit etc. Any help you can provide is appreciated.
Well since I dont have a 10 reputation I cannot post pics and i can only do one link, so I am going to upload this to my blog, I appreciate any help i can get please.
See complete issue explained here - http://www.fabiangwilliams.com/2015/03/13/troubleshooting-itunesconnect-invalid-binary-with-xamarin-project/
I've hit this issue twice, including a few days ago. In both cases the cause was that I included a bundle resource file (of my own proprietary format and definition) with the *.app extension. For some reason, Apple's validation choked on this. The hint was that the auto-generated email sent by iTunes Connect said something about requiring the zip extension. Red herring error message, but it jogged my memory that *.app is a "special" extension I can't use for my own stuff.
Just to be clear, this *.app file that caused an issue was buried inside my overall *.ipa file and its *.app directory. So you still need the standard format, you just need to be careful not to use Apple's extensions for your own proprietary data.

How to insert a LC_LOAD_DYLIB command into a Mach-O binary or join a static library to an existing binary (IOS)

This is the first time I am asking on stackoverflow and I am desperate.
My task is to load a dylib or join a static lib to an already existing executable for an IOS device.
I will be using the static void __attribute__((constructor)) initialize(void) to start the swizzling.
This executable is for in house enterprise appstore so i do not need to go thru the apple appstore (since they will reject it).
The reason for this is to take an existing IPA from a customer and their signing keys and add a new functionality to their application without requiring a developer intervention.
There is one company doing that called nukona. You can watch the movie here: https://www.youtube.com/watch?feature=player_embedded&v=z9rrOB6lOxY
I can tell you that i tried to put LSEnvironment inside the plist file with a DYLD_INSERT_LIBRARIES but it turns out LSEnvironment does not seem to have any effect in the sandbox of an IOS application.
I also tried install_name_tool for changing one of the dependencies and replacing it with my dylib (which has that dependecy as well). It crashes without information why.
Obviously, if i add the dylib to a test application in XCode and recompile it works perfectly which is a given. However, this is something i cannot ask, for example, an administrator of a company. Rebuilding may deter customers of using this lib.
Here is a related link i found on stack overflow but for osx and i need it for IOS.
How to insert a LC_LOAD_DYLIB command into a Mach-O binary (OSX)
The only thing i can think off is to edit the binary load commands some how, but i am not sure how and how to do it taking into account the relocation tables etc...
Any alternative is welcome.
Thank you for your time.
I open-sourced optool which does exactly this (I haven't tested it on iOS but it should work. Open up an issue if you have problems)

BlackBerry RIMAPPSA2 signing key required -- why?

I'm trying to sign our BlackBerry app, but now it's asking for "RIMAPPSA2" signing key, which is the signing key for private APIs (which isn't allowed in the app world I assume). So I want to remove this requirement so I can actually run the app on devices.
There's nothing in the build log. My app does NOT use any of the following packages (which the internet suggests might be the issue):
net.rim.vm.Persistable
net.rim.vm.*
net.rim.device.api.browser.field2.*
net.rim.device.api.browser.field2.debug.*
net.rim.device.api.script.*
org.w3c.dom.jsp2.* <- actually is uses org.w3c.dom.*, but I've had an app not require this that already had this package in it.
net.rim.device.api.io.Seekable
And I'm not importing any external JARs (although I was before). I'm using the 4.5 JDE.
How can I find out what is making the signer tool require this signature?
Is there any way to track down what is causing this signature (RIMAPPSA2) to be required?
This might be due to a bug in Eclipse or RIM. You might not be using the RIMAPPSA2 classes.
OK, so its hard to believe but this page might fix the problem for some:
Frustrations with Blackberry Developer plugins for Eclipse
Basically its a bug, and by changing the Application Descriptor, saving, removing & re-adding the JAR file, the problem is fixed.
Follow-up #1 - might not work:
The above solution enabled me to build & sign the app. Unfortunately the app won't run on the phone Module 'MyApp" attempts to access a secure API.
Follow-up #2 - this worked for me:
I documented a full solution that worked for me here:
BlackBerry - use own JAR file in own project
In my case, I was importing my own JAR file, and I needed to set that project's build type to be a MIDLET. Setting it as LIBRARY or APPLICATION caused problems.
I've not tried it, as I am waiting for my signing key.
If you use eclipse, you can have following settings that can be turned off.

Compiling AIR to iOS throws a java error

I have a flash app, that we are re-purposing for iPad. I can compile it happily to AIR 2, and can debug it as an iOS app (ctrl+enter, and ctrl+shift+enter) - but when I try to actually publish it I get a Java error - not a compiler error, but an error with the compiler itself if that makes sense. The error is below - sorry for any typos, but you can't copy and paste the error message:
Error creating files.
Exception in thread "main" java.lang.Error: Method 1207 is referenced more than once.
at abobe.abc.LLVMEmitter.referenceMethod(LLVMEmitter.java:3440)
at abobe.abc.LLVMEmitter.access$2300(LLVMEmitter.java:44)
at abobe.abc.LLVMEmitter$MethodEmitter.emitBlock(LLVMEmitter.java:2854)
at abobe.abc.LLVMEmitter$MethodEmitter.emit(LLVMEmitter.java:1426)
at abobe.abc.LLVMEmitter.emitMethods(LLVMEmitter.java:3963)
at abobe.abc.LLVMEmitter.emit(LLVMEmitter.java:3835)
at abobe.abc.LLVMEmitter.processABCs(LLVMEmitter.java:206)
at abobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:174)
at com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcode(AOTCompiler.jav a:329)
at com.adobe.air.ipa.AOTCompiler.GenerateMacBinary(AOTCompiler.java:600)
at com.adobe.air.ipa.IPAOutputStream.compileRootSwf(IPAOutputStream.java :196)
at com.adobe.air.ipa.IPAOutputStream.finalizeSig(IPAOutputStream.java:35 5)
at com.adobe.air.ADTPackager.createPackage(ADTPackager.java:65)
at com.adobe.air.ipa.IPAPackager.createPackage(IPAPackager.java:165)
at com.adobe.air.ADTEntrypoint.parseArgsAndGo(ADTEntrypoint.java:132)
at com.adobe.air.ipa.PFI.parseArgsAndGo(PFI.java:152)
at com.adobe.air.ADTEntrypoint.run(ADTEntrypoint.java:68)
at com.adobe.air.ipa.PFI.main(PFI.java:112)
This happens regardless of deployment type, or rendering option. I know the certificates, and provisioning profile are correct as when I remove the Class in the .fla itself it compiles quite happily and can be put onto our dev iPad (obviously it just doesn't do anything).
Can anyone shed any light on this as I am not sure even where to start.
EDIT: This is with Flash CS5 running on XP64 if that is of any help.
try using the ADT.BAT command, it worked for us.
First, make sure your Flash Pro CS5 is up to date: http://www.adobe.com/support/flash/downloads.html
You can post a question in the Adobe Forum here: http://www.AdobeAssistance.com
Read the Adobe FAQ for iOS (make sure you are not using unsupported libraries, etc...): http://labs.adobe.com/wiki/index.php/Packager_for_iPhone:Developer_FAQ
I would read the FAQ and make sure my Flash is up to date with the latest version and try it again. If it fails I would post this question on the Adobe Forum.
It has something to do with debug information being present in the SWF. The only solution is to compile the AIR application via the command line and with the include libraries parameter:
"c:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.1.0\bin\amxmlc" .\src\YourApp.mxml -compiler.include-libraries

Resources