آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

آموزش 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"//توی کلاس بیلد کانفیگ میشه اینو دید
    }
}
موافقین ۰ مخالفین ۰ ۰۰/۰۴/۱۱
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی