Flutter Plugin - Example App - Only runs via Xcode, not by itself - ios

I'm creating a flutter plugin and I just tried the example project that gets created by flutter it self. This example project is an app that shows the operation system and its version. If I start it from Xcode on my iPhone SE, it works fine.
But if I close the app and open it without Xcode, that means that I tipp on the app icon to launche it, like every normal app, it doesn't start correctly.
It is showing for not even a second a white screen, followed by a black screen and is closing the app right after this.
Why is it behaving like that?
Is it, because it is a debug version and needs Xcode?
How can I put my example app on my iPhone without needing a connection to Xcode to start it?
Thanks in advance!
Edit: Thanks to the answer of Răzvan Puiu below, i know now that this is because xCode puts the app as a debug version on my iPhone. This debug version can only run with xCode. After I tried it with a 'normal' app and not the example app of a plugin project, i even got this text shown if i tried to start the debug version without xCode:
So the solution is to run the app with:
flutter run --release

I believe it behaves like that because you don't have an Apple developer account. "Without enrolling in the Apple Developer Program, your app will only last for 7 days on your device. After that, you’ll have to re-deploy it to your device via Xcode. If you’re enrolled in the Apple Developer Program, you won’t have this inconvenience."
Yes
You can run flutter run --release and then select your physical device. However the app will remain on your phone for only 7 days unless you have the Apple dev account.

Related

iOS 14 not letting Flutter apps (still in dev) to launch from the home screen compared to Building/Running from the IDE

I've been developing a news app with Flutter and when I build and run it through Android Studio it launches fine, but when I try to launch the app by clicking on it on the home screen, it says "in iOS 14+, debug mode flutter apps can only be launched from Flutter tooling,IDEs ....."(Screenshot attatched). Can someone tell me as to how to get around this?
Apparently, this is a known issue of Flutter on iOS 14 for apps in debug mode, see this article on the Flutter website, and this GitHub issue. So for the time being, I believe your main workarounds are the following:
Always run the app from the host PC (using flutter run, IDE debug, etc.)
Build a release version of your app (instead of debug) and use that on your device, e.g. use flutter run --release
Use a device with iOS 13 or older
Use a simulator
If you want to use the app without being connected via usb
Open the ios folder on Xcode
Make sure your device is connected
Select Product from the menu bar -> Scheme -> Edit Scheme
Or simply use the shortcut: command + >
Step 3
Change the build configure to Release
Run the app from Xcode
Disconnect your device and you're good to go!

Is there a way to test my Xcode 7.2-compiled app with iOS 9.3?

I have the iOS 9.3 beta installed on a testing device as I'm running a few 9.3-compiled apps, but I also have an old app that is compiled in Xcode 7.2. I can run the app on any iOS 9.2 device with ease, but if I try to run it on the one iOS 9.3 beta device, I get the "could not find Developer Disk Image" error.
Xcode 7.3 includes some updates to Swift, so I'd have to change a great deal of my files, and I just want to test to see if it's working fine. Is there any way to do this without having to change a lot of Swift code? It's on the App Store compiled for 9.2 and I can run it on my 9.3 device, so I don't understand why it's so difficult.
If you want to avoid the beta version of Xcode from potentially altering your original project, just make a copy of the project and then just open it up in the beta version. If you have an app running in Swift 2.1.1 (Xcode 7.2), the differences to Swift 2.2 (Xcode 7.3) are pretty modest. And if you do this with a copy, you can be confident that your original project won't be altered.
If you don't want to do that for some reason you can install apps from a production version of Xcode on a device running a beta version of iOS:
First, you want to make sure you have the profiles installed on your beta iOS device. The easiest way to do this is to run some "Hello World" app on your beta device from the beta Xcode. If prompted to add a team/profile onto your device, you should go ahead and do so, like usual.
Quit the beta Xcode and start the production Xcode and open the project for the app you want to install. Select "Generic iOS Device" where you choose the active scheme in jump bar and then build the app. You should then see the .app file (not in red) in the Products folder in the "Project Navigator" tree in the left panel.
Install the app on the device by opening the devices window (shift+command+2) and selecting the device in question. In the right panel (or top right panel if you're showing the console, too), you'll find a "Installed Apps" section. Just drag the .app file from the Products folder into this installed apps section.
Clearly, if you have other apps you want to install, you can just repeat steps 2 and 3 as appropriate.
There are a bunch of different ways to install an app on a device, but I find this is the easiest for one-off installs with a device sitting in front of me. You won't be able to debug if you do it this way, but you can at least fire it up, run it through its paces, watch the device console for any debugging messages you may be NSLog'ing, etc.

Launch Failed, LibGDX IOS Device

I have trying to make an ios app out of libgdx. I have an Ipad (no iphone yet) an I am trying to upload my app to the device. I have an XCode 7.2, which means that it guarantees that I can upload an app to an apple device without an Apple Developer Account, which currently I have none. I had successfully uploaded an app onto my Ipad with XCode alone. In Eclipse, a simple test app runs perfectly on an IOS Simulator. But when I tried to run it in an IOS device, it does not work. Since it is just a free provision, I was hoping this would work. The Bundle identifier of the xcode app with free provisioning is the same as the app id and main class of my eclipse ios app. Before this, there was an error that no provision was set, so I set the bundle identifier of the xcode app the same with the eclipse app, according to roboVM(http://docs.robovm.com/getting-started/provisioning.html#free-provisioning). But then this error shows up,
"Launch IOS Device App" has encountered a problem.
Launch failed. Check the RoboVM console for more information.
The given data is not a property list of a supported format.
I need to test my app on a real device because I am going to try to implement an online multiplayer with it. As of now I am still using LibGDX 1.5.5. Is it because roboVM needs an apple developer account?
Edit: Even without any device connected, the error persists
I had the same problem as the original poster and it persists in IntelliJ. After some tinkering, it was also showing up on the command line. THanks to some help on the libgdx irc forum, we coudl solve the problem. It was due to running iOS 9.2 on my iOS device and a too old robovm-plugin 1.12.0 seems not to work with libgdx and iOS 9.2. An upgrade to 1.12.1.-SNAPSHOT solved it.
Attention, you have to update two lines in build.gradle:
in buildscript - dependencies: classpath 'org.robovm:robovm-gradle-plugin:1.12.1-SNAPSHOT'
in allprojects - ext: roboVMVersion = '1.12.1-SNAPSHOT'
If you want to compile in IntelliJ, you need to manually install the nightly robovm-plugin from the nightlies download section from the robovm webpage.

Can't install WatchKit app on Apple Watch

I have a WatchKit app that runs fine in the Simulator. But when I try to run it on an actual device it never finishes installing and never provides any error message or feedback.
The iOS app installs and runs fine. I bring up the Apple Watch app on the iPhone and it lists the app and shows the correct icon. Selecting that, the "Show App on Apple Watch" switch is on. Underneath it it says, "Installing...". And it stays there.
I can also see the app icon on the Apple Watch. Selecting it just shows the spinning wheel indicator as if it is trying to load.
Things I've tried based on other suggestions I've found here, on the Apple Developer forums, and around the web:
Verified that all app bundle IDs are correct and match.
Verified that the deployment target is iOS 8.2.
Verified that the WatchKit App runs in the simulator.
Verified that my provisioning profile includes my Apple Watch's UDID.
Verified that my Apple Watch shows up as a "Paired Watch" in Devices.
Deleted the app from my phone, and then rebooted my phone, watch, and Macbook before reinstalling.
None of the above work. Any suggestions?
Thanks!
Thomas Aylesworth
A friend who works on the USA Today iOS team, including the Apple Watch app, suggested I go to the project settings for the WatchKit App target and set "Skip Install" to NO. Sure enough, after doing this, I was able to install.
I've found it very useful for reading the iPhone console log. (Not to be confused with crash logs).
Use Xcode --> Window --> Devices -- select your plugged in iPhone, and make sure the log screen lower left arrow is down.
In my case, I had invalid provisioning profile entitlements, which were corrected via the Apple Dev portal, and re-downloading the profiles -- after making sure the entitlements were correctly being set in the WatchKit App Capabilities.
Check Info.plist file. In my experience if there is something added there that is not supposed to be there, it will cause this behavior. I added NSLocationWhenInUseUsageDescription and it caused this same issue.
I have found a similar problem due to my storyboard referencing an image which I later deleted (I no longer actually used it anymore). This gave the symptom of running ok on simulator but not deploying fully on hardware as you are seeing. To exclude this potential problem go through each image view on your apple watch storyboard and look out for the exclamation mark against image view entries.
I had the same problem but for me it actually turned out that the Apple Watch was running a WatchOS version lower than what what I had in XCode. I could not see a runtime warning about this (it just silently failed), but when selecting WatchKit scheme in XCode with device connected there was a small warning about version requirement.
You can also try deleting the watch app on the watch by long tapping on the icon and then you should get the giggle UI with a X on 3rd party apps. You can then delete the watch app and retry the install.
I was getting this error too, and I got it to install, after creating a new project from scratch in the non-beta Xcode, and copying my assets and code into the new project. I had the same problem, and tried everything that people suggested on other posts, without any success, including everything that you listed above.
Apparently, there was something incompatible with the way the project was stored in the beta Xcode, that I had created for the WatchKit app.
Here's what works for me with iOS 8.3 and Watch OS 1.0.1:
Make sure your app is finished installing on your iPhone.
Restart the iPhone by holding down the Home button and Wake/Sleep buttons.
Launch the TestFlight app on your iPhone.
Staying in TestFlight, go to your app's detail page and toggle the Install on Apple Watch to the On position.
Press the Home button on your iPhone to exit the TestFlight app.
Press the digital crown on the Watch to get to the Home screen. An icon for your Watch app should appear and begin installing.
make sure your app support 64Bit, otherwise it cannot run on Watch,just spinning there.
Did you add a custom entry to the of your Info.plist of the WatchKit App
This isn't allowed and it will fail validation and will just sit on Install...
Checkout the device console log for information on it
Yeah, had that problem too.
I deleted the Xcode Beta (and the .dmg) downloaded it again and installed it.
Don't have that problem anymore.
In my case, I disconnect the iPhone and the Mac, reconnect them via data line. Then something appear on my watch, a choice, agree or disagree, agree it. After that, Xcode begin to install symbols for watchOS 2.1:
When this is done, you can check it in Library->Developer->Xcode->watchOS DeviceSupport->Watch1,1 2.1 (13S661)->Symbols
Then I disconnect the watch and iPhone, reconnect it. Now I can install WatchKit App on my watch.
I have followed the answer by #hunterleebrown to see the log and found that the WatchOS version is not updated (i.e. Watch OS version is lower than the required version).
Here is the screenshot [ The log says (4th line): The system version is lower than the minimum OS version specified for bundle at ... ...]:
Then I went to the iPhone's watch app's-->general settings-->Software Update and found the watch OS is not updated (which is obvious). Then I downloaded the update and installed it. Then it worked!
Note: I also tried quitting XCode, restarting iPhone and Watch but didn't work for me.
Press "Trust this device on Apple Watch"
I had the same endless installation issue ending with a Time Out error and I finally fixed it thanks to this answer: https://stackoverflow.com/a/61636074/2854405
I had to:
Unpair my iPhone (from the "Devices and Simulators" screen),
Exit Xcode
Replug my iPhone
Trust the iPhone again when it was prompted
Start Xcode
Rebuild
I also had the same issue.
#SwampThingTom suggestion is good, but it changes the archive format as well size increases too.
In my case, the issue was DER entitlements not working only watch app, mobile app was fine.
Make the changes as per the comment over here This Code Signature is no longer supported when building app on iPhone 12
Upgrade to Xcode 13.1
In my case I resolved this problem when selecting the WatchApp target to creating AdHoc.
So, for example, there is three targets in project:
Demo;
Demo WatchKit App;
Demo WatchKit Extension;
If create AdHoc with Demo target, you will get infinite installation.
If create AdHoc with Demo WatchKit App target, the problem goes away.

How to build application in Xcode without launching iOS simulator?

I recently purchased an Apple developer's license so I can make apps using Swift
However, whenever I build my app, it takes about five minutes to load, and opens up the iOS simulator which is extremely slow.
How can I build just the app itself?
Thanks.
I had the same problem, and the solution is quite simple.
Don't close the iOS simulator, leave it open.
Just stop the app from running, and it will close the app within the simulator itself.
CommandR to run the app, Command. to close.
You did a "Build & Run" with an iOS Simulator device selected as a run destination.
Select a real iOS device in the run destinations list and B&R to it instead (or just Build rather than B&R).
Just press cmd+B to build without running simula.

Resources