Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Android Studio Empty Views Activity Templates Comparison

Note

Read this document in 日本語 (Japanese).

This repository is designed to track, investigate, and compare the differences between the starter template projects ("Empty Views Activity" (Java)) generated by different versions of Android Studio.


📌 Target Versions

Template Directory Android Studio Version Build Number Build Date
Panda2JavaEmptyViewsActivity Android Studio Panda 2 (2025.3.2) AI-253.30387.90.2532.14935130 Feb 25, 2026
Panda3JavaEmptyViewsActivity Android Studio Panda 3 (2025.3.3 Patch 1) AI-253.31033.145.2533.15176040 Apr 10, 2026
Quail1JavaEmptyViewsActivity Android Studio Quail 1 (2026.1.1 Patch 2) AI-261.23567.138.2611.15646644 Jun 16, 2026
Quail4JavaEmptyViewsActivity Android Studio Quail 4 (2026.1.4 Patch 1) AI-261.26222.65.2614.16379836 Sep 18, 2026
Rabbit2JavaEmptyViewsActivity Android Studio Rabbit 2 (2026.2.2 Canary 2) AI-262.10315.125.2622.16434108 Sep 24, 2026

📊 Comparison Matrix

Feature / Setting Panda 2 (2025.3.2) Panda 3 (2025.3.3 P1) Quail 1 (2026.1.1 P2) Quail 4 (2026.1.4 P1) Rabbit 2 (2026.2.2 C2)
Android Gradle Plugin (AGP) 9.1.1 9.1.1 9.2.1 9.4.1 9.5.0-alpha07
Gradle Wrapper 9.3.1 9.3.1 9.4.1 9.6.0 9.6.0
Gradle Daemon Toolchain (gradle-daemon-jvm.properties) JDK 21 JDK 21 JDK 21 JDK 25 JDK 25
Configuration Cache (gradle.properties) Not specified Not specified true true true
Release Optimization DSL (app/build.gradle.kts) isMinifyEnabled = false isMinifyEnabled = false optimization { enable = false } optimization { enable = false } optimization { enable = true; packageScope = ... }
Keep Rules File app/proguard-rules.pro app/proguard-rules.pro app/src/main/keepRules/rules.keep app/src/main/keepRules/rules.keep app/src/main/keepRules/rules.keep
Activity Dependency (libs.versions.toml) activity = "1.13.0" activity = "1.8.0" activity-ktx = "1.8.0" activity-ktx = "1.13.0" activity-ktx = "1.13.0"
AndroidX / Material Versions Newer (1.8.0 / 1.14.0) Conservative (1.6.1 / 1.10.0) Conservative (1.6.1 / 1.10.0) Newer (1.8.0 / 1.14.0) Conservative (1.6.1 / 1.10.0)
Manifest windowSoftInputMode (AndroidManifest.xml) Not set Not set adjustResize adjustResize adjustResize
Edge-to-Edge Enable Method (MainActivity.java) EdgeToEdge.enable(this) EdgeToEdge.enable(this) EdgeToEdge.enable(this) EdgeToEdge.enable(this) WindowCompat.enableEdgeToEdge(getWindow())
settings.gradle.kts include(":app") Single line Single line Single line Single line Single line

🔍 Detailed Differences

1. Build Tools & Gradle Environment

  • Gradle Version Evolution:
    • Panda 2 & Panda 3 use Gradle 9.3.1.
    • Quail 1 adopts Gradle 9.4.1.
    • Quail 4 & Rabbit 2 upgrade to Gradle 9.6.0.
  • Android Gradle Plugin (AGP):
    • Versions evolve as: 9.1.1 (Panda 2 & 3) ➔ 9.2.1 (Quail 1) ➔ 9.4.1 (Quail 4) ➔ 9.5.0-alpha07 (Rabbit 2 Canary).
  • Gradle Daemon JVM Toolchain:
    • Panda 2, Panda 3, and Quail 1 target JDK 21 (toolchainVersion=21 in gradle/gradle-daemon-jvm.properties).
    • Quail 4 and Rabbit 2 bump toolchainVersion to JDK 25, downloading/using JDK 25 for the Gradle daemon via Foojay Disco API.
  • Gradle Configuration Cache:
    • Starting in Quail 1, org.gradle.configuration-cache=true is enabled by default in gradle.properties for faster configuration and build execution.

2. ProGuard / R8 Optimization DSL & Keep Rules

Starting in Quail 1 (AGP 9.2+), the traditional ProGuard build configuration transitioned to AGP 9's new optimization DSL and convention-based keep rules:

app/build.gradle.kts

  • Panda 2 & Panda 3 (Legacy DSL):
    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
  • Quail 1 & Quail 4 (New Optimization DSL - Disabled):
    buildTypes {
        release {
            optimization {
                enable = false
            }
        }
    }
  • Rabbit 2 (New Optimization DSL - Partial Scoped Optimization):
    buildTypes {
        release {
            optimization {
                enable = true
                packageScope = setOf("androidx.**", "kotlin.**", "kotlinx.**")
            }
        }
    }

Keep Rules File Location

  • Panda 2 & Panda 3: Uses app/proguard-rules.pro.
  • Quail 1, Quail 4, Rabbit 2: app/proguard-rules.pro is removed. Keep rules are moved to app/src/main/keepRules/rules.keep.

    AGP automatically combines all rule files in src/main/keepRules and passes them to R8.


3. Version Catalog (gradle/libs.versions.toml)

Activity Dependency

  • Panda 2 & 3:
    [versions]
    activity = "1.13.0" # (1.8.0 in Panda 3)
    [libraries]
    activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
  • Quail 1, Quail 4, Rabbit 2: Switches to Kotlin Extensions artifact (activity-ktx):
    [versions]
    activityKtx = "1.8.0" # (bumped to 1.13.0 in Quail 4 & Rabbit 2)
    [libraries]
    activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "activityKtx" }

Library Version Trends

  • Panda 2 & Quail 4 reference newer versions:
    • appcompat: 1.8.0
    • material: 1.14.0
    • constraintlayout: 2.2.2
    • androidx.test.ext:junit: 1.3.0
    • androidx.test.espresso:espresso-core: 3.7.0
  • Panda 3, Quail 1, Rabbit 2 reference conservative/long-term stable versions:
    • appcompat: 1.6.1
    • material: 1.10.0
    • constraintlayout: 2.1.4
    • androidx.test.ext:junit: 1.1.5
    • androidx.test.espresso:espresso-core: 3.5.1

4. Manifest Updates (app/src/main/AndroidManifest.xml)

Starting in Quail 1 (and continued in Quail 4 and Rabbit 2), android:windowSoftInputMode="adjustResize" is added to MainActivity:

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:windowSoftInputMode="adjustResize">

This ensures that the layout resizes when the IME (software keyboard) appears in an Edge-to-Edge environment.


5. Edge-to-Edge Implementation (MainActivity.java)

  • Panda 2, Panda 3, Quail 1, Quail 4:
    import androidx.activity.EdgeToEdge;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ...
    }
  • Rabbit 2 (Canary): Migrated to WindowCompat.enableEdgeToEdge:
    import androidx.core.view.WindowCompat;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WindowCompat.enableEdgeToEdge(getWindow());
        setContentView(R.layout.activity_main);
        ...
    }

📂 Repository Layout

android-studio-empty-views-activity-templates/
├── README.md                          # Comparison report (English)
├── README.ja.md                       # 比較レポート (Japanese)
├── Panda2JavaEmptyViewsActivity/      # Android Studio Panda 2 (2025.3.2)
├── Panda3JavaEmptyViewsActivity/      # Android Studio Panda 3 (2025.3.3 P1)
├── Quail1JavaEmptyViewsActivity/      # Android Studio Quail 1 (2026.1.1 P2)
├── Quail4JavaEmptyViewsActivity/      # Android Studio Quail 4 (2026.1.4 P1)
└── Rabbit2JavaEmptyViewsActivity/      # Android Studio Rabbit 2 (2026.2.2 C2)

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages