Android Academy · Pelajaran

Menyediakan Binaan Keluaran

Himpunan aplikasi dan pengecilan.

Pelajaran 1 daripada 413 langkah

Menyediakan Binaan Keluaran ialah pelajaran Android Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Android Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Android Academy merangkumi sejumlah 4 pelajaran.

Daripada Penyahpepijatan kepada Keluaran

Setiap hari anda menjalankan binaan penyahpepijatan daripada Android Studio. Tetapi Google Play memerlukan binaan keluaran: lebih kecil, lebih pantas dan tidak ditandakan sebagai boleh dinyahpepijat.

Binaan keluaran berbeza dalam tiga cara utama: ia ditandatangani dengan kunci keluaran anda, mempunyai debuggable false, dan biasanya dikecilkan untuk membuang kod serta sumber yang tidak digunakan.

Dalam pelajaran ini, anda akan menyediakan binaan keluaran yang betul dan menghasilkan fail yang diperlukan oleh Google Play: Android App Bundle (.aab).

Jenis Binaan dalam Gradle

Gradle mentakrifkan dua jenis binaan secara lalai: debug dan release. Anda mengkonfigurasikannya dalam build.gradle.kts modul anda.

Blok release ialah tempat anda menghidupkan pengoptimuman. Perhatikan isMinifyEnabled dan isShrinkResources di bawah — inilah suis yang menjadikan aplikasi anda lebih kecil.

android {
    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

AAB berbanding APK

Google Play memerlukan Android App Bundle (.aab), bukannya .apk biasa.

  • .apk mengandungi kod dan sumber untuk setiap peranti — semua kepadatan skrin, semua seni bina CPU dan semua bahasa.
  • .aab dimuat naik ke Play, kemudian Play menjana APK yang kecil dan dioptimumkan untuk peranti tepat setiap pengguna.

Hasilnya: pengguna memuat turun kurang data dan aplikasi anda dipasang dalam saiz yang lebih kecil. Anda masih menggunakan APK untuk ujian terus pada telefon, tetapi menerbitkan AAB.

Apakah R8 / Pengecilan?

Apabila isMinifyEnabled = true, Android Studio menjalankan R8. R8 melakukan tiga tugas dalam satu laluan:

  • Pengecilan — membuang kelas dan kaedah yang tidak pernah dipanggil oleh aplikasi anda.
  • Pengkaburan — menamakan semula kelas dan kaedah kepada nama pendek seperti a, b, c untuk menjimatkan ruang dan menghalang kejuruteraan balikan.
  • Pengoptimuman — memasukkan dan menulis semula kod supaya berjalan dengan lebih pantas.

Pengecilan sumber (isShrinkResources = true) turut membuang drawable, reka letak dan rentetan yang tidak digunakan.

Peraturan Pengekalan dengan ProGuard

R8 kadangkala membuang atau menamakan semula kod yang hanya dirujuk melalui pantulan (contohnya oleh Gson, Retrofit atau pemiawaian). Anda melindungi kod tersebut dengan peraturan pengekalan dalam proguard-rules.pro.

Peraturan pengekalan memberitahu R8: "jangan namakan semula atau padam kelas ini."

# proguard-rules.pro

# Keep data classes used with Gson reflection
-keep class com.example.app.model.** { *; }

# Keep Retrofit interface methods
-keepattributes Signature
-keepattributes *Annotation*

# Keep Kotlin metadata used by libraries
-keep class kotlin.Metadata { *; }

Menentukan Versi Aplikasi Anda

Setiap keluaran memerlukan dua nilai versi dalam build.gradle.kts:

  • versionCode — integer yang mesti ditambah pada setiap muat naik. Play menggunakannya untuk mengetahui binaan yang lebih baharu.
  • versionName — rentetan yang mudah dibaca manusia seperti "1.4.0" dan dipaparkan kepada pengguna.

Jika anda terlupa menaikkan versionCode, Play akan menolak muat naik tersebut sebagai pendua.

android {
    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 24
        targetSdk = 35
        versionCode = 12
        versionName = "1.4.0"
    }
}

Membina Bundle dalam Android Studio

Untuk mencipta bundle keluaran yang ditandatangani daripada antara muka pengguna:

  • Buka Build → Generate Signed Bundle / APK.
  • Pilih Android App Bundle.
  • Pilih (atau cipta) keystore dan kunci anda.
  • Pilih varian binaan release.

Android Studio menjalankan R8, menandatangani bundle tersebut dan meletakkan .aab dalam app/release/. Fail tunggal itulah yang anda muat naik ke Play.

Membina dari Baris Perintah

Untuk CI/CD atau skrip, bina bundle dengan Gradle secara terus. Nama tugasan mengikut corak bundle<Variant>.

bundleRelease menghasilkan AAB. Fail tersebut diletakkan dalam app/build/outputs/bundle/release/.

# Build a release App Bundle (.aab)
./gradlew bundleRelease

# Output:
# app/build/outputs/bundle/release/app-release.aab

# Build a release APK instead (for direct install/testing)
./gradlew assembleRelease

Memeriksa dan Menguji AAB

Anda tidak boleh memasang .aab pada telefon secara terus. Untuk menguji APK tepat yang akan dijana oleh Play, gunakan bundletool Google.

Alat ini membina APK khusus peranti daripada bundle anda dan memasangnya pada peranti yang disambungkan — paling hampir dengan muat turun Play sebenar.

# Generate APKs from the bundle for the connected device
java -jar bundletool.jar build-apks \
  --bundle=app-release.aab \
  --output=app.apks \
  --connected-device

# Install them on the device
java -jar bundletool.jar install-apks --apks=app.apks

Mengalih Keluar Kod Nyahpepijat daripada Keluaran

Binaan keluaran tidak sepatutnya mencatat data sensitif atau membiarkan ciri yang hanya untuk nyahpepijat aktif. Gunakan BuildConfig.DEBUG untuk membezakan tingkah laku. Nilainya hanya true dalam binaan nyahpepijat.

R8 juga boleh menghapuskan blok yang dilindungi oleh pemalar false, jadi langkah ini turut mengurangkan saiz.

fun setupLogging() {
    if (BuildConfig.DEBUG) {
        // Verbose logging only in debug builds
        Log.d("App", "Debug logging enabled")
        Timber.plant(Timber.DebugTree())
    } else {
        // Release: send to crash reporting only, no console spam
        Timber.plant(CrashReportingTree())
    }
}

Senarai Semak Sedia untuk Keluaran

Sebelum anda membina bundle akhir, sahkan bahawa:

  • versionCode telah dinaikkan dan versionName telah dikemas kini.
  • isMinifyEnabled dan isShrinkResources diaktifkan untuk keluaran.
  • Peraturan pengekalan telah ditambah untuk mana-mana pustaka berasaskan pantulan.
  • targetSdk memenuhi keperluan semasa Play.
  • Tiada pencatatan atau titik akhir ujian yang hanya untuk nyahpepijat dalam kod keluaran.
  • Anda telah menguji AAB melalui bundletool pada peranti sebenar.

Setelah semua ini lulus, .aab anda sedia untuk dimuat naik.

Semakan Pantas

Anda menetapkan isMinifyEnabled = true dan aplikasi anda ranap dalam keluaran dengan ralat "class not found" daripada penghurai JSON anda, tetapi berfungsi dengan baik dalam nyahpepijat. Apakah punca yang paling mungkin?

Imbas Kembali: Menyediakan Binaan Keluaran

Kini anda tahu cara menukar aplikasi nyahpepijat menjadi binaan yang boleh diterbitkan:

  • Play memerlukan .aab yang ditandatangani, dan Play menjana APK mengikut peranti daripadanya.
  • Jenis binaan release mengaktifkan R8 melalui isMinifyEnabled dan isShrinkResources untuk mengecilkan, mengelirukan dan mengoptimumkan kod.
  • Peraturan pengekalan melindungi kod berasaskan pantulan daripada dibuang.
  • Sentiasa naikkan versionCode dan kemas kini versionName.
  • Bina dengan ./gradlew bundleRelease dan uji hasilnya dengan bundletool.

Seterusnya: cara penandatanganan yang menjadikan binaan ini boleh dipercayai sebenarnya berfungsi.

Percuma untuk bermula

Pelajari Kotlin dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
36
Pelajaran
152

Soalan Lazim

Adakah pelajaran “Menyediakan Binaan Keluaran” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Android Academy, termasuk “Menyediakan Binaan Keluaran”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Android Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Menyediakan Binaan Keluaran”?

Himpunan aplikasi dan pengecilan. Anda berlatih Android Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Android Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Android Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Menyediakan Binaan Keluaran” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Android Academy ini?

Ya. Setiap pelajaran Android Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menyediakan Binaan Keluaran
  2. Menandatangani Aplikasi
  3. Play Console dan Penyenaraian
  4. Pelancaran Berperingkat dan Kemas Kini
← Kembali ke Android Academy