Problem compiling with XCode7 and iOS9: White Screen of Death. Please help us

i also had the problem, added the patch to my project, it stay in the app splash.

Even after applying this quick patch, my apps is very slow and very buggy and it’s not because of my plugins. I removed all of them. Sometimes it hangs for no reason. No log, no error. The app never acted this way before the iOS9 update. The update obviously broke more than some $http redirects.

Does Ionic plan to answer all those issues concerning the update with iOS9?

What’s the plan of action?

H

The major issue on my side is the fact that the app is very very slow, randomly with no error. So it’s very hard to pinpoint the problem. For example, my app hangs for a few seconds before it even starts and some simple page like a login page will take forever to load, again for no reason.

Am I the only one to experience those issues?

I had a similar error (... does not contain bitcode.)

I found a solution here: libGoogleAnalyticsServices.a(TAGDataProvider.o)' does not contain bitcode · Issue #148 · danwilson/google-analytics-plugin · GitHub

I just found a workaround by setting Project > Build Settings > Build Options > Enable Bitcode = No, as mentioned by @aderowbotham in #136.

2 Likes

Thanks @colllin but does your app work like usual after fixing all the errors?

Yes, it eventually works the same.

I upgraded ionic lib and re-installed angular-resource, and various other upgrades since I haven’t touched this code in 6 months, but I didn’t need to change any of the app code.

i had already fixed the problem, pls check your path file in your ios platform, perhapse it is not existed but added it.

@beckson which path? Which file?

confirm the angular-ios9-uiwebview.patch.js existed in the www folder in your xcode project.

My problem is not the patch. I can confirm it’s well installed and it is fixing the angular problem. But still, my app is much more slower than before I updated to iOS9. For example, after the splash screen, the first page used to take one second to load, now it takes around 10 seconds to load. Am I the only one to experience this slow experience issue?

It runs well in my project after the fixed. You can try to remove the splash plugin, or set the delay time to the default 3000ms.

I am seeing the same general slowness in the app running on iOS 9.

the first launch of the keyboard plugin on my app also takes forever.
Update: all my installed plugins take more time than usual to load. I tried re-installing all of them but they are still slow to load. Anybody has the same problem?

I found this too but only if starting with ionic run ios. If I rebooted the phone and started it manually it was fine. I’m sure I noticed this intermittently with older Xcode and iOS but couldn’t say for sure.

It sure is annoying though!

After all the issues caused because UIWebView, I decided to install WKWebView, just like this:

cordova plugin add https://github.com/Telerik-Verified-Plugins/WKWebView.git#master

So far it is fixing all the slow plugin load issues.

Bitcode problems? http://stackoverflow.com/questions/30848208/new-warnings-in-ios9

SSL problems? $cordovaOauth.facebook IOS 9 GM issue

Navigation problems? http://blog.ionic.io/ios-9-potential-breaking-change/

1 Like

I feel like I’ve tried everything at this point to remedy my white screen of death on the actual device when deploying. It’s so weird that everything works via the emulator with ionic run -c -l and also via ionic serve --lab with no issues. I also don’t see any errors in Safari when testing from the actual device. Any new solutions?

I did get the following in Safari console when starting, stopping and then restarting the app from the phone.
exeption nativeEvalAndFetch : ReferenceError: Can't find variable: cordova

iPhone 6 Plus (9.0.2)

Cordova CLI: 5.3.3
Gulp version:  CLI version 3.9.0
Gulp local:   Local version 3.9.0
Ionic Version: 1.1.0
Ionic CLI Version: 1.6.5
Ionic App Lib Version: 0.3.9
ios-deploy version: 1.7.0
ios-sim version: 4.1.1
OS: Mac OS X Yosemite
Node Version: v0.12.0
Xcode version: Xcode 7.0.1 Build version 7A1001

I am having the same problem. My app is running fine with ionic run ios -l --device and ionic run ios --device but if I try running it with Xcode to deploy it, I get the same White Screen of Death. Here is my log on xcode:

2015-10-12 09:55:23.787 Tree The World[337:27627] Apache Cordova native platform version 3.9.1 is starting. 2015-10-12 09:55:23.789 Tree The World[337:27627] Multi-tasking -> Device: YES, App: YES 2015-10-12 09:55:23.798 Tree The World[337:27627] Unlimited access to network resources 2015-10-12 09:55:23.994 Tree The World[337:27627] [CDVTimer][keyboard] 0.474036ms 2015-10-12 09:55:23.994 Tree The World[337:27627] [CDVTimer][TotalPluginStartup] 0.850022ms 2015-10-12 09:55:24.503 Tree The World[337:27627] Resetting plugins due to page load. 2015-10-12 09:55:24.608 Tree The World[337:27627] Failed to load webpage with error: Could not connect to the server.

Here is my system info:

Cordova CLI: 5.2.0 Gulp version: CLI version 3.9.0 Gulp local: Local version 3.9.0 Ionic Version: 1.1.0 Ionic CLI Version: 1.6.4 Ionic App Lib Version: 0.3.8 ios-deploy version: 1.7.0 ios-sim version: 3.1.1 OS: Mac OS X Yosemite Node Version: v0.12.2 Xcode version: Xcode 7.0.1 Build version 7A1001

Yeah, I figured out what was going on.

My WSOD issues were actually coming from a path issue that was inside of an Angular constant that was related to angular-tz-extensions. But, I was also getting the issue when using Ionic.Deploy right after the $ionicPlatform.ready. It seems that the deploy.check needs a bit more time. I ended up moving it to a LandingController that controls a landing page in the app and that seemed to work out. I also just uncommented <script src="cordova.js"></script> from the index.html. If you’re still getting issues, be sure to check that index.html doesn’t have &apos; in the meta Content-Security-Policy. This is a known bug with the CLI (it’s trying to be too smart).

Not very safe, but customize as needed.

<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-eval'; object-src 'self'; style-src * 'unsafe-inline'; img-src *; media-src *">

Here’s a gulp task that’ll add an updated plist to your project. You should also probably customize this too because the following isn’t very secure (but it should at least get you around the WSOD).

// The new feature that allow our app to crash on startup. Nice.
gulp.task('fix-ios9-security-issue', function () {

  // Allow non-https requests in the app webview (in order to use ionic-deploy)
  gulp.src('./platforms/ios/MyApp-Info.plist')
    .pipe(replace('  </dict>\n</plist>', '  <key>NSAppTransportSecurity</key>\n    <dict>\n      <key>NSAllowsArbitraryLoads</key><true/>\n    </dict>\n  </dict>\n</plist>'))
    .pipe(gulp.dest('./platforms/ios/MyApp/'));
});

Good luck!

Thanks for the help from @mhartington

I removed and re-added the ios platform and now it’s working fine with xcode. If you experience this kind of weird problem, the best is to re-install the platform completely.

Good luck to everybody.

H