Android | iOS | |
IDE | Android Studio / free | Xcode / free |
Language | Java | Objective-C |
Virtualization | Android Emulator, Genymotion | iOS Simulator |
Android | iOS | |
Building the interface | XML elements | Pixelbased editor |
Layout | Work with percentages/alignments | Work with pixels |
Screen | Need to consider many number of screen sizes and resolutions | Sufficient to deal with two different screen sizes iPhone/iPad |
Styling | XML attributes, styles and themes | Properties in editor panels |
Customizations | Build Java class with pixel control over the display | Build Objective-C class with pixel control over the display |
Android | iOS | |
Reference interface objects | Declare member in class, set using id and findViewById | Declare member in class, connect as outlet in editor |
Specify event handler | Call method for particular event on interface object. onClick as XML attribute. | Call method for particular event on interface object. Connect as outlet in editor. |
Android | iOS | |
Store simple values | SharedPreferences API | UserSettings API |
Database | SQLite | SQLite |
Database access API | Light wrapper around SQLite, SQLiteOpenHelper | Core Data that maps tables and columns to classes and class members |
Private files | Each app can create, write and read files that no other app have access to | Each app can create, write and read files that no other app have access to |
Shared file system | Access and API to a file system shared between all apps | None |
Android | iOS | |
Testing without device | Emulator, close to device but slow | Simulator, far from device but fast |
Device installation (without store) | With cable or download APK file if "Unknown sources" checked | With cable or download IPA file if device id known to developer and used to sign IPA file (100 devices) |
/