برنامه فوری خود را برای پشتیبانی از Android App Bundles منتقل کنید

اگر همچنان از افزونه قدیمی Feature Android Gradle ( com.android.feature ) برای ماژول های برنامه فوری Android خود استفاده می کنید، باید به پلاگین برنامه پایه ( com.android.application ) و افزونه Dynamic Feature ( com.android.dynamic-feature ).

در افزونه Android Gradle نسخه 3.3.0 و بالاتر، پلاگین برنامه پایه شامل پشتیبانی از تجربیات فوری است. به این معنا که اگر ماژول برنامه پایه شرایط لازم برای یک تجربه فوری را برآورده کند، به طور خودکار از این مزیت برخوردار می شوید. سپس می‌توانید ویژگی‌های دیگری را اضافه کنید که کاربران می‌توانند در صورت تقاضا به عنوان تجربه‌های فوری با استفاده از افزونه Dynamic Feature دانلود کنند. این راه‌اندازی پشتیبانی از تجربه برنامه‌های نصب‌شده و فوری از یک پروژه را آسان‌تر می‌کند و به شما امکان می‌دهد از انتشار با Android App Bundles بهره مند شوید.

جدول زیر بهتر توضیح می دهد که به کدام افزونه ها مهاجرت خواهید کرد:

توضیحات ماژول پلاگین قدیمی افزونه فعلی
ماژولی که شامل کد اصلی، منابع، و عملکرد برای تجربه برنامه فوری یا نصب شده شما است. com.android.feature (با baseFeature = true ) com.android.application

توجه: این ماژول شامل تمام اطلاعات مانیفست و امضای مورد نیاز برای ساخت و بسته‌بندی برنامه شما به‌عنوان یک Android App Bundle یا APK است.

ویژگی های ماژولار اضافی که کاربران می توانند در صورت تقاضا دانلود کنند com.android.feature com.android.dynamic-feature (با dist:instant="true" و dist:onDemand="false" در مانیفست ماژول)
کد و منبع برای یک ویژگی که فقط برای نسخه نصب شده برنامه شما در دسترس است. com.android.application com.android.dynamic-feature (با dist:instant="false" و dist:onDemand="false" در مانیفست ماژول)

این صفحه به شما نشان می‌دهد که چگونه می‌توانید پروژه برنامه فوری موجود خود را برای ایجاد یک بسته نرم افزاری Android با قابلیت آنی فعال کنید. همچنین نحوه ساخت، آزمایش و انتشار یک بسته نرم افزاری Android با قابلیت فعال فوری را توضیح می دهد.

اگر در حال ایجاد تجربه‌های فوری جدید برای برنامه خود هستید، به جای آن ، ایجاد یک ماژول ویژگی فعال فوری را بخوانید.

تغییرات را درک کنید

هنگامی که پروژه خود را به جای استفاده از افزونه Dynamic Feature منتقل می‌کنید، Android App Bundles روش جدیدی برای ساخت و انتشار برنامه شما ارائه می‌کند که توزیع APK بهینه‌سازی شده را به‌طور قابل ملاحظه‌ای ساده‌تر می‌کند.

بسته‌های برنامه با بسته‌بندی همه کدها و منابع کامپایل‌شده برنامه شما برای آپلود، توزیع را ساده می‌کند، اما تولید APK و امضای آن را به Google Play به تعویق می‌اندازد. سپس مدل سرویس‌دهی برنامه جدید Google Play از بسته نرم افزاری شما برای تولید و ارائه فایل‌های APK بهینه‌سازی شده برای پیکربندی دستگاه هر کاربر استفاده می‌کند، بنابراین آنها فقط کد و منابعی را که برای اجرای برنامه شما نیاز دارند دانلود می‌کنند. دیگر نیازی به ساخت، امضا و مدیریت چندین APK برای پشتیبانی از دستگاه‌های مختلف ندارید و کاربران بارگیری‌های کوچک‌تر و بهینه‌تری دریافت می‌کنند.

هنگام استفاده از افزونه ویژگی که اکنون منسوخ شده است، ساختن یک برنامه فوری نیاز به ایجاد یک ماژول ویژگی پایه داشت که حاوی کد و منابع مشترک برای همه ماژول‌های شما، از جمله ماژول برنامه فوری شما بود. بقیه کد شما در چندین ماژول ویژگی غیر پایه گنجانده شده بود که حاوی نقاط ورودی برای تجربیات فوری شما بود. برای نسخه نصب شده برنامه شما، پروژه شما ممکن است شامل یک ماژول برنامه جداگانه باشد که حاوی کد و فعالیت های مورد نیاز فقط برای برنامه نصب شده شما است.

هنگامی که برنامه خود را برای پشتیبانی از Android App Bundles منتقل می کنید، ماژول برنامه شما نقش ماژول پایه را بازی می کند و تجربیات نصب شده یا فوری اضافی را به عنوان ماژول های ویژگی سازماندهی می کنید. به این معنی که پروژه شما اکنون بیشتر شبیه یک پروژه برنامه استاندارد است، با یک ماژول پایه فعال فوری و توانایی گنجاندن تجربیات فوری ماژولار اضافی.

برای انتقال پروژه برنامه فوری موجود خود و اتخاذ مدل توزیع بهینه تر Android App Bundle، مراحل توضیح داده شده در بخش های زیر را دنبال کنید.

ماژول ویژگی پایه را به ماژول برنامه تبدیل کنید

ابتدا باید فایل build.gradle ماژول ویژگی پایه را قبل از تبدیل آن به ماژول اصلی برنامه ویرایش کنید، به شرح زیر:

  1. خط baseFeature true حذف کنید.
  2. هر گونه وابستگی که از feature یا تنظیمات وابستگی application استفاده می کند را حذف کنید.

    شیار

    dependencies {
        ...
        // delete any lines that look like
        // feature project(":foo")
        // feature project(":bar")
        // application project(":app")
    }
    

    کاتلین

    dependencies {
        ...
        // delete any lines that look like
        // feature(project(":foo"))
        // feature(project(":bar"))
        // application(project(":app"))
    }
    
  3. applicationId به همراه هر پیکربندی اسکریپت ساخت دیگری که انتظار دارید در ماژول برنامه پایه شما باشد، از ماژول com.android.application فعلی به ماژول com.android.feature منتقل کنید. چند نمونه در زیر نشان داده شده است. برای این مرحله، بسته به تنظیمات build.gradle خاص شما، ممکن است کپی و جای‌گذاری بلوک android build.gradle از ماژول برنامه قبلی در فایل build.gradle ماژول برنامه جدید آسان‌تر باشد. با این حال، هنگام انجام این کار باید احتیاط کنید.

    شیار

    android {
        ...
        defaultConfig {
            // You need to move the application ID from the app module
            // to your feature module.
            applicationId "com.example.myapp"
            ...
        }
        // Some additional build configurations you might want to
        // copy from your current ‘app’ module may include ProGuard
        // rules and code shrinking settings.
        buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile(
                  'proguard-android-optimize.txt'),
                  'proguard-rules.pro'
            }
        }
    }
    

    کاتلین

    android {
        ...
        defaultConfig {
            // You need to move the application ID from the app module
            // to your feature module.
            applicationId = "com.example.myapp"
            ...
        }
        // Some additional build configurations you might want to
        // copy from your current ‘app’ module may include ProGuard
        // rules and code shrinking settings.
        buildTypes {
            getByName("release") {
                minifyEnabled = true
                proguardFiles(
                    getDefaultProguardFile("proguard-android-optimize.txt"),
                    "proguard-rules.pro"
                )
            }
        }
    }
    
  4. همانطور که در زیر نشان داده شده است، با افزودن برچسب های توزیع بسته مناسب به مانیفست، ماژول ویژگی را به عنوان فعال فوری علامت گذاری کنید.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  5. با تغییر نوع افزونه آن به com.android.application ، ماژول ویژگی را به ماژول برنامه پایه خود تبدیل کنید:

    شیار

    // Replace  "plugins { id 'com.android.feature' }"
    // with the following
    plugins {
      id 'com.android.application'
    }
    

    کاتلین

    // Replace  "plugins { id("com.android.feature") }"
    // with the following
    plugins {
        id("com.android.application")
    }
    

ماژول برنامه قدیمی را به ماژول ویژگی زمان نصب تبدیل کنید

اگر هیچ کد یا منبعی در ماژول برنامه قدیمی ندارید، می توانید به سادگی آن را حذف کنید—زیرا مراحلی که در بخش قبل دنبال کردید ماژول ویژگی شما را به ماژول برنامه پایه برنامه تبدیل کرد.

با این حال، اگر کد و منابعی در ماژول برنامه قدیمی دارید که نشان دهنده عملکردی است که می‌خواهید هنگام نصب برنامه شما در دسترس کاربران باشد، مراحل این بخش را برای تبدیل ماژول برنامه به یک ماژول ویژگی دنبال کنید.

ایجاد یک ماژول ویژگی شامل تغییر نوع افزونه از com.android.application به com.android.dynamic-feature ، همراه با چند تغییر دیگر build.gradle ، به شرح زیر است:

  1. نوع افزونه را از com.android.application به com.android.dynamic-feature تغییر دهید.

    شیار

    // Replace "plugins { id 'com.android.feature' }"
    // with the following:
    plugins {
      id 'com.android.dynamic-feature'
    }
    

    کاتلین

    // Replace "plugins { id("com.android.application") }"
    // with the following:
    plugins {
        id("com.android.dynamic-feature")
    }
    
  2. همانطور که در بخش قبل توضیح داده شد، مطمئن شوید که پیکربندی های ساخت مورد نیاز افزونه com.android.application را به ماژول برنامه پایه، مانند قوانین applicationId یا proguardFiles منتقل کرده اید.

  3. نام ماژول را به چیزی مانند "installed_feature" به صورت زیر تغییر دهید:

    1. با انتخاب View > Tool Windows > Project از نوار منو، پنجره Project را باز کنید.
    2. روی ماژول ویژگی کلیک راست کرده و Refactor > Rename را انتخاب کنید.
    3. در گفتگوی ظاهر شده، Rename module را انتخاب کرده و OK را کلیک کنید.
    4. نام جدید ماژول را وارد کنید و روی OK کلیک کنید.
  4. مشابه مرحله 3، ماژول برنامه جدیدی را که در بخش قبلی ایجاد کرده اید به چیزی مانند "برنامه" تغییر نام دهید.

  5. همانطور که در زیر نشان داده شده است، در فایل build.gradle ماژول ویژگی، یک وابستگی پیاده سازی به ماژول "app" اضافه کنید.

    شیار

    dependencies {
        ...
        // In the feature module, add an implementation dependency
        // on the base app module.
        implementation project(":app")
    }
    

    کاتلین

    dependencies {
        ...
        // In the feature module, add an implementation dependency
        // on the base app module.
        implementation(project(":app"))
    }
    
  6. این ویژگی را به فایل build.gradle ماژول برنامه جدید اضافه کنید.

    شیار

    android {
        ...
        // In the base app module, specify each feature module.
        dynamicFeatures = [":installed_feature"]
    }
    

    کاتلین

    android {
        ...
        // In the base app module, specify each feature module.
        dynamicFeatures.addAll(listOf(":installed_feature"))
    }
    
  7. در مانیفست ماژول ویژگی، ماژول ویژگی را به عنوان یک ماژول قابل نصب با افزودن برچسب های توزیع بسته مناسب به مانیفست علامت گذاری کنید.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="false" dist:onDemand="false"
                dist:title="@string/title_dynamic_feature">
            <dist:fusing dist:include="true" />
        </dist:module>
        ...
    </manifest>
    

ماژول های ویژگی دیگر را به ماژول های ویژگی با قابلیت فوری تبدیل کنید

اگر عملکردهای اضافی برنامه خود را به چندین ماژول ویژگی مدولار کرده اید، باید مراحل این بخش را دنبال کنید تا آن ماژول ها را به ماژول های ویژگی فعال فوری تبدیل کنید.

برای هر ماژول ویژگی باقیمانده در پروژه خود، به شرح زیر عمل کنید تا آنها را به ویژگی های فعال فوری تبدیل کنید:

  1. مانند شکل زیر، نوع افزونه را در فایل build.gradle به com.android.dynamic-feature تغییر دهید:

    شیار

    // Replace 'com.android.feature' with 'com.android.dynamic-feature'
    plugins {
      id 'com.android.dynamic-feature'
    }
    

    کاتلین

    // Replace "com.android.feature" with "com.android.dynamic-feature"
    plugins {
        id("com.android.dynamic-feature")
    }
    
  2. با افزودن موارد زیر به مانیفست، هر ماژول ویژگی را به‌عنوان فعال‌سازی فوری علامت‌گذاری کنید.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" dist:onDemand="false"
                dist:title="@string/title_dynamic_feature">
            <dist:fusing dist:include="true" />
        </dist:module>
        ...
    </manifest>
    
  3. ماژول ویژگی را به فایل build.gradle ماژول برنامه جدید اضافه کنید، جایی که installed_feature به لیست ماژول های ویژگی اضافه کردید.

    شیار

    android {
       ...
       dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"]
       // or whichever name exists for the instant enabled feature module
    }
    

    کاتلین

    android {
       ...
       dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2"))
       // or whichever name exists for the instant enabled feature module
    }
    

بسته نرم افزاری جدید با قابلیت فوری را بسازید، آزمایش کنید و منتشر کنید

پس از تکمیل مراحل در این صفحه، پروژه شما می‌تواند یک آرتیفکت، یک Android App Bundle تولید کند، که می‌توانید از آن برای انتشار هر دو نسخه نصب شده و فوری برنامه خود در کنسول Google Play استفاده کنید و به طور جداگانه برای آهنگ های فوری و نصب شده علاوه بر این، با بسته‌های برنامه، از مزیت ارائه فایل‌های APK بهینه‌شده برای پیکربندی دستگاه هر کاربر برخوردار می‌شوید، بنابراین آنها فقط کد و منابعی را که برای اجرای برنامه شما نیاز دارند دانلود می‌کنند. یعنی دیگر نیازی به ساخت، امضا و مدیریت چندین APK برای پشتیبانی از دستگاه‌های مختلف ندارید و کاربران بارگیری‌های کوچک‌تر و بهینه‌تری دریافت می‌کنند.

برای شروع ساختن و آزمایش بسته برنامه با قابلیت فوری خود، به Build the app bundle بروید.