Products
Features
YouTube Video Summarizer
Summarize YouTube videos
Web & PDF Highlighter
Highlight web pages & PDFs
Chat with PDF
Ask any PDF questions with AI
Ask AI Clone
Chat with your highlights & memories
Audio Transcriber
Transcribe audio files to text
Glasp Reader
Read and highlight articles
Kindle Highlight Export
Export your Kindle highlights
Idea Hatch
Hatch ideas from your highlights
Integrations
Obsidian Plugin
Notion Integration
Pocket Integration
Instapaper Integration
Medium Integration
Readwise Integration
Snipd Integration
Hypothesis Integration
Apps & Extensions
Chrome Extension
Safari Extension
Edge Add-ons
Firefox Add-ons
iOS App
Android App
Discover
Discover
Ideas
Discover new ideas and insights
Articles
Curated articles and insights
Books
Book recommendations by great minds
Posts
Essays and notes from readers
Quotes
Inspiring quotes collection
Videos
Curated videos and summaries
Explore Glasp
Glasp Newsletter
Weekly insights and updates
Glasp Talk
Interview series with great minds
Glasp Blog
Latest news and articles
Glasp Use Cases
Learn how others use Glasp
Build & Support
Glasp API
Access Glasp's API for developers
MCP Connector
Connect Glasp to Claude & ChatGPT
Community
Glasp Reddit Community
Students
Student discount and benefits
FAQs
Frequently Asked Questions
AboutPricing
DashboardLog inSign up

The Ultimate Package Structure Guide for Android Developers

54.4K views
•
February 28, 2024
by
Philipp Lackner
YouTube video player
The Ultimate Package Structure Guide for Android Developers

TL;DR

Learn to create scalable package structures for Android apps.

Transcript

hey guys and welcome back to a new video you can see this video as The Ultimate Guide to creating a package structure a solid package structure for your Android apps so I will go over what really counts when you need to create a package structure for your projects and what my personal approach is to packaging my projects so let's start with... Read More

Key Insights

  • A good package structure should be clear, scalable, and intuitive, allowing new team members to easily find and place classes.
  • Consider the scalability of your project when choosing a package structure, as different structures suit different scales of projects.
  • Start with a single app module and structure packages as if they were modules for easier future migration to a multimodule structure.
  • Divide the app into features, with each feature representing an isolated unit that performs a dedicated function.
  • Avoid placing all presentation, domain, and data layers in one module for large projects to prevent unlimited growth and complexity.
  • Use feature-based packaging at the root level and divide each feature into presentation, domain, and data layers.
  • Decide between type-based and context-based packaging for domain and data layers based on the project's size and complexity.
  • Include a core package for classes shared across multiple features and a DI package for dependency injection modules.

Install to Summarize YouTube Videos and Get Transcripts

Explore YouTube Video Summarizer or Get YouTube Transcript Extractor

Questions & Answers

Q: What is the primary goal of a good package structure?

The primary goal of a good package structure is to be clear, scalable, and intuitive, allowing team members to easily find, place, and understand the organization of classes within a project. It should facilitate ease of navigation and collaboration, especially for new team members, by providing a logical layout that reflects the project's architecture and functionality.

Q: How should you start structuring your Android project?

You should start structuring your Android project by using a single app module and organizing packages as if they were modules. This approach allows for easier future migration to a multimodule structure when the project scales. By structuring packages in this manner, you can take advantage of the benefits of modularization without the initial complexity of managing multiple Gradle modules.

Q: What is the recommended way to organize app features?

The recommended way to organize app features is to divide the app into distinct features, each representing an isolated unit with a dedicated function. This involves creating separate packages for each feature at the root level, and within each feature, dividing it into presentation, domain, and data layers. This approach ensures that each feature is self-contained and scalable, preventing the growth of unlimited complexity within a single module.

Q: Why is it not advisable to place all layers in one module for large projects?

Placing all layers in one module for large projects is not advisable because it can lead to unlimited growth and complexity, making it difficult to manage and navigate the codebase. As the project scales, having all presentation, domain, and data layers in a single module can result in a cluttered and confusing structure, hindering development efficiency and collaboration. Instead, organizing features at the root level and dividing them into separate layers helps maintain clarity and scalability.

Q: What is the difference between type-based and context-based packaging?

Type-based packaging organizes classes by the type of objects they represent, such as models, repositories, or use cases. In contrast, context-based packaging groups classes by their functional context, like user validation or authentication. Type-based packaging is often more intuitive for smaller projects, while context-based packaging scales better for larger projects with complex features, as it limits the growth of individual packages by focusing on related functionality.

Q: How should shared classes across features be handled?

Shared classes across features should be organized into a core package. This package contains all classes that are utilized by multiple features, such as common utilities, shared models, or database instances. By centralizing shared resources, the core package helps maintain a clean and organized structure, ensuring that shared components are easily accessible and properly managed across the entire project.

Q: What role does the DI package play in the package structure?

The DI (Dependency Injection) package plays a crucial role in managing dependencies within the package structure. It contains modules where dependencies are defined and provided, allowing for efficient dependency management and injection throughout the project. By centralizing dependency definitions in the DI package, the project maintains a clear and organized structure, facilitating easier updates and modifications to dependencies as the project evolves.

Q: What are the benefits of starting with a single app module?

Starting with a single app module offers several benefits, including simplicity and ease of management during the initial stages of development. It allows developers to focus on building the core functionality without the complexity of managing multiple Gradle modules. Additionally, structuring packages as if they were modules from the beginning facilitates a smoother transition to a multimodule structure in the future, providing scalability and modularization benefits when the project grows.

Summary & Key Takeaways

  • The video provides a comprehensive guide on creating a scalable and intuitive package structure for Android apps. It emphasizes the importance of a clear structure that allows new team members to easily navigate and contribute to the project. The guide suggests starting with a single app module and structuring packages as if they were modules.

  • It recommends dividing the app into features, each representing an isolated unit with dedicated functions. The video advises against placing all layers in one module for large projects, as this can lead to complexity. Instead, it suggests using feature-based packaging at the root level and dividing each feature into presentation, domain, and data layers.

  • The guide also discusses the choice between type-based and context-based packaging for domain and data layers, depending on the project's size and complexity. Additionally, it includes advice on handling shared classes across features using a core package and managing dependencies with a DI package.


Read in Other Languages (beta)

English

Share This Summary 📚

Summarize YouTube Videos and Get Video Transcripts with 1-Click

Download browser extensions on:

Try YouTube Summary with ChatGPT & Claude or YouTube Transcript Generator

Explore More Summaries from Philipp Lackner 📚

How to Model an SQL Database (DON'T SKIP THIS) - Android Room With Multiple Tables - Part 1 thumbnail
How to Model an SQL Database (DON'T SKIP THIS) - Android Room With Multiple Tables - Part 1
Philipp Lackner
5 Things You MUST Do Before Deploying Your App to Google Play (or you'll regret it) thumbnail
5 Things You MUST Do Before Deploying Your App to Google Play (or you'll regret it)
Philipp Lackner
LAYOUT BASICS AND LINEAR LAYOUT - Android Fundamentals thumbnail
LAYOUT BASICS AND LINEAR LAYOUT - Android Fundamentals
Philipp Lackner
Expect/Actual in Kotlin Multiplatform - KMP for Beginners thumbnail
Expect/Actual in Kotlin Multiplatform - KMP for Beginners
Philipp Lackner
ViewModels & Configuration Changes - Android Basics 2023 thumbnail
ViewModels & Configuration Changes - Android Basics 2023
Philipp Lackner
Coroutine Contexts - Kotlin Coroutines thumbnail
Coroutine Contexts - Kotlin Coroutines
Philipp Lackner

Summarize YouTube Videos and Get Video Transcripts with 1-Click

Download browser extensions on:

Try YouTube Summary with ChatGPT & Claude or YouTube Transcript Generator

Apps & Extensions

  • Chrome Extension
  • Safari Extension
  • Edge Add-ons
  • Firefox Add-ons
  • iOS App
  • Android App

Key Features

  • YouTube Video Summarizer
  • Web & PDF Summarizer
  • Web & PDF Highlighter
  • Chat with PDF
  • Ask AI Clone
  • Audio Transcriber
  • Glasp Reader
  • Kindle Highlight Export
  • Idea Hatch

Integrations

  • Obsidian Plugin
  • Notion Integration
  • Pocket Integration
  • Instapaper Integration
  • Medium Integration
  • Readwise Integration
  • Snipd Integration
  • Hypothesis Integration

More Features

  • APIs
  • MCP Connector
  • Blog & Post
  • Embed Links
  • Image Highlight
  • Personality Test
  • Quote Shots

Company

  • About us
  • Blog
  • Community
  • FAQs
  • Job Board
  • Newsletter
  • Pricing
Terms

•

Privacy

•

Guidelines

© 2026 Glasp Inc. All rights reserved.