How to fix – “LSLaunchProhibited Info.plist key is unsupported on Mac”

I don’t do a lot of iOS development but I do have a sticker pack and an app in the app store. I recently got an email from Apple developer support with the following message about my sticker pack:

Compatible iOS and iPadOS apps will automatically appear on the Mac App Store when the first Apple silicon Macs become available this year. However, we noticed the following issues with one or more of your apps that are opted in to appear.

The following apps will not be made available on Mac until a new version addressing these issues is submitted.

These apps contain the LSLaunchProhibited Info.plist key, which is unsupported on Mac:

I wasn’t quite sure what that meant and the email didn’t really give any indication as to how to fix it. A quick google search only came up with one single result, a forum post on Apple developer forums by someone trying to find an answer to the same question! :)

After having a quick look around in Xcode I *think* I’ve found the answer to the issue. Basically with the new Apple silicon Macs that have been announced it will be possible to run iOS apps on Mac and by default all iOS apps will be included in the Mac App Store. It is possible to specifically opt-out of having your app in the store but by default it will be included, so in this case the message relates to the fact that my sticker pack isn’t currently set to be available on Mac, only iPhone and iPad.

To resolve this you need to go to the sticker pack extension file of your Xcode project, under the “General” tab there should be a “Deployment Info” section. In there you can set whether it will work on iPhone and iPad, and if you’re running the latest version of Xcode there should also be a “Mac” checkbox. Checking that box will make the sticker pack available for Mac. Once that is done and a new build submitted to the app store this should then resolve this issue.

An illustrated history of iOS

Back in December 2014 I published a post about a great “llustrated history of Mac OSX” made by the makers of the Git client ‘Tower’ for Mac and Windows Since that time they have continued to update it to include more recent releases (and also the change the title to use “macOS” as Apple’s OS is known as now).

I noticed recently that the team at Tower have now followed up their OSX / macOS history with an “Illustrated history of iOS” which is a great concise history of Apple’s mobile operating system. It’s a nice little run through of the progress of iOS from 2007 until now.

Sidenote: I see Tower have just launched a public beta of an all-new version of their Git client, find out more on their blog: https://www.git-tower.com/blog/tower-public-beta-2018-starts/

How to fix “unable to boot device because it cannot be located on disk” in Xcode 9

I have recently been doing some development using the Xcode 9.2 Beta, but when it came to pushing the app to iTunes Connect I made the switch to the final release version of Xcode 9.2. In the process I ran various clean up tools to remove the beta version and related files etc.

However, after downloading and installing the release version of Xcode 9.2 and trying to test using the Simulator I encountered the error:

unable to boot device because it cannot be located on disk

This error also included a link to a location within simulator files which obviously is no longer there due to the clean up process I had used. I tried a few options but eventually found a series of commands that clean this up and fixed the problem for me. Make sure to quite Xcode and the Simulator app first and then run these commands in Terminal:

sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
rm -rf ~/Library/Developer/CoreSimulator
rm -rf ~/Library/Developer/XCPGDevices

Hopefully after running them and starting Xcode the Simulator devices should all be functional again. Please note that if you have done any custom devices within your Simulator device list then these will have been deleted and the list reset to the default list of devices.

Remotely debugging mobile devices: Remote web inspection in Safari and iOS6

It doesn’t take a genius to note that mobile devices are pretty much overtaking the web, and that a huge amount of people – the majority depending on the statistics you pay attention to – are accessing the web via a mobile device such as an iPhone, iPad or other smartphone / tablet.

As such there has been a huge buzz about responsive design and how to make sites adapt well between a range of screen sizes and resolutions, and moving away from the concept of a fixed size of screen such as the ubiquitous 960 pixel grid framework. One of the biggest challenges in this new era of web design and development has been the lack of good tools to aid you in the process of creating responsive, adaptive websites.

Media Queries and Responsive Design

The ability to work in code and create media queries to handle various device widths and related styles has been possible for a while, but it can be a bit mind-melting trying to keep track of all of this and to test as you work through the development process. Fortunately we are now beginning to see a range of tools to help you develop responsive sites, one of the most recent being Adobe’s new Edge Reflow tool which is an app that lets you visually adjust the viewport and tweak the CSS of various media queries. It’s a simple, focused app that lets you resize the viewport and tweak the styles as you go. At the time of writing it hasn’t been released yet but when I get a chance I will definitely be checking it out and writing something about it.

Remotely Debugging Code on Mobile Devices

Another challenge with working with mobile devices is that you really need to test on actual mobile devices to get an understanding of the true behaviour of them. Although you can set the width of your desktop browser to be the same as that of an iPhone it won’t necessarily behave exactly the same way due to the differences in the way the browsers handle CSS or JavaScript.

One of the difficulties in testing on devices themselves is that it’s not very easy to debug when things don’t work as expected. On a desktop browser such as Safari you can use the Web Inspector to see the live code as you interact with it and also see any JavaScript errors that are triggered, but on a mobile browser there is often little available to help you detect the errors.

Thankfully there are now tools being developed to allow remote access to the code running on the device itself, Adobe developed a tool codenamed ‘Shadow’ (now formally released as Edge Inspect) which works by providing apps for various mobile devices such as iPhone, iPad, Android phones and tablets.

With these apps installed on your devices you then run a desktop app on your computer as well as an extension in Google Chrome. You can then view websites in Chrome and they will be simultaneously displayed on the mobile devices running the apps, but the key feature is that you can remotely inspect the HTML, CSS and JavaScript running in the app on those devices. A really excellent tool.

Remotely Debugging in Safari

Adobe Edge Inspect (formerly Shadow) is a great tool, but what if, like me, you prefer to work in desktop Safari as your main browser and don’t want to or can’t use Chrome to test sites? In case anyone thinks this is just down to a matter of personal preference of browser I can give a legitimate example of why having to use Chrome can be a problem – Chrome’s in-built support for Flash gets in the way of testing content that is intended as fallback or alternative content on the desktop.

Screenshot of Web Inspector settings in iOS6 on an iPhoneFortunately the recent release of iOS6 offers a new feature that enables remote web inspection of mobile Safari on iPhone or iPad.

To make use of it you need to go into the ‘Settings’ app on your iOS device, and drill down into ‘Safari->Advanced’ where you’ll find a new toggle button for ‘Web inspector’, (this replaces the old ‘Debug’ option in mobile Safari which really offered little functionality).

Switch this on and you’ll see a small paragraph of text appearing which explains that you need to connect your device to your computer with a cable for this feature to work.

Once you’ve enabled Web Inspector on your iOS device(s) then you should find them listed in the Develop menu in Safari on your computer, it should looks something like this:

You can select the device and then it opens up a menu showing the available applications that web inspector can open. Note that you need to have mobile Safari open on your iOS device for any sites to be listed in the menu, if they’re not open then you’ll get a message saying ‘No Inspectable Applications’.

Once you select a site from the menu then the familiar Web Inspector window in Safari on your computer will open, the difference is that you are seeing the HTML, CSS and JavaScript from your iOS device. You can then browse around and interact with the site on your iOS device and inspect all of the changes occurring right in Web Inspector. Here’s a view of the HTML from a site on my iPhone:

Debugging via the console remotely

Just as with the ‘regular’ web inspector you can interact, view and update HTML and CSS and then see these temporary tweaks appear right on your iOS device. The main benefit in debugging for me has been in dealing with JavaScript / jQuery code, I can make use of console.log messages and debug via the console just as I would when working on my computer:

In a recent jQuery mobile based site I was developing I encountered code that was failing in mobile Safari but working fine in Safari on my Mac – exactly the kind of situation I mentioned earlier in this article where code is handled differently in mobile Safari. But thanks to this new remote web inspector functionality I was able to easily add some console messages and figure out what was going on and adjust the code to work around the problem.

A Great Solution for iOS Web Development and Testing

iOS6’s remote web inspection functionality is definitely a huge improvement if you are making sites that you need to test on iOS devices. With the increase in Android-based devices such as Google’s Nexus 7 and Amazon’s Kindle Fire tablets you will of course need to test on other devices besides iPhones and iPads. So tools like Adobe’s Edge Inspect are definitely something you will need to make use of too for testing across the various platforms and devices, but the simplicity of this iOS-specific testing workflow is very easy to set up and work with. A definite two-thumbs up from me!

I’m going to take a look at some of the other tools available to aid in the contemporary web development workflow of responsive, mobile-friendly design and write some more posts about them soon. In particular an updated look at Adobe’s Edge Animate tool and also a look at the Edge Reflow tool once it has been released.

More random thoughts on the iPad

I’ve already written my thoughts on the iPad, but here’s a few more thoughts about the iPad that have either been going through my mind or I’ve read about elsewhere and that I think are worth drawing attention to.

Another reason why Flash won’t be on the iPhone: Flash isn’t the only web plugin

If Apple allows Flash on the iPad (or iPhone / iPod touch) then the floodgates will be opened for other plugin such as Microsoft’s Silverlight and Java to be allowed onto the device. Possibly even opening Apple up to anti-competitive scrutiny for only allowing Flash. If Flash isn’t on the iPhone then no other plugin / runtime has any more of a right to be there either.

Mac OSX Snow Leopard an indication of OSX on iPad-like devices?

Reading this TechCrunch article about rumours of a possible larger iPad running something more like the full Mac OSX made me wonder whether the slimming down process involved in the development of Snow Leopard is a clue as to whether we’ll see OSX running on lower-powered, lower-energy processors. Perhaps we’ll even see Mac OSX running on the ARM processor architecture itself? Even if not on a different processor architecture then at least on some other efficient low-powered chip.

The controlled nature of the iPad’s OS has gotten some people worried that future versions of Mac OSX will end up being the same with no ability to install apps of your own choosing etc. It would be interesting to pose this question directly to Steve Jobs – just what is the future of Mac OSX? I guess we’ll find out at the next WWDC!

Many Flash games websites wouldn’t be playable on the iPad

Louie Mantia makes some really good points in his article “Flash Isn’t The Problem, Flash Design Is The Problem”. Many Flash based websites rely on you hovering over menus to navigate through them, and the majority of Flash games use the keyboard as the means of controlling them. Both of these methods of interaction are not applicable to the iPhone or iPad’s interface paradigms, as such even if Flash was on the iPhone or iPad you wouldn’t be able to use many of these sites or play many of the games!

~

If I think of anything else or find other interesting post I’ll add them here :)

Thoughts on the iPad

Apple have finally unveiled their tablet device to the public so we can finally stop hearing all of the pontification that has gone on for the last few months about a device that Apple had never given any public indication even existed (the pontification only to be replaced by the rumblings and grumblings of those who got too enamoured by some of the various rumours!).

In the true spirit of “Internet Journalism” I thought I’d add my own thoughts about Apple’s newly announced iPad. Here are a few thoughts / questions about the iPad and the impact it may have.

Flash on the iPad?

It’s a question being asked by many people, and with a move to a larger screen some would say it deserves even more to be on the device. However, I wouldn’t expect it soon, if ever to be honest. Unless the Flash plugin can be made more efficient processor, memory, energy wise it won’t happen.

I don’t think this is simply arrogance on Apple’s part as some might say, I think Apple approach the usage of the iPhone OS that runs on the iPhone and the iPad with a view to making it as efficient as possible. Some people were expecting or hoping for the iPad to use the full Mac OSX but are disappointed that it’s not on there, although some see that as a limitation I think it shows that Apple isn’t willing to put even their own more fully-featured OS on the iPad as it wouldn’t run as efficiently on the device. So if they do that with their own OS why should we expect an unmodified / unoptimised version of Flash to be allowed on the device?

I do think there is more to it than just the issue of efficiency though, John Gruber makes some good points in his recent post “Apple, Adobe, and Flash“. Personally I doubt Flash will ever be on the iPad or iPhone.

Will there be a new iPad App Store “Gold Rush”?

Even though I doubt Adobe will ever get Flash on the iPad I do look forward to seeing what native apps Adobe might bring to the iPad. Photoshop Mobile is a great little app for the iPhone so a larger sized version of that could be pretty cool. Apple have set a nice precedent for full-featured apps like Keynote, Pages and Numbers at $9.99 each so there could be some financial incentive to create a good image editing app.

It may only be a 1ghz processor in the iPad but it appears to be far more powerful than the raw ghz would suggest. It would be great if the $9.99 price point can remain as it might encourage developers of iPhone apps to develop more for it, as the race to the bottom and the $0.99 / £0.59 price point has made the supposed “Gold Rush” of the App Store an impossible dream for many, many developers.

Does the iPad signify the end of Mac OSX?

Some people have concerns that Apple’s focus on the iPhone OS is an indication that Apple is heading away from the geek or power user and is instead focused solely on the domestic / consumer end user. Whilst that may be true to some degree (Apple is a consumer electronic company after all) I think that Mac OSX has a strong future and a rightful place on the more powerful hardware that the MacBook, Mac Mini, iMac and Mac Pro computers offer.

I think that iPhone OS will influence the future development of Mac OSX in regards to user interface and aesthetics. Mac OSX 10.6 Snow Leopard brought a lot of efficiency improvements, largely thanks to the optimisation required to get iPhone OS running on the limited hardware requirements of the iPhone and iPod touch (along with the dropping of PPC support!).

The iPad is the gateway drug for Mac OSX development.

The iPod and iPhone have often been seen as a ‘gateway drug’ for Apple laptops / desktop computers – people like how nicely they work and are then attracted to Mac for the same reasons. In a similar way I think the iPad will be a gateway drug for iPhone developers getting into developing apps for the full Mac OSX that runs on Apple’s laptops and desktops.

Designing apps for the iPad will bring with it some new challenges for mobile device developers – more screen space for the user interface, processor and memory improvements. Apple are touting the iPad as a third category of device in-between a smart phone and a laptop, developers will have to get used to this paradigm as well.

The iPad isn’t just a laptop with a small screen (i.e netbook) it’s a new type of device with hardware and software tailored to suit the demands of a lower speed cpu and lower memory. Netbooks generally push the limits of their smaller hardware form and tend to run Windows XP or Windows 7 which are really laptop OS’s and as such really need to be running on at least a 1.6ghz atom cpu with 2GB of memory to be usable. The iPad is built a whole different way, with a focus on using the minimum of cpu speed and memory by maximising the efficiency of the OS.

Where the iPad becomes the gateway drug is that as iPhone developers (many of whom didn’t previously develop for Mac OSX) get into developing iPad apps they will get more familiar with developing for a larger screen resolution. They’ll bring with them the knowledge and experience of developing apps within the tight constraints of the iPhone’s cpu and memory and start to enjoy the freedom and power that the iPad’s higher spec offers them. It’s only a short step to see how a developer could then take the next step up and make their apps function on the full Mac OSX laptop / desktop OS.

I look forward to seeing an increase of very efficient programmers developing apps for Mac OSX in future, having learned to code Objective-C within very tight limitations. :)

Other media coverage etc.