(US Only) If you are an existing engineer with 2+ years of professional experience in software development and are serious about ramping up on Android quickly, be sure to apply for our free evening 8-week Android bootcamp.
We've trained over a thousand engineers from top companies including Apple, Twitter, Airbnb, Uber, and many others leveraging this program. The course is taught by Android experts from the industry and is specifically designed for existing engineers.
Not in the United States? Please fill out our application of interest form and we’ll notify you as classes become available in your area powered by local organizers.
There are many third-party libraries for Android but several of them are "must have" libraries that are extremely popular and are often used in almost any Android project. Each has different purposes but all of them make life as a developer much more pleasant. The major libraries are listed below in a few categories.
Standard Pack
This "standard pack" listed below are libraries that are quite popular, widely applicable and should probably be setup within most Android apps:
The "advanced pack" listed below are additional libraries that are more advanced to use but are popular amongst some of the best Android teams. Note that these libraries may not be suitable for your first app. These advanced libraries include:
Keep in mind that the combination of these libraries may not always play nicely with each other. The following section highlights some of these issues.
Parceler and IcePick
Note that you cannot use IcePick at the current time to save state of Parceler objects. See this GitHub issue for more context on why they are incompatible. You will need to use explicitly Parcelable objects with IcePick. You may consider replacing Parceler with AutoParcel which works seamlessly with IcePick.
ButterKnife and Parceler
Using the Butterknife library with the Parceler library causes multiple declarations of javax.annotation.processing.Processor. In this case, you have to exclude this conflict in your app/build.gradle file:
Often you may find that using ButterKnife or Dagger injections defined in your constructor prevent Android Studio to preview your Custom View layout. You may see an error about needing isEditMode() defined. Essentially this method is used to enable your code to short-circuit before executing a section of code that might be used for run-time but cannot be executed within the preview window.
public ContentEditorView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.view_custom, this, true);
// short circuit here inside the layout editorif(isInEditMode()) {
return;
}
ButterKnife.bind(this);
Convenience
Dagger - A fast dependency injector for Android and Java. See this video intro from Square.
Spork - Spork is an annotation processing library to speed up development on your projects. It allows you to write less boilerplate code to make your code more readable and maintainable.
AutoParcel - Port of Google AutoValue for Android with Parcelable generation goodies.
Logger - Much cleaner and easier logcat trace messages
LeakCanary - Easily catch memory leaks as they occur
AndroidAnnotations - Framework that speeds up Android development. It takes care of the plumbing, and lets you concentrate on what's really important. By simplifying your code, it facilitates its maintenance
AboutLibraries - Automatically generates an About this app section, with a list of used libraries
SDK Manager Plugin - Helpful plugin especially for group projects if you're missing an SDK version, haven't downloaded an API version, or your support library is updated.
EasyDeviceInfo - Get device information in a super easy way
Fresco - An image management library from Facebook.
Fast Android Networking -Fast Android Networking is a powerful library for doing any type of networking in Android applications which is made on top of OkHttp Networking Layer.
ListView
EasyListViewAdapters - Building multi-row-type listview made much cleaner & easier.
GridListViewAdapters - Easily build unlimited Grid cards list like play-store. (ListView working as unlimited GridView)
StickyListHeaders - An android library for section headers that stick to the top of a ListView
QuickReturn - Reveal or hide a header or footer as the list is scrolled in a direction.
Paginated Table - This is a table which allows dynamic paging for any list of objects. Icons can be added to columns as well as custom items such as check boxes and buttons.
RecyclerView
UltimateRecyclerView - Augmented RecyclerView with refreshing, loading more, animation and many other features.
AdvRecyclerView - Extended RecyclerView with swipe to dismiss, and draggable or expanding items.
FastAdapter - Simplify and speed up the process of filling your RecyclerView with data
ItemAnimators - RecyclerView animators to animate item add/remove/add/move
GreedoLayout - Full aspect ratio grid LayoutManager for Android's RecyclerView
RecyclerViewHelper - Provides the most common functions around recycler view like Swipe to dismiss, Drag and Drop, Divider in the ui, events for when item selected and when not selected, on-click listener for items.
async-expandable-list - async-expandable-list provides solutions to displaying header-sub-items structure with simple api and asynchronously loading sub-list into an expandable list.
SlidingMenu - Library that allows developers to easily create applications with sliding menus like those made popular in the Google+, YouTube, and Facebook apps.
Android Satellite Menu - Radial menu which is configurable reminiscent of the "Path" menu style.
ArcMenu - Alternate radial menu modeled after the "Path" menu style.
MPAndroidChart - A powerful Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations.
Stetho - A debug bridge for Android applications which could be used for multiple purposes not limited to Network Inspection, Database Inspection and Javascript Console.
Bugfender - Cloud storage for your app logs, track user behaviour to find problems in your mobile apps.
Resources
Check out the following resources for finding libraries: