ایجاد انواع Build Variant در اندروید
هنگام توسعه یک برنامه اندروید، ما به طور کلی به انواع مختلفی از APK ها نیاز داریم یا می توانید نسخه های مختلف APK را در مرحله توسعه و release بگویید. به عنوان مثال، ممکن است به یک debug APK بدون داشتن proguard یا یک debug APK با proguard نیاز داشته باشید یا ممکن است به یک APK برای کاربران رایگان(free users) و یک APK برای کاربران پرداختی(paid users) خود نیاز داشته باشید
Build Variant در اندروید
ممکن است به یک APK برای اندروید نسخه 6 و بالاتر و یک APK برای اندروید نسخه زیر 6 نیاز داشته باشید و بسیاری از امکانات دیگر که ممکن است وجود داشته باشد . اما سوال این است که چگونه میخواهید این تعداد نسخه از برنامه خود را ایجاد کنید. آیا قرار است پروژه های مختلفی برای این نسخه ها داشته باشید یا فقط یک پروژه کافی است؟ زیرا قرار است کد تقریباً ثابت بماند و فقط برخی از APIها یا برخی از تنظیمات build تغییر کنند؟ بنابراین، چگونه می توان به این امر دست یافت؟ این کار را می توان با استفاده از Build Variant یعنی موضوع این مقاله به دست آورد.
تعریف Build Variant
در این مقاله قصد داریم Build Variant را تعریف کنیم و چگونه انواع مختلف ساخت در اندروید ایجاد کنیم. بنابراین، بیایید شروع کنیم.
Build Types و Build Variants
در حین ساختن هر برنامه اندرویدی، build type های مختلفی مانند “debug” و “release” را ایجاد می کنیم. در عین حال، ما می توانیم انواع های مختلف محصول را برای همان برنامه ایجاد کنیم، به عنوان مثال، نوع رایگان محصول برای کاربران رایگان و نوع پرداختی محصول برای کاربران پرداختی. بنابراین، اندروید استودیو ویژگی Build Variants را ارائه میکند که میتوان آن را یک محصول دکارتی از همه build type و همه انواع محصول شما در نظر گرفت.
build type
تنها کاری که باید انجام دهید این است که build type های مختلف را در فایل build.gradle در سطح ماژول خود اضافه کنید و در طول توسعه یا تولید، به سادگی می توانید Build Variant را که می خواهید test یا release (منتشر)کنید، انتخاب کنید.
توجه: بهطور پیشفرض، Android Studio ، Build Type های «debug» و «release» را برای پروژه شما ایجاد میکند.
گزینه Build Variant را می توانید در قسمت سمت چپ صفحه (بیشتر زیر Resource Manager) در Android Studio پیدا کنید یا به Build > Select Build Variant بروید یا به سادگی می توانید ctrl + shift + A را فشار دهید و “Build Variant” را جستجو کنید:
بنابراین، برای تغییر Build Type ، تنها کاری که باید انجام دهید این است که Build Type خود را از Build Variant انتخاب کنید و پس از همگام سازی(sync) پروژه، می توانید شروع به کار کنید. اما چگونه یک Build Type ایجاد کنیم؟
اضافه کردن Build Type
در این قسمت قصد داریم نحوه افزودن build types در اندروید را بیاموزیم.
بهطور پیشفرض، هر زمان که پروژهای را ایجاد میکنید، Android Studio دو build type برای پروژه ایجاد میکند، یعنی «debug» و «release». اما برای افزودن build type های بیشتر، باید آنها را به فایل build.gradle سطح ماژول خود و زیر بلوک buildTypes اضافه کنید. مثال زیر نمونه ای از همین موارد است:
android {
defaultConfig {
applicationId "com.mindorks"
versionCode 3
versionName "0.0.3"
...
}
buildTypes {
debug {
versionNameSuffix ".dev"
debuggable true
...
}
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
...
}
minifiedDebug {
versionNameSuffix ".dev"
debuggable true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
...
}
}
...
}
در کد بالا، سه build type وجود دارد که عبارتند از debug، release و minifiedDebug. debug و release همان است که توسط Android Studio با برخی property های اضافی تولید شده است و minifiedDebug ، build type جدیدی است که ترکیبی از debug + proguard است.
اگر به دقت به کد نگاه کنید، متوجه خواهید شد که در بلوک defaultConfig، version name برابر “0.0.3” است و در build type، debug و minifedDebug، پسوند “.dev” را به version name اضافه می کنیم. این dev APK (توسعه دهنده) را از prod APK (تولید) متمایز می کند.
به طور مشابه، می توانید build type با نام noMinifedRelease را ایجاد کنید که ترکیبی از release + بدون proguard خواهد بود.
موارد خاصی وجود دارد که می خواهید از property های مشابه برخی از build type قبلی خود استفاده کنید و برخی از ویژگی ها را برای ایجاد یک build type جدید اضافه یا تغییر دهید. بنابراین، برای انجام این کار می توانید از initWith استفاده کنید:
newBuildType {
initWith debug
versionNameSuffix ".newbuild"
...
}
کد بالا کد یک build type جدید با نام newBuildType است. از آنجایی که ما از initWith debug استفاده می کنیم، بنابراین شامل تمام ویژگی های debug می شود و می توانید ویژگی های بیشتری به آن اضافه کنید یا می توانید برخی از ویژگی های debug را ویرایش کنید و موارد دیگر را همانطور که هست نگه دارید. در موقعیت ما، نسخهNameSuffix را ویرایش می کنیم و آن را با “.newbuild” به جای “.dev” که در debug وجود دارد تنظیم می کنیم.
توجه: اگر از Kotlin DSL در فایل build.gradle خود استفاده می کنید، برای افزودن build type ، باید از متد create(“yourBuildTypeName”) در بلوک buildTypes استفاده کنید.
افزودن گونه های محصول(Product Flavor)
شما می توانید گونه های محصول را به عنوان build type های برنامه خود در نظر بگیرید. به عنوان مثال، اگر محتوای متفاوتی را برای کاربران مختلف ارائه میکنید اما از یک code base استفاده میکنید، میتوانید گونه های محصول را به برنامه خود اضافه کنید.
به عنوان مثال، می توانید گونه های محصول مانند “توسعه”( development) و “تولید”( production) را اضافه کنید، در داخل این گونه ها می توانید کلیدهای API مختلفی را برای روند کاری یکسان اضافه کنید. به عنوان مثال، می توانید API توسعه را در گونه توسعه(development flavor) و API تولید را در گونه تولید(production flavor) اضافه کنید.
برای افزودن گونه محصول باید بلوک productFlavors را در داخل بلوک اندروید اضافه کنید و هر گونه محصول باید flavor dimension داشته باشد:
android {
...
defaultConfig {...}
buildTypes {
debug{...}
release{...}
}
flavorDimensions "version"
productFlavors {
development {
dimension "version"
versionNameSuffix ".dev"
}
production {
dimension "version"
versionNameSuffix ".prod"
}
}
}
بهترین بخش گونه محصول(product flavor) این است که آنها با build type ها مرتبط هستند. به عنوان مثال، اگر دو build type به نامهای «debug» و «release» و دو گونه محصول به نامهای « development» و « production» دارید، انواع ساخت شما به این صورت خواهد بود:
- developmentDebug
- developmentRelease
- productionDebug
- productionRelease
اکنون، می توانید هر یک از build type ها را که می خواهید برایbuild خود انتخاب کنید.
شما می توانید با جدا کردن هر dimension از سایر dimension ها با استفاده از کاما(,) به تعداد دلخواه dimension نوع محصول ایجاد کنید و با استفاده از”dimension “dimensionName از آن استفاده کنید. مثلا:
flavorDimension "dimensionOne", "dimensionTwo", "dimensionThree"
بنابراین، اینگونه است که می توانید گونه محصول را ایجاد کنید و از آن در برنامه خود برای ساخت ورژن های مختلف استفاده کنید.
دیدگاهتان را بنویسید