This is a follow up post about Reader Mobile SDK and Xcode 5.1, see our original post here!
As mentioned in the previous post about Reader Mobile SDK being bitten by the compiler upgrade in Xcode 5.1, Datalogics engineers have been hard at work determining how to resolve the errors the new compiler introduced. Before we get into some of the details though, I would just like to take a moment and let everyone know that the errors that Xcode 5.1 caused are actually good! Clang is forcing more and more code to adhere closer to the standards than previously seen and we here at Datalogics are in favor of this. Standards compliance helps people like us support our customers across multiple platforms with greater ease.
With that said, Datalogics is happy to announce that in our Reader Mobile SDK release this week we will officially support Xcode 5.1! This is very exciting because we had many customers come to us and ask when we were going to support it and they let us know that this was something important to them. It got even more stressful for us when our first attempt at fixing this that we were almost ready to ship caused our builds of Reader Mobile SDK to fail! All is well now though and the final fix we ended up with works well across all of our supported platforms, if you run into any problems with this next release please let us know as soon as possible.
So what actually changed?
Actually a little bit more than was probably necessary! Here is a short summary of some of the changes we made (loosely based on the actual commits in our source control system, you are using source control for all of your source code right?)
- Xcode: 5.1 upgrades to projects
- Xcode: 5.1 upgrades to scheme files
- Xcode: Set all the debugger settings to LLDB
- OSX: Fix new warnings from Xcode 5.1
These were fairly straight forward things for us to change and help reduce the number of warnings that you will see when compiling Reader Mobile SDK in Xcode 5.1!
What about the real errors?!?
We fixed those too! Like any good cross-platform project, Reader Mobile SDK ran into some issues deciding how to define a few types, which lead to problems with compilers across the different platforms to not agree on what the types for a few parameters were or what the return type of some functions were.
Reader Mobile SDK initially was setup to resolve these issues through some template programming. We think this made things ugly but we certainly understand why it was done, it is a complex problem that certain compilers make more difficult (by not adopting the standards as quickly as others, looking at you Visual Studio). To resolve this, we adopted a strategy of use the standards where we can and do crazy template programming when that is not possible. This strategy even helped us realize that back when our engineers added support to build for the Blackberry Playbook, we should have #included <stdint.h> instead of defining the types we needed ourselves.
The last thing our engineers had to fix was adding a few new function overloads, because now that we had adopted some standard types, they were missing on platforms that used to build without complaint! Argh, some times our lives as engineers resolving issues with compilers can be frustrating! Solving a problem in one place but introducing a different but related problem somewhere else never makes anyone happy but we are all happy now that these fixes are currently in the process of being supplied to our customers!
Watch for our latest service bulletin about Reader Mobile SDK announcements so you can get going with Xcode 5.1!