آموزش buildTypes (Variant) در گریدل
جمعه, ۱۱ تیر ۱۴۰۰، ۱۰:۲۳ ق.ظ
به صورت پیش فرض دو نسخه از اپلیکیشن میتونه بیلد بشه، نسخه دیباگ و نسخه release. میتونیم نسخه های دیگه با ویژگی های کاستوم هم اضافه کنیم که این کار در بلوک buildTypes انجام میشه. حالا به چه دردی میخوره؟
میشه به هر variant یک سری buildConfigField اضافه کرد و مثلا URL یا apiKey رو توی نسخه های مختلف مدیریت کرد. مثلا:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
buildConfigField("String", "API_KEY","\"\"")
buildConfigField("String", "BASE_URL","\"https://api.500px.com/\"")
}
}
در کد بالا در نسخه دیباگ apiKey و URL مطابق مقادیر تعریف شده خواهد بود. چجوری ازش در کد استفاده کنیم؟
هر buildConfigField در کلاس BuildConfig (در دایرکتوری java-generated قرار داره) یک متغیر استاتیک میسازه و توی کد به این صورت فراخونی میشه:
BuildConfig.API_KEY
با توجه به اینکه کدوم variant انتخاب شده، مقادیر جایگزین می شوند.
در مثال زیر من یک customDebug تعریف کردم:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
customDebug.initWith(buildTypes.debug)//یعنی همه ویژگی های دیباگ رو به ارث بگیر
//اگر خط بالا رو نمینوشتم ارور میداد
customDebug{
applicationIdSuffix = ".customDebug"//توی کلاس بیلد کانفیگ میشه اینو دید
}
}
۰۰/۰۴/۱۱