Posted: February 1st, 2012 | Author: Michael | Filed under: Android, iOS, Tech | No Comments »
I have been doing iOS development for a few months now and I have come across some nice frameworks to assist in documentation, exception logging, and even a framework to help manage beta testing. I have found the following three frameworks invaluable in my current project:
- TestFlight is the framework I rely on the most to date. I use it to manage distribution of builds, gain feedback from app testers, analyze crashes, and gain insight into what my users are doing by placing checkpoints throughout the application. The sign-up and setup process took only about 10 minutes. It was very easy to integrate with my project. Integration includes adding a static library to your project and adding one line code in your AppDelegate that contains your API key. Once this in place, data will now be sent to TestFlight and you will be able to see it immediately on TestFlight’s website. You can see what type of devices your users are using along with the time spent testing. If the app does crash by chance, you will be able to see the stacktrace as well. You can also push new builds out to your users easily. Once you upload your IPA file to TestFlight, they will send an email to your users that will have a link for them to install. If they are in the application while a new build is being pushed out, they will even get an in-app notification that there is an update ready. If your users have feedback for you, they can simply reply to the update notification email and the feedback will be stored with the build. One final thing, you can add checkpoints throughout your app to gain insight into what your users are doing while using your app. Adding a checkpoint is as simple as adding one line of code. I am sure there are more features that I have failed to mention here, but I encourage you to take a look at this framework if you do any sort of beta testing. You won’t be disappointed.
- Before finding TestFlight, I was using BugSense. First off, they have different purposes. BugSense is an error logger for beta testing or production use, while TestFlight has more functionality to allow for managing distribution and gaining feedback from your users, but is meant for beta testing only. BugSense was also very easy to integrate into my app. BugSense also works for iOS and Android! I used this in our Android application as well and it was very easy to integrate. Bugsense allows you to gain insight into errors that are happening out in the wild. You can mark errors as resolved or not resolved to know which ones have been taken care of. BugSense also groups the errors together so you don’t have to sift through hundreds of errors. When I was using BugSense it was free. They have started charging for additional features since then. We will need to re-evaluate when we go to production if we are going to utilize it in our application.
- Doxygen is my final favorite framework so far. It is used to auto-generate documentation for your code. For those of you familiar with .NET, this is like XML code comments. It allows you to document classes, properties, and methods by following a certain comment format. It will create HTML pages or you can set it up to integrate your documentation into Xcode. I found Doxygen more difficult to set-up, but I went way out. Instead of just creating the HTML documentation, I set it up so the generated documentation would show up in the organizer in Xcode. I also setup a service so I could just highlight code, right-click, click Doxygenize and voilà, the Doxygen template comment was inserted above my code. It is pretty slick if you are willing to spend the time to set it up. Maybe I will write a post about that another day.
Do you have any frameworks you use in your projects (iOS or Android) that you find beneficial? Leave a comment if you feel like sharing one or many!
Posted: January 2nd, 2012 | Author: Michael | Filed under: Android, iOS, Java, Tech | 1 Comment »
How Facebook Mobile Was Designed to Write Once, Run Everywhere.
I recently read the above article on ReadWriteWeb.com. The article describes the technical architecture of the Facebook mobile applications and the direction they are heading. The article is based on a presentation that a Facebook engineering manager gave. He seems proud of the architecture and the so-called progress of the application. In reality, the Facebook application gets worse every day and has gone from being one of the best apps to one of the worst. It isn’t coincidental that as Facebook has moved from a native app to a more web-based app wrapped as a native app that the user experience has diminished. The app use to feel native, was virtually bug free, responsive, and accurate. Now, the app barely works. Bugs are littered throughout the application from pictures being un-viewable to some friends having profile pictures that are of a different Facebook friend. It’s classic that this article has “Write Once, Run Everywhere” in the title. Java, which is also slow and unresponsive, has used this slogan for years. Writing something once, and running it everywhere often comes with a price and when that price is user experience, it often isn’t worth it. Is it worth having millions of users pissed off at your unusable product just so you can cut a few developers or so your developers can feel better about having non-redundant code? Facebook can easily afford to have a small team of iOS developers, a small team of Android developers, and a web team for dumb phones. This would have allowed them to keep the best user experience for each operating system until HTML5 was ready enough to support an equal or better user experience.
Posted: November 7th, 2011 | Author: Michael | Filed under: Android, Java, Tech | No Comments »
The following tip probably won’t change your world, but I thought I would share it to save people time that weren’t aware of it. Unfortunately, Java does not have Auto-Implemented Properties like C# does. If you are going to obey object-oriented principles, you will need to create a private field for each property and then create a getter method and a setter method if both are needed. This can be very tedious as the majority of time there is no additional logic needed before setting the field or getting the field. Luckily, if you are using Eclipse for Java development, you can use the built in shortcut to automatically generate your getter and setter methods. First, you will create the private fields that are needed for your class (Figure 1). After you have created your private fields, you can generate the methods by clicking on Source in the menu bar and then “Generate Getters and Setters.” A dialog (Figure 2) will appear. Here you can check what fields you want getters and setters for. If you only want one or the other, you can expand the field and choose the appropriate option for what method want. After you have done this and then clicked OK, your code will be inserted into your class (Figure 3).
-
-
Figure 1
-
-
Figure 2
-
-
Figure 3
Posted: November 1st, 2011 | Author: Michael | Filed under: Android, iOS, Tech | No Comments »
![016a_android_orphans[1]](http://michaelfransen.com/wp-content/uploads/2011/11/016a_android_orphans1.png)
This is one factor that makes me choose against an Android device for personal use. With Android, it is very frustrating when a new OS gets released, such as ICS (Ice Cream Sandwich), and you don’t know when or if you will get the update. With Apple, you know you will get subsequent OS releases. Although, if you get really far behind, you may not have all of the new functionality available, but you will get a large majority of it.
Posted: October 20th, 2011 | Author: Michael | Filed under: Android, Tech | 2 Comments »
I have been developing an Android tablet app for the past few weeks. I am still in the learning stages, however, I thought I would share some of my challenges so far. I quickly learned that developing using the emulator is not feasible due to its slowness. If you intend to finish developing an app in your lifetime, you need to develop with a connected device. Luckily my Lenovo Thinkpad tablet came just in time. Getting it connected and ready for developing was not straight forward however.
To connect to an Android device from your computer, you must install a USB driver. If you are developing on an Android Developer Phone, Nexus One, or Nexus S, then you can install the USB driver provided by google. If you don’t have one of these devices, as I didn’t, then you need to find the OEM USB driver. The Android Developer site provides a page that links to the different hardware manufactures for tablets/phones. Unfortunately, the Lenovo link points to a page that is in Chinese! Even if you use google translate to translate the page, the downloads don’t work and won’t allow you to communicate with your device. Trust me, I tried it. After searching the internet for half a day, I finally found a solution. You must install PdaNet. This application is made for a different purpose, however, it installs the adb usb drivers that are needed for your windows machine to connect to the Thinkpad tablet. After installing PdaNet you MUST do one more step. You will not be able to connect if you do not do this step. You must create a new ini file in C:\Users\\.android named adb_usb.ini. In that file you must type the vendor id for the tablet. In the case of the Lenovo Thinkpad, you would type 0x17EF in the file and that is it. Note that if you don’t see .andorid in your user folder, you most likely have hidden files/folders not visible. If you make them visible then you will see this folder if you have installed the the Android SDK.
After doing the previous steps, you should now be able to develop using the Lenovo Thinkpad tablet as your testing device.