مقدمه
برای نوشتن برنامهای در اندروید ممکن است به مشکلی برخورد کنیم که بخواهیم بر اساس مقادیری قابل تغییر مشخص خروجیهای مختلفی داشته باشیم، به عنوان مثال زمانی که بخواهیم پرداخت درونبرنامهای را برای مارکتهای مختلف (گوگل پلی، مایکت و …) منتشر نماییم، با استفاده از ابزار gradle برای اندروید این عملیات به راحتی امکانپذیر است و دیگر نیازی به نگه داشتن چند سورس برای هر برنامه نیست.
در این مستند پرداخت درونبرنامهای را برای دو مارکت گوگلپلی و مایکت توضیح میدهیم تا با روش انجام این نوع عملیات آشنا شوید.
مراحل
فایل gradle.build
در ابتدا باید فایل build.gradle را تغییر دهیم:
- اضافه کردن یک متغیر به صورت زیر:
def marketApplicationId
- اضافه کردن flavorهای مختلف به المنت android
android {productFlavors {googlePlay {} myket {}}}
در هر flavor نیازمند مشخص کردن مقدار هستیم:
- متغیری برای استفاده در کدهای برنامه
- متغیری برای استفاده در فایل manifest برنامه
- مشخص کردن مقدار متغیر تعریف شده
googlePlay { marketApplicationId = "com.android.vending" buildConfigField "String", "MARKET_APPLICATION_ID", "\"${marketApplicationId}\"" storePermission = "com.android.vending.BILLING" } myket { marketApplicationId = "ir.mservices.market" buildConfigField "String", "MARKET_APPLICATION_ID", "\"${marketApplicationId}\"" storePermission = "ir.mservices.market.BILLING" }
فایل manifest برنامه
<uses-permission android:name="${storePermission}" />
فایل IabHelper.java
Intent serviceIntent = new Intent(BuildConfig.MARKET_APPLICATION_ID + ".InAppBillingService.BIND"); serviceIntent.setPackage(BuildConfig.MARKET_APPLICATION_ID);
انتشار برنامه با flavor
برای مشخص کردن اینکه کدام یک از چاشنیها را برای اجرا انتخاب نماییم در قسمت BuildVariants در Android Studio میتوان flavorهای مختلف را انتخاب کرد و به صورت خودکار تمامی متغیرها به flavor مورد نظر تغییر خواهند کرد.