Skip to content

Instantly share code, notes, and snippets.

Last active March 26, 2023 17:21
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
plugins {
* This a plugin dependencie for this module that will be added,
* all plugin dependencies here need be included on build settings on top level.
* Different of the dependencies on bottom of this file this plugin is added to
* increase the gradle dsl capabitility. e.g:
* We added this plugin "" to allow the gradle dsl
* access the:
* android {
* // chceck the 21st line...
* }
* The android block is where you configure all your Android-specific
* build options.
android {
* The app's namespace. Used primarily to access app resources.
namespace = "com.example.myapp"
* compileSdk specifies the Android API level Gradle should use to
* compile your app. This means your app can use the API features included in
* this API level and lower.
compileSdk = 33
* The defaultConfig block encapsulates default settings and entries for all
* build variants and can override some attributes in main/AndroidManifest.xml
* dynamically from the build system. You can configure product flavors to override
* these values for different versions of your app.
defaultConfig {
// Uniquely identifies the package for publishing.
applicationId = "com.example.myapp"
// Defines the minimum API level required to run the app.
minSdk = 21
// Specifies the API level used to test the app.
targetSdk = 33
// Defines the version number of your app.
versionCode = 1
// Defines a user-friendly version name for your app.
versionName = "1.0"
* The buildTypes block is where you can configure multiple build types.
* By default, the build system defines two build types: debug and release. The
* debug build type is not explicitly shown in the default build configuration,
* but it includes debugging tools and is signed with the debug key. The release
* build type applies ProGuard settings and is not signed by default.
buildTypes {
* By default, Android Studio configures the release build type to enable code
* shrinking, using minifyEnabled, and specifies the default ProGuard rules file.
getByName("release") {
isMinifyEnabled = true // Enables code shrinking for the release build type.
* The productFlavors block is where you can configure multiple product flavors.
* This lets you create different versions of your app that can
* override the defaultConfig block with their own settings. Product flavors
* are optional, and the build system does not create them by default.
* This example creates a free and paid product flavor. Each product flavor
* then specifies its own application ID, so that they can exist on the Google
* Play Store, or an Android device, simultaneously.
* If you declare product flavors, you must also declare flavor dimensions
* and assign each flavor to a flavor dimension.
flavorDimensions += "tier"
productFlavors {
create("free") {
dimension = "tier"
applicationId = ""
create("paid") {
dimension = "tier"
applicationId = "com.example.myapp.paid"
* The dependencies block in the module-level build configuration file
* specifies dependencies required to build only the module itself.
* To learn more, go to Add build dependencies.
* These dependencies is to compile the source code for the app different
* of plugins mentioned above that are used for the gradle settings not for
* the source code.
* One thing to observe are that some `plugins` like the Java plugin,
* for example, adds configurations to represent the various classpaths it
* needs for source code compilation, executing tests and the like.
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment