Change app Version with only IPA file provided (no xcode)
- Rename the .ipa to .zip, and unzip the archive.
- Inside should be a folder called "payload", and inside that folder should be your application archive.
- Right-click the application archive, and choose "show package contents."
- Find the Info.plist file (either named "Info.plist" or "AppName_Info.plist"). Open that file with a text editor
- Change the value of "CFBundleVersion" and "CFBundleShortVersionString" to your desired version number.
- Re-zip the archive
- Rename the .zip to .ipa
- Re-sign the .ipa
Set iOS Version for App Store submission (without Xcode!!!)
Okay, it took a while but I succeeded last week to submit my program using the Application Loader and without Xcode. The problem was a bunch of undocumented keys, that I reverse engineerd from XCode-built projects. For everyone, who wants to accomplish a similar thing, here the changed Info.plist that worked for me:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
New magic key with version string of the used OS. I do not know how to generate this string, this is the one Xcode wrote in another plist and I copied it.
<key>BuildMachineOSBuild</key>
<string>11G63b</string>
.
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>Drone game</string>
<key>CFBundleExecutable</key>
<string>game</string>
<key>CFBundleIconFiles</key>
<array>
<string>icon.png</string>
<string>icon@2x.png</string>
<string>icon-iPad.png</string>
</array>
<key>CFBundleIdentifier</key>
<string>[The bundle identifer]</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>NSHumanReadableCopyright</key>
<string>[Copyright notice]</string>
<key>CFBundleIconFile</key>
<string>icon.png</string>
<key>CFBundleName</key>
<string>Drone game</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
Here the real magic. Again some key that are documented nowhere, however, given the error message in the problem desciption, I suspect the keys DTSDKName and DTSDKBuild to be particulary important. Well yeah, but again version strings for Xcode (why does apple want to know that?) and the iphone; once again, I do not know how to generate these.
<key>DTCompiler</key>
<string></string>
<key>DTPlatformBuild</key>
<string>10B141</string>
<key>DTPlatformName</key>
<string>iphoneos</string>
<key>DTPlatformVersion</key>
<string>6.1</string>
<key>DTSDKBuild</key>
<string>10B141</string>
<key>DTSDKName</key>
<string>iphoneos6.1</string>
<key>DTXcode</key>
<string>0460</string>
<key>DTXcodeBuild</key>
<string>4H127</string>
Also changed this one, I think this is a copy-paste artifact since I cannot remember changing it....
<key>CFBundleSignature</key>
<string>ASDR</string>
.
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainView</string>
<key>CFBundleResourceSpecification</key>
<string>ResourceRules.plist</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIApplicationExitsOnSuspend</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>LSApplicationCategoryType</key>
<string></string>
<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
Changed to old version, seemingly not resposible for the rejection by the Application Loader and 5.0 is correct anyway
<key>MinimumOSVersion</key>
<string>5.0</string>
.
<key>UILaunchImageFile</key>
<string>Default.png</string>
<key>CFBundleGetInfoString</key>
<string></string>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
</array>
</dict>
</plist>
Bundling
Finally, assuming you can compile a valid ".app"-directory, you need to generate a bundle from this (check by try to execute the ".app"-directory on the simulator using ios-sim or to deploy it on your phone using fruitstrap - great tools!). I chose an ipa-bundle. I used the following script to generate it from the .app-directory:
#!/bin/bash
cp embedded.mobileprovision [.app directory]
codesign --force --sign "[Distribution Key Identifer]" --entitlements Entitlements.plist [.app directory]
cd [.app directory]
ln -s _CodeSignature/CodeResources CodeResources
cd ..
/usr/bin/xcrun -verbose -log -sdk iphoneos PackageApplication -v [.app directory] -o "$(pwd)/[bundle name].ipa" --sign "[Distribution Key Identifer]" --embed embedded.mobileprovision
embedded.mobileprovision
is the the distribution provisioning profile you download from Apple's Mobile Provisioning Centre. Just copy-paste it in your .app directory.
[Distribution Key Identifer]
is the identifier of your distribution signature from your keycahin.
Note, that code signing is executed twice, once as part of "PackageApplication" and once invoked manually. Clearly, I do not know what is required to build a valid .ipa, but this worked. Feel free to improve on this by stripping unnecessary steps.
Hope this will help someone who tries to achieve something similar, cheers!
distribute version only with iPA file
No, impossible. New version -> new compilation -> need source code.
Is it possible to add content into ipa file?
Is it possible to add content in ipa and rebuilt it for device?
No. From your comment above, you're looking to modify the application itself by adding view controllers. That would require rebuilding the application, and you'd need the source code for the app for that, not the .ipa file.
It is possible to modify resource files in the archive and then re-sign the .ipa file, so you could change an icon, replace images, etc. But adding view controllers is different because they need to be compiled and linked with the rest of the application code.
How to build an IPA without signing in Xcode 8
I ended up finding a working solution for xcode 8. Here is the step by step
- (Optional) Change build location
Xcode>preferences>locations>derived data>custom>your desktop
- Open Terminal and navigate to the project's folder
- Run manual build:
xcodebuild -workspace (or -project) [workspacename.xcworkspace] -scheme [Schemename] -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
- Open the location from Step 1 (derived data) and navigate to >your app>build>products>Release-iphoneOS
- Copy the .app file into a new subfolder named
Payload
(this folder name is case sensitive and much match verbatim) - Compress
Payload
folder and rename it to app_name-version_number.ipa
Boom. Done.
Multiple IPA files are generated for a sliced version of app in new Xcode
With older Xcodes (10.1) I still get only one thinned IPA file as expected
So let’s ask ourselves: what happened in Xcode 10.2? Answer: ABI stability! So the app can be thinned in two different ways, depending whether the target device has Swift built into the system frameworks or not. And you can tell the difference; one thinned app will be larger because it contains the Swift frameworks.
My Developer Quit, How to Edit and continue development on an ipa file (Half Built iOS App)
You cannot do anything with an IPA file, it is the compiled version of your project. You need the source code to continue any development.
Maybe you can find a way to deassemble an IPA file, but it is an extreme case and I don't know how to do it.
Related Topics
Invalid Update: Invalid Number of Items on Uicollectionview
How to Use Cocoapods with Playground
How to Add Live Camera Preview to Uiview
Uisearchdisplaycontroller's Searchresultstableview's Contentsize Is Incorrect. Bug in iOS 7
To Create a New Uiwindow Over the Main Window
Navigationview and Navigationlink on Button Click in Swiftui
Problems with Ssl Pinning and Afnetworking 2.5.0 (Nsurlerrordomain Error -1012.)
How to Load Custom Cell ( Xib) in Uicollectionview Cell Using Swift
Xcode Won't Let to Build for Device After Denying Codesign to Access Keychain
How to Convert Including Timezone Date in Swift
How to Loop Over Struct Properties in Swift
No Round Rect Button in Xcode 5
Warning: Attempt to Present Viewcontroller Whose View Is Not in the Window Hierarchy
How to Turn Flashlight on and Off in Swift
Uiscrollview Adjusts Contentoffset When Contentsize Changes
How to Analyze Stack Trace Info of a Thread
Could Not Instantiate Class Named Ibnslayoutconstraint
Convert Existing iOS Paid App to Freemium Model with In-App Purchase