What exactly does Flutter build iOS do? Is this really necessary? - ios

I would like to fully understand this command and what happens behind the scenes. Here are a few pieces of information I've understood so far but somehow I cannot connect the dots:
When deploying an iOS we need to go through these steps:
build a flutter app in release mode, which will make an .app file/folder
archive & sign the .app file which will convert it into .ipa
send the signed .ipa to the appstore
flutter apps can have 3 modes: 1. debug 2. release 3. profile
running flutter build ios creates a build/ios folder, including the Release-iphoneos/Runner.app
Xcode creates its own .app in ~/Library/Developer/Xcode/DerivedData/Runner-...
Now, questions:
Is the build/ios/Release-iphoneos/Runner.app that Xcode converts into .ipa? I'm asking since I know that Xcode creates its own .app in ~/Library/Developer/Xcode/DerivedData, so I'm not sure if Xcode just copies build/ios/Release-iphoneos/Runner.app in here: ~/Library/Developer/Xcode/DerivedData/ or not
What happens if I don't run flutter build ios before? Will Xcode use only a debug mode of my app? If so, how come it removes the debug flag in the upper right corner?
When I clean my build folder in Xcode (shift+cmd+K) and then I archive the app and it will still build a new .app and then it converts it to .ipa. What mode was this .app created in? Was it a release app? If so, again, why is it necessary to run flutter build ios before and why not just archive it from the Xcode?
Thanks to everyone who tries to unleash this big mystery for me and for everyone else wondering.

The reason you should run a flutter build ios before archive is because archive uses the last build configuration from the results of running flutter build ios.

Related

Xcode debug build vs release build

I am currently building a react native app using expo.
However, I needed to use cocoapods, which is why I am now using Xcode.
Since I have switched to Xcode, there has been a difference between my local debugging builds (that I run to a USB connected iPhone) vs the builds that get pushed to TestFlight.
After doing some digging I have found that it may be due to the debug vs release schemes in Xcode.
From what I've see it seems that the difference should really just be in performance, file sizes, and some other aspects, but not what the app actually does and displays like in my case.
To test, I made a change on my app's homepage to simply have the text, UPDATED.
As expected, when ran with the debug scheme, the UPDATED text shows up, but when ran with the release scheme, it does not.
How do I get these to sync up and have the release build recognize the changes I make as I am certain I do not want to push a debug build to the app store?
Things I have tried:
Removing/cleaning Build folder and rebuilding
Updating Xcode
Running on another device
Building/running with expo (this did something, but it just causes the app to crash, assuming it is because of the cocoapods)
Versions:
react-native: 0.61.5
Xcode: 11.4.1
macOS: 10.15.3
Thank you
I have fixed the issue.
I found that by running expo publish in the terminal and then building with the release archive scheme in Xcode, it notices the changes.
Now why that is required (maybe it isn't), I am unsure of.
If anyone has an any additional insight, it would be greatly appreciated.
EDIT: So it looks like when I run expo publish it updates the app.bundle and app.manifest. This must be what the release scheme looks at when building.

Building a Unity project into iOS without Xcode

I want to build my Unity project to the iOS platform.
When I click build to iOS I get prompted with this screen:
There says Run in Xcode as but I do not have a Mac, but correct me if I am wrong but you can not run Xcode on Windows.
So is there no way I can build my project without a Mac then?
You can’t, when you build for iOS, unity creates a project that you must open with XCode (in a Mac) and then build it to deploy it on a device or simulator.
You can use "vmware", there are good tutorials on youtube, but not sure it's legal.

How to build .ipa and install it on iphone form xcode?

I have installed MacOS 10.12 Using VMware and successfully implemented Ionic 2 app for IOS. I have also generated an .ipa file using the following method:
Clean your project.
Build your project.
Go to products menu -> select build for -> select Profiling.
In project navigator, find your .app product.
Right click on it and click show in finder.
There you will find folder named "Release-iphoneos", in
this folder you will find your .app extension file.
Create a
folder named "Payload", copy that .app file in this folder.
Archive your folder.
After archive, rename your folder to name of
your app and change its extension from ".zip" to ".ipa"
Your ipa is ready for sharing.
From the above technique I got my .ipa file. Then, to install this app on iPhone i am using www.diawi.com . Now the problem is, when i am installing app from my safari browser on iphone download issue is showing. My internet connection is all good. I can also see the installation process on my iphone but app is not installing.
Note: I don't have Apple developer program. I need to build and install this app for testing in different iPhones.
Please suggest any other way to install my app on iPhone or another technique to build and share the app. My configuration is as follows:
Mac OS - 10.12 Sierra(VM-ware machine), Xcode- 8.3.3.
I tried so many articles but not sure where am i getting wrong. please suggest.
For that you will need to be enrolled with the Apple developer program (99$ a year). There is no other way.
Or you need to install it manually by plugging the iPhone in the computer and running the code in XCode (keep in mind that the default certificate will let your app run for 7 days then it will get expired)
to make .ipa file Archive your project and export your binary as developent or deployment.
You can install your .ipa file manually.Connect your iPhone with your computer and drag .ipa file in your iPhone application folder.

Run release build version using cordova iOS

I want to test the release build version on my iOS device directly using this command:
cordova run --buildConfig=build.json ios --release --device
But not working, is anybody here manage to test the release build version running on device? Thanks in advance.
Or let say the worst case, we can't do it. Is there any guarantee that below command:
cordova build --buildConfig=build.json ios --release
will build the release version of our app, when we open the xcode project on xcode?
My point is I need to get the release version build by cordova, not by Xcode.
Likely not guaranteed, but that's just a guess.
I'm not sure why you need Cordova to put together a release build—in order to submit to the app store you will want to use Xcode to archive your app. I have no idea if Cordova can do a proper archive but personally I wouldn't rely on it because at least Xcode should be up to date on what Apple demands from the build. Especially with automatic code signing. Cordova may lag in its implementation when Apple changes things.
One little thing, when a .ipa is signed for distribution through the app store, you cannot side load it onto a device. You can only side load .ipas that are signed for development.

rebuild ipa file using appcelerator

I'm using Titanium Appcelerator to build an iPad app. I have my iPad provisioned and everything, however when I try to run the app on "iOS Device" from the Appcelerator menu it opens up iTunes and tries to install / sync the app on the iPad. The problem with this is that the computer I"m using to develop is not the main computer for the iPad, so I don't want it to sync. I'm using the iphone configuration utility, and just going through the titanium workspace until I find the .app or .ipa. I am using TestFlight to beta test, and import the ipa into that and it sends it off to a few devices. The problem is, I updated the app in appcelerator, but the .ipa (or .app) file never updated. Is there a way to do a fresh build so it will regenerate the .ipa file? Also is there a way to run the app from the computer (while it's plugged in) so you can still use the log and info terminal using titanium?
Thanks!
In version 1.7.x of Titanium, The .ipa of your app will be in the build/iphone/build/Debug-iphoneos directory of your Titanium project - that is what you can (and are) uploading to TestFlight. To force a rebuild, just delete everything in the build/iphone directory (including subdirectories) and do a 'Run on Device' build it again. This will give you a fresh build and fresh ipa.
If you are using the new Titanium Studio and have paid to be a Indie developer, it should have the ability run your application on your device, but I haven't tested it.
Before Titanium Studio, I rolled my own tracer that I can turn on and off. Details are here.

Resources