L is for the Liskov Substitution Principle

The 3rd article in a series on SOLID principles and how they apply to Android/Java development. The 3rd principle states that “if S is a subtype of T, then objects of type T may be replaced with objects of type S without altering any of the desirable properties of that program”. The post includes code samples too.


Pushing the Limits of App Startup Time

An interesting post on how to optimize an Android App startup time. It demonstrates a few techniques like caching data in multiple layers and improving JSON parsing code (avoid reflection!). A Github repo is included to demo all the libraries and wiring needed.

iOS Push Notification Background Download Demystified

A common pattern for iOS apps is to download (while in the background) some data in response to a push notification. Unfortunately the flow in the code isn’t straight forward and changes based on the state of the App. This post clarifies the different scenarios and suggests a solution.
View story at Medium.com

Xcode Search: the Hidden Gems

If you are using Xcode you probably use cmd+shit+f all the time to find text in files. Apparently there a lot of hidden options in the search tool that can help you search for patterns, search in different scopes, search for definitions and also search and see call hierarchy. Tips.

Running UI Tests on iOS With Ludicrous Speed

The PSPDFKit team shares there strategy and experience writing tests for iOS. They use KIF (custom fork), they don’t use XCUI (yet?) and they have a trick for improving the speed of UI tests. Nice post.

What’s New in Android Studio 2.0

Google recently released Android Studio 2.0 to the stable channel and it is now officially ready for production use. The new version has many new features and upgrades, most notably a new FAST emulator. Click to read all the details.

What’s New in Android Studio 2.0

10 Swift One Liners To Impress Your Friends

As the title suggests this post shows how to use Swift tricks to implement functionality in one line of code. Most of these examples should never be used in production code but this is a good opportunity to test your Swift skills and understand these tricks.
View story at Medium.com

The Trouble with Manager Objects

We’ve all done that many times. We don’t know how to name something so it’s a XXManager. The problem is that these classes tend to bloat with lots of stuff. This post will help you figure out how to avoid these managers (and when it’s actually ok to use them). Recommended.

O is for Open/Closed Principle – SOLID #2: Principles for Android Developers, a series by Donn Felker

Learning the SOLID principles is always hard. This is a great opportunity to learn the Open/Closed principle. Not only for Android developers.

How I defeated an obfuscated and anti-tamper APK with some Python and a home-made Smali emulator.

The ease of reverse engineering Android apps has always been a problem. There are a lot of tools that try to make it harder on reversers to do their job. This post demonstrates an interesting approach, when all dex/java decompilers fail, use a Smali emulator (in Python) to test obfuscated code. Interesting.