Bagaimana saya bisa mendeteksi dalam kode saya bahwa saya dalam mode Rilis atau mode Debug?
sumber
Bagaimana saya bisa mendeteksi dalam kode saya bahwa saya dalam mode Rilis atau mode Debug?
Solusi jangka panjang yang paling sederhana dan terbaik adalah menggunakan BuildConfig.DEBUG
. Ini adalah boolean
nilai yang akan true
untuk membangun debug, false
jika tidak:
if (BuildConfig.DEBUG) {
// do something for a debug build
}
Ada laporan bahwa nilai ini tidak dapat diandalkan 100% dari build berbasis Eclipse, meskipun saya secara pribadi belum mengalami masalah, jadi saya tidak bisa mengatakan berapa banyak masalah sebenarnya.
Jika Anda menggunakan Android Studio, atau jika Anda menggunakan Gradle dari baris perintah, Anda dapat menambahkan barang-barang Anda sendiri BuildConfig
atau men-tweak debug
dan release
membangun tipe untuk membantu membedakan situasi ini saat runtime.
Solusi dari Argumen Ilegal didasarkan pada nilai android:debuggable
bendera dalam manifes. Jika Anda ingin membedakan build "debug" dari build "release", maka menurut definisi, itulah solusi terbaik. Namun, ingatlah bahwa untuk maju, debuggable
bendera tersebut benar-benar sebuah konsep independen dari apa yang dianggap Gradle / Android Studio sebagai build "debug". Setiap tipe build dapat memilih untuk mengatur debuggable
flag ke nilai apa pun yang masuk akal untuk developer itu dan untuk tipe build tersebut.
BuildConfig
terletak di paket aplikasi Anda, mis.import com.mycompany.myapp.BuildConfig;
public static final boolean DEBUG = Boolean.parseBoolean("true");
debug build. Sementara itu adalah cara aneh untuk setDEBUG
ketrue
, itu harus bekerja. Jika Anda melihat ini di salah satu rilis uji 1.3.0, atau jika Anda memiliki case uji yang dapat direproduksi untuk 1.2.2, silakan ajukan masalah . Saya tidak melihat masalah luar biasa yang melaporkan masalah ini.Coba yang berikut ini:
Kotlin:
Ini diambil dari pos bundel dari sini
sumber
getApplicationInfo().flags
bekerja?Ya, Anda tidak akan mengalami masalah dalam menggunakan:
Kecuali Anda mengimpor kelas BuildConfig yang salah. Pastikan Anda mereferensikan kelas BuildConfig proyek Anda, bukan dari pustaka dependensi Anda.
sumber
Karena komentar campuran tentang
BuildConfig.DEBUG
, saya menggunakan berikut ini untuk menonaktifkan crashlytics (dan analitik) dalam mode debug:perbarui / app/build.gradle
kemudian, dalam kode Anda, Anda mendeteksi
ENABLE_CRASHLYTICS
bendera sebagai berikut:gunakan konsep yang sama di aplikasi Anda dan ganti nama
ENABLE_CRASHLYTICS
menjadi apa pun yang Anda inginkan. Saya suka pendekatan ini karena saya bisa melihat flag di konfigurasi dan saya bisa mengendalikan flag.sumber
Atau, Anda dapat membedakan menggunakan BuildConfig.BUILD_TYPE;
Jika Anda menjalankan debug build
BuildConfig.BUILD_TYPE.equals("debug");
menghasilkan true. Dan untuk rilis buildBuildConfig.BUILD_TYPE.equals("release");
mengembalikan true.sumber
true
.Saya menggunakan solusi ini untuk mengetahui bahwa aplikasi saya berjalan pada versi debug.
sumber
if (BuildConfig.DEBUG) {}
dalam modul gradle dependen yang (tentu saja) TIDAK ADA REFERENSI ke file build.gradle aplikasi - ini menyebabkan mode debug dikenali dengan cara yang salah.if (BuildConfig.BUILD_TYPE.equals("Debug")){ }
Memperbaiki masalah. Terima kasihPastikan Anda mengimpor kelas BuildConfig yang benar Dan ya, Anda tidak akan mengalami masalah dalam menggunakan:
sumber