Believe it or not, in celebration of their 10th Anniversary Packt Publishing is making the e-version of my book available for only $10.
Well actually they’re doing it for all of their e-books and videos.
If you’d like to a little deeper in Xamarin, checkout my Pluralsight courses on Xamarin…
Keep watching to learn more about Xamarin
Packt is celebrating the release of their 2,000th title and has a special offer!
Packt is throwing in a free eBook of your choice with the purchase of my book, Creating Dynamic UI with Android Fragments.
Actually they’re doing that for all of their eBook titles but I thought I’d take this chance to plug mine. 🙂
Whatever titles you choose, it’s a great deal!!
As you may know, I began digging into Xamarin at the end of last year. It showed a lot of promise as a great way to create cross-platform iOS and Android apps leveraging the existing Visual Studio and C# skills that so many developers have.
When I first started working with it, I did have some initial concerns as I talked about in these 2 blog posts.
I have to say though, once I got past those initial hurdles, things are definitely looking up.
So far I’m doing mostly basic stuff but overall things are going well.
My two main issues are
Neither of these are show-stoppers though.
In the case of connecting to the iOS build server, in most cases restarting Visual Studio takes care of the problem.
For the designer, the Visual Studio designer is workable and if I want to, I can use the Android Studio designer to do the layout work and then just copy it over to the Visual Studio project.
So that’s a long way of saying…
Using Xamarin within Visual Studio is getting a thumbs up so far.
Keep watching as I push on it harder to see how it does as the problem complexity increases.
If you’re interested in doing iOS/Android development with Xamarin, Part 1 of my Pluralsight course series on the topic just went live today…
I’m happy to report that since my previous post, I am now able to build the iOS app without any difficulty. Thanks again to James Montemagno at Xamarin for his help.
BTW: My apologies for the 4-day gap between posting on the issue. I was out of town and didn’t have my Mac with me so couldn’t do the iOS part of the build.
The reason I encountered errors & warnings when building the iOS project is due to the fact that when the wizard generates the project it does not fill in 3 key fields in the project properties: Application Name, Identifier, and Version. The fields are all blank as shown here.
I filled those in with the appropriate values as shown here…
… and all builds well.
One bit of frustration is that I didn’t see anywhere in the Xamarin Hello, iPhone documentation where it said I had to fill these values in for a valid build.
Near the end of the documentation it does mention that one can edit the plist file using property pages. However, the screen shot shows the Identifier and Version fields empty giving one the impression that leaving them blank is OK.
With those values being so important, I would’ve preferred that Xamarin did one of the following (listed in my order of preference).
In fairness, the error/warning messages do indicate that the values need to be set on the property page. It’s just that after the other headaches I was experiencing, seeing an untouched, wizard-generated project fail to build left me a bit discouraged.
IMHO – When working with a brand new environment, its critical that what comes out of the wizard must build without any errors. So often all one is trying to do is verify that the pieces are working and build errors on untouched wizard-generated projects give one the impression that something is wrong. 🙂
One little thing that surprised me is that Visual Studio is not updating the status bar to indicate that a successful build has completed. In the case of a standard Visual Studio project, the status bar displays a message like the following indicating build success.
In the case of my VS solution containing the iPhone project, the status bar does not update with a success message as you can see here.
I’ve had to have the Output window open so that I can see when a successful build completes.
Although I haven’t tried to exhaustively diagnose the cause, the lack of a success message appears to be tied to the fact that the solution contains an iPhone project (Xamarin will often display the Mac build host IP Address in the status bar). When I create a solution containing only an Android project, the build result displays in the status bar as expected.
Just to follow up on the issue I mentioned in my last post about the Xamarin.Android Beta breaking Xamarin.iOS in Visual Studio.
The folks at Xamarin have followed up and let me know that there is an incompatibility between the Xamarin.Android version that is currently in Beta and the production release of Xamarin.iOS. To safely install the Xamarin.Android Beta, I’ll need to install the corresponding Xamarin.iOS Beta … A very reasonable requirement.
You can find the bug report and Xamarin’s response here.
I’m not sure if I’m going to do the Beta installs right now or not. I may just wait for them to reach production release. I’ll keep y’all updated if I do decide to install the Betas.
So everything appears to now be working. I can start really digging into things now.
I do want to give Kudos to the folks at Xamarin…
So far every issue I’ve raised whether in their Forums or on their Bugzilla page has been responded to in a very reasonable time frame. Thanks guys!
I’ve been wanting to dig into using Xamarin to do iOS/Android development in Visual Studio/C# for a while now. So finally had a chance to start looking into it closely.
Update: After you read this post, checkout the follow up.
I now have everything setup and running. I must admit that creating my first Android and iOS projects was not as a satisfying has I had hoped. There’s a bit of flaky behavior in the Android UI designer and the wizard generated projects for both Android and iOS have problems.
Let’s look at the Android side of things first.
The initial problems I ran into were tied to unexpected UI designer behavior I encountered when it was first opened.
The first two issues are easily resolved by simply taking some action that causes the design window to resize: explicitly resizing it, hiding/showing the toolbox, etc.
It turns out that the design-view/XML-view toggle buttons are not supported for VS2013 in the current stable release of Xamarin.Android (4.10.1), although they are supported in earlier VS versions and in Xamarin Studio (Xamarin’s stand-alone IDE). I checked around and found that the beta version of Xamarin.Android 4.10.2 does include support for the toggle buttons so I decided to install the beta.
When I installed the beta, it did indeed add the toggle buttons. It also fixed the first two issues I mentioned BUT …
… it completely broke iOS support in Visual Studio 2013 (we need to keep in mind that Xamarin.Android 4.10.2 is still in beta). I could no longer open or create iOS projects (remember it’s Android support that I updated). Unfortunately reinstalling Xamarin.IOS did not fix it. I ultimately had to completely uninstall all of Xamarin then reinstall from scratch and live without the toggle buttons for now.
Moving on from the Android UI designer for a moment, I also ran into problems with the wizard-generated Android project in that it’s naming the Android resource folders incorrectly.
Notice that the folders under Resources (Drawable, Layout, Values) are all capitalized. That’s not supposed to be the case [ excuse the pun 🙂 ]. The Android platform doesn’t like that. Those are supposed to be all lower-case. I had to go through and manually rename them. Not ideal but not the end of the world.
BTW: Fixing those folder names had a nice side effect: It resolved the problem with the string resources. With those names fixed, the string resource values now display correctly on the device design surface (thanks to James Montemagno at Xamarin for his help on this one).
You can follow the steps I went through working things out on the Xamarin Forum.
After working through all the Android stuff I setup all of the iOS pieces which include setting up a Mac as a build server. The setup process went pretty smoothly. I then ran the wizard to generate an iPhone Hello World app, did a build and immediately got 2 build errors and 1 build warning.
And with that I’m calling it a day.
I must admit, I expected an unchanged, wizard-generated project to be error free. 🙂
To not blow things out of proportion, we want to keep in mind that none of the issues I’ve mentioned are show-stopping. They’re basically annoyances and all fairly easily worked around.
We don’t want to lose sight of the fact that Xamarin is solving a very hard problem. Android and iOS are incredibly different platforms with many of their own nuances and complexities. Then on top of that, Xamarin has to integrate into Visual Studio (a complex IDE) and interact with the iOS toolset running on a Mac. Many, many challenges to overcome.
Working in a brand new environment is always a bit stressful. For me, the best way to have that stressed relieved is for the environment to all work smoothly which didn’t quite happen in this case. That said, I have a workable environment and although I do need to apply some workarounds, they are all fairly easy to deal with.
I’ll dig back into things tomorrow.
Update: I’ve posted a follow up to this post.
I’m not big on self-promotion but I’ll make an exception as this is an exciting day for me…
My book Creating Dynamic UI with Android Fragments received its first user review on Amazon and its a 5-Star Review
This book is just what I was looking for. The three pieces I was having issues with were static vs. dynamic fragments, dialogue fragments and backstack management. This book covers all three of these in a manner that has really cleared up my understanding and improved my application design as a result.
Thank you to kbp135 – Here’s the link to the review.
And just in case you’re wondering … the reviewer is not someone I know 🙂
Checkout Creating Dynamic UI with Android Fragments for yourself. I’d love to hear your feedback.
Also checkout Jim’s Android courses at Pluralsight.