Open Source projects for Android Development
Here's a documented list of all items that we think should and could be improved. If you're interested in taking on this project, we would be extremely grateful (and the open source community in general would be too).
-
Display a logging error at least if there is no Internet permission defined in(Android now throws a java.lang.SecurityException error)AndroidManifest.xmlwhen trying to use the networking stack layer. Right now, there is no indicating what's happening in any networking libraries should you forget this Internet permission. -
Fix importing existing Android Studio projects so that you [[can't blindly import a folder or
app/build.gradle|Getting-Started-with-Gradle#importing-existing-android-studio-projects]] See source code for project importer -
Fix support libraries not to require custom
appnamespaces (i.e. when using the ActionBar compatibility library) -
When using multiple layout resource directories for large projects, usually a rebuild/clean is necessary.(Fix pending in https://android-review.googlesource.com/#/c/157971/)
Created by CodePath with much help from the community. Contributed content licensed under cc-wiki with attribution required. You are free to remix and reuse, as long as you attribute and use a similar license.
Pages 203
- Home
- Accessing the Camera and Stored Media
- ActionBar Tabs with Fragments
- ActiveAndroid Guide
- Activity Lifecycle
- Android Bootcamp Cliffnotes
- Android Design Guidelines
- Android Directory Structure
- Android for Work
- Android Testing Framework
- Android Testing Options
- Android Unit and Integration testing
- Animations
- Applying Data Binding for Views
- Architecture of Android Apps
- Audio Playback and Recording
- Automating Publishing to the Play Store
- Basic Event Listeners
- Basic Painting with Views
- Basic Todo App Tutorial
- Beginning Android Resources
- Book Search Tutorial
- Bottom Navigation Views
- Building Data driven Apps with Firebase
- Building Data driven Apps with Parse
- Building Gradle Projects with Jenkins CI
- Building Simple Chat Client with Parse
- Building your own Android library
- Chrome Custom Tabs
- Circular Reveal Animation
- Clean Persistence with Sugar ORM
- Cloning a Login Screen Layout Guide
- CodePath Goal
- Collaborating on Projects with Git
- Common Implicit Intents
- Common Navigation Paradigms
- Communicating with an Event Bus
- Configuring a Parse Server
- Configuring ProGuard
- Connectivity using the Bluetooth API
- Constructing View Layouts
- Consuming APIs with Retrofit
- Contributing back to Android
- Contributing Guidelines
- Converting JSON to Models
- Crash Reporting with Crashlytics
- Crash Reporting with Firebase
- Creating and Executing Async Tasks
- Creating and Using Fragments
- Creating App Shortcuts in Launcher
- Creating Content Providers
- Creating Custom Listeners
- DBFlow Guide
- Debugging and Profiling Apps
- Debugging Exceptions within your App
- Debugging with Stetho
- Defining Custom Views
- Defining The ActionBar
- Defining Views and their Attributes
- Dependency Injection with Dagger 2
- Design Support Library
- Developing Custom Themes
- Displaying Images with the Fresco Library
- Displaying Images with the Glide Library
- Displaying Images with the Picasso Library
- Displaying the Snackbar
- Displaying Toasts
- Drawables
- Drawing with OpenGL and GLSurfaceView
- Dynamic Color using Palettes
- Easier SQL with Cupboard
- Effective Java for Android
- Endless Scrolling with AdapterViews
- Endless Scrolling with AdapterViews and RecyclerView
- Extended ActionBar Guide
- Extending SurfaceView
- Flexible User Interfaces
- Floating Action Buttons
- Fragment Navigation Drawer
- Free Android Curriculum
- Gallery
- Genymotion 2.0 Emulators with Google Play support
- Gestures and Touch Events
- Google Cloud Messaging
- Google Maps API v2 Usage
- Google Maps Fragment Guide
- Google Play Style Tabs using TabLayout
- Handling Configuration Changes
- Handling ProgressBars
- Handling Scrolls with CoordinatorLayout
- Hello World
- Heterogeneous Layouts inside RecyclerView
- Implementing a Heterogenous ListView
- Implementing a Horizontal ListView Guide
- Implementing a Rate Me Feature
- Implementing Pull to Refresh Guide
- Installing Android SDK Tools
- IntelliJ 2016.3.3 Android Studio Settings Configurations Config
- Interacting with the Calendar
- Intermediate
- Keeping Updated with Android
- Lambda Expressions
- Leveraging the Gson Library
- Listening to Sensors using SensorManager
- Loading Contacts with Content Providers
- Local Databases with SQLiteOpenHelper
- Managing Runtime Permissions with PermissionsDispatcher
- Managing Threads and Custom Services
- Material Design Primer
- Menus and Popups
- Migrating to the AppCompat Library
- Mobile Screen Archetypes
- motivation
- Must Have Libraries
- Navigation and Task Stacks
- Networking with the Fast Android Networking Library
- Networking with the Volley Library
- Notification Services (GeoFence, Calendar)
- Notifications
- Open Source projects for Android Development
- Organizing your Source Files
- Oscarg933
- Paging Library Guide
- Persisting Data to the Device
- Playing Media with ExoPlayer or TubiPlayer
- Polishing a UI Tips and Tools
- Popular External Tools
- Populating a ListView with a CursorAdapter
- Powerful Persistence with JDXA ORM
- Presenting an Android Device
- Progress Bar Custom View
- Publishing to the Play Store
- Push Messaging
- Push Notifications Setup for Parse
- Quickstart with Exoplayer
- Radiology app
- Real time Messaging
- Recording Video of an Android Device
- Reducing View Boilerplate with Butterknife
- Reducing View Boilerplate with ViewBinding
- Repeating Periodic Tasks
- Replacing Enums with Enumerated Annotations
- Retrieving Location with LocationServices API
- Ripple Animation
- Robolectric Installation for Unit Testing
- Room Guide
- Rotten Tomatoes Networking Tutorial
- Running Apps on Your Device
- RxJava
- RxJava and RxBinding
- Sample Android Apps
- Sending and Managing Network Requests
- Sending and Receiving Data with Sockets
- Server Synchronization (SyncAdapter)
- Setting up IntelliJ IDEA
- Setting up Travis CI
- Settings with PreferenceFragment
- Shared Element Activity Transition
- Sharing Content with Intents
- Sliding Tabs with PagerSlidingTabStrip
- Starting Background Services
- Storing and Accessing SharedPreferences
- Storing Secret Keys in Android
- Streaming Youtube Videos with YouTubePlayerView
- Styles and Themes
- Styling UI Screens FAQ
- Troubleshooting API calls
- Troubleshooting Common Issues
- Troubleshooting Common Issues with Parse
- Twitter Persistence With Room
- UI Testing with Espresso
- UI Testing with Robotium
- Understanding App Permissions
- Understanding App Resources
- Understanding the Android Application Class
- Unit Testing with Robolectric
- Using a BaseAdapter with ListView
- Using an ArrayAdapter with ListView
- Using an ArrayAdapter with ListView”
- Using Android Async Http Client
- Using Android Studio
- Using CodePath Async Http Client
- Using Context
- Using DialogFragment
- Using Intents to Create Flows
- Using Kotlin for Android development
- Using OkHttp
- Using Parcelable
- Using Parceler
- Using the App Toolbar
- Using the CardView
- Using the RecyclerView
- Video and Audio Playback and Recording
- Video Playback and Recording
- View Hierarchy Animations
- ViewPager with FragmentPagerAdapter
- Working with Input Views
- Working with the EditText
- Working with the ImageView
- Working with the ScrollView
- Working with the Soft Keyboard
- Working with the TextView
- Working with the WebView
Finding these guides helpful?
We need help from the broader community to improve these guides, add new topics and keep the topics up-to-date. See our contribution guidelines here and our topic issues list for great ways to help out.
Check these same guides through our standalone viewer for a better browsing experience and an improved search. Follow us on twitter @codepath for access to more useful Android development resources.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
