فروشگاه داده

داده‌ها را به صورت غیرهمزمان، مداوم و تراکنشی ذخیره کنید و بر برخی از معایب SharedPreferences غلبه کنید.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۲۲ اکتبر ۲۰۲۵ ۱.۱.۷ - ۱.۲.۰-بتا۰۱ -

اعلام وابستگی‌ها

برای افزودن وابستگی به DataStore، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven گوگل را مطالعه کنید.

دو پیاده‌سازی برای DataStore وجود دارد: Preferences و Proto . یکی از آن‌ها را انتخاب کنید. همچنین می‌توانید وابستگی‌های بدون اندروید را به هر دو پیاده‌سازی اضافه کنید.

وابستگی‌های لازم برای پیاده‌سازی مورد نیاز را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

فروشگاه داده تنظیمات

گرووی

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation "androidx.datastore:datastore-preferences:1.1.7"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.7"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.1.7"
    }
    

کاتلین

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation("androidx.datastore:datastore-preferences:1.1.7")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.7")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.7")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.1.7")
    }
    

فروشگاه داده پروتو

گرووی

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation "androidx.datastore:datastore:1.1.7"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.1.7"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.1.7"
    }
    

کاتلین

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation("androidx.datastore:datastore:1.1.7")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.7")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.1.7")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.1.7")
    }
    

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه ۱.۲

نسخه ۱.۲.۰-بتا۰۱

۲۲ اکتبر ۲۰۲۵

androidx.datastore:datastore-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 شامل این کامیت‌ها است.

تغییرات API

  • CorruptionHandler عمومی کنید. ( I9ac35 ، b/452406457 )
  • از androidx.core.util.Function در GuavaDataStore استفاده کنید. ( I71eae ، b/448563999 )
  • یک overload برای GuavaDataStore.from اضافه کنید که به جای CoroutineContext ، یک Executor دریافت کند ( I989fa ، b/448563183 ).

رفع اشکالات

  • رفع خطای java.lang.UnsatisfiedLinkError هنگام استفاده از DataStore در برنامه‌ای که با R8 بهینه شده است، اما از getDefaultProguardFile('android-proguard-optimize.txt') استفاده نمی‌کند. ( I27d0d ، b/434696293 )
  • مشکلی که باعث می‌شد عملیات GuavaDataStore به جای توزیع‌کننده IO مشخص شده، به اشتباه روی نخ فراخوان (مثلاً نخ اصلی) اجرا شوند، برطرف شد. ( Ic91ea ، b/441801112 )

نسخه ۱.۲.۰-آلفا۰۲

۷ مه ۲۰۲۵

androidx.datastore:datastore-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این کامیت‌ها است.

تغییرات API

  • پشتیبانی از چندپردازشی در GuavaDataStore اضافه شد. ( e0d608a ).
  • یک متد کمکی برای ایجاد یک GuavaDataStore از یک DataStore اضافه شد. ( 9af26f4 )
  • پروژه‌هایی که با کاتلین ۲.۰ منتشر شده‌اند، برای استفاده به KGP ۲.۰.۰ یا جدیدتر نیاز دارند. ( IDb6b5 )
  • اضافه بار موجود datastore را با یک متد نماینده جایگزین کنید تا یک پایگاه داده (DataStore) برای استفاده در هنگام بوت مستقیم مقداردهی اولیه شود. ( If71b9 )

نسخه ۱.۲.۰-آلفا۰۱

۲۶ مارس ۲۰۲۵

androidx.datastore:datastore-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • ماژول datastore-guava اضافه شد تا APIهای سازگار با جاوا و کاربران Guava ListenableFuture از طریق GuavaDataStore در دسترس قرار گیرند. ( Iadd5e0 )
  • استفاده DataStore در حالت DirectBoot اکنون پشتیبانی می‌شود. برای ایجاد یک Datastore که در حالت بوت مستقیم استفاده شود، باید آن را در فضای ذخیره‌سازی Device Protected ایجاد کرد. این کار را می‌توان با APIهای DataStore جدید زیر انجام داد: createInDeviceProtectedStorage() در DataStoreFactory و deviceProtectedDataStore() در DataStoreDelegate . ( Ib90e56 )

تغییرات API

  • PreferencesFileSerializer اضافه شد که رابط androidx.datastore.core.Serializer را برای استفاده با FileStorage پیاده‌سازی می‌کند. ( I4c71f3 )

رفع اشکالات

  • مشکل FileNotFoundException در OkioStorage هنگام راه‌اندازی با اضافه کردن تلاش دوم برای خواندن داده‌ها در صورت وجود شرایط رقابتی (Race Condition) حل شد. ( I43b3fb , b/337870543 )
  • سازنده پیش‌فرض برای ReplaceFileCorruptionHandler برای استفاده از کد رایج تعریف شده است. ( I795b05 ، b/358138957 )

نسخه ۱.۱

نسخه ۱.۱.۷

۲۰ مه ۲۰۲۵

androidx.datastore:datastore-*:1.1.7 منتشر شد. نسخه ۱.۱.۷ شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل از دست رفتن قوانین Proguard در فایل اندروید مربوط به datastore-preferences-core ( 3f3f6e ، b/413078297 ) برطرف شد.

نسخه ۱.۱.۶

۷ مه ۲۰۲۵

androidx.datastore:datastore-*:1.1.6 منتشر شد. نسخه ۱.۱.۶ شامل این کامیت‌ها است.

رفع اشکالات

  • مشکلی که باعث می‌شد متادیتای Gradle در نسخه 1.1.5 دچار مشکل شود، برطرف شد. این مشکل ناشی از اشکالی در افزونه جدید AGP KMP به نام DSL بود که مانع از درج خودکار متادیتای همه پلتفرم‌های هدف می‌شد. این اشکال منجر به این می‌شود که برخی از متدهای DataStore Android دیگر در نسخه‌های کلاینت قابل مشاهده نباشند. این رفع اشکال شامل استفاده از DSL قدیمی‌تر android در build.gradle به جای androidLibrary است. ( 7801abf )

نسخه ۱.۱.۵

۲۳ آوریل ۲۰۲۵

androidx.datastore:datastore-*:1.1.5 منتشر شد. نسخه ۱.۱.۵ شامل این کامیت‌ها است.

رفع اشکالات

  • برای کاهش مشکلات CorruptionException در PreferencesDataStore ، فضای ذخیره‌سازی پیش‌فرض از OkioStorage به FileStorage تغییر یافته است. این تغییر با معرفی یک PreferencesFileSerializer پیاده‌سازی شده است. b/346197747

نسخه ۱.۱.۴

۲۶ مارس ۲۰۲۵

androidx.datastore:datastore-*:1.1.4 منتشر شد. نسخه ۱.۱.۴ شامل این کامیت‌ها است.

رفع اشکالات

  • برای بهبود قابلیت اطمینان با کاهش CorruptionException ، حافظه پیش‌فرض OkioStorage را به FileStorage تغییر دهید. ( I71181 , b/346197747 )

نسخه ۱.۱.۳

۲۶ فوریه ۲۰۲۵

androidx.datastore:datastore-*:1.1.3 منتشر شد. نسخه ۱.۱.۳ شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل FileNotFoundException در OkioStorage که هنگام راه‌اندازی برنامه با آن مواجه می‌شد، حل شد. اگر تلاش اولیه برای خواندن فایل ناموفق باشد، در صورتی که به دلیل ایجاد فایل توسط فرآیندی متفاوت در طول خواندن اولیه، شرایط رقابتی رخ داده باشد، تلاش دوم انجام خواهد شد. ( I43b3f , b/337870543 )

نسخه ۱.۱.۲

۱۵ ژانویه ۲۰۲۵

androidx.datastore:datastore-*:1.1.2 منتشر شد. نسخه ۱.۱.۲ شامل این کامیت‌ها است.

رفع اشکالات

  • تأخیر خواندن گرم ( DataStore.data.first() ) را 8 برابر بهبود بخشید. ( 22b8a40 )
  • ReplaceFileCorruptionHandler می‌توان از کد رایج KMP ایجاد کرد. ( 7632e839 )

نسخه ۱.۱.۱

۱ مه ۲۰۲۴

androidx.datastore:datastore-*:1.1.1 منتشر شد. نسخه ۱.۱.۱ شامل این کامیت‌ها است.

رفع اشکالات

  • هشدار اشتباه لینوکس در مورد خطای "وقفه منابع رخ می‌دهد" در یک مورد خاص که چندین نمونه DataStore با حذف قفل فایل، سعی در نوشتن از فرآیندهای مختلف دارند، کاهش یافت.

نسخه ۱.۱.۰

۱۷ آوریل ۲۰۲۴

androidx.datastore:datastore-*:1.1.0 منتشر شد. نسخه ۱.۱.۰ شامل این کامیت‌ها است.

تغییرات عمده از زمان انتشار نسخه ۱.۰.۰

برای اطلاعات بیشتر، لطفاً یادداشت‌های انتشار نسخه‌های آلفا و بتای ۱.۱.۰ را بررسی کنید. برخی از به‌روزرسانی‌های اصلی در ۱.۱.۰ عبارتند از:

  • DataStore اکنون از چندین فرآیند که به یک فایل واحد دسترسی دارند، پشتیبانی می‌کند و از قابلیت مشاهده در بین فرآیندها نیز پشتیبانی می‌کند.
  • رابط کاربری جدید Storage به شما امکان می‌دهد نحوه ذخیره یا سریال‌سازی مدل‌های داده خود را سفارشی کنید.
  • اکنون می‌توانید از DataStore در پروژه‌های چند پلتفرمی کاتلین استفاده کنید.

نسخه ۱.۱.۰-rc01

۳ آوریل ۲۰۲۴

androidx.datastore:datastore-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل افت عملکرد که باعث می‌شد فراخوانی‌های updateData در نوشتن روی دیسک، در صورتی که داده‌های جدید مشابه داده‌های قدیمی باشند ( d64cfb5 ) بهینه‌سازی نشوند، برطرف شد.
  • مشکل رقابتی که باعث می‌شد MultiProcess DataStore در هنگام مقداردهی اولیه، نامعتبرسازی‌ها را از دست بدهد، برطرف شد. (( b/326141553 ),( 094c2dd ))

نسخه ۱.۱.۰-بتا۰۲

۶ مارس ۲۰۲۴

androidx.datastore:datastore-*:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 شامل این کامیت‌ها است.

رفع اشکالات

  • بهبود عملکرد در DataStore فقط اعلان‌های به‌روزرسانی را هنگام مشاهده جمع‌آوری می‌کند. ( b/267792241 )
    • توجه داشته باشید که اگر از کتابخانه تست Coroutines استفاده می‌کنید، این تغییر ممکن است باعث ایجاد UncompletedCoroutinesError در تست‌های شما شود. برای جلوگیری از این مشکل، هنگام مقداردهی اولیه DataStore در تست‌های خود، مطمئن شوید که TestScope.backgroundScope را ارسال می‌کنید.
  • مشکل فراخوانی‌های تو در تو updateData در یک نمونه که منجر به بن‌بست می‌شد، برطرف شد. ( b/241760537 )
  • باعث شد DataStore دیگر در صورت عدم موفقیت در حذف SharedPreferences در حین مهاجرت، IOExceptions صادر نکند. ( b/195553816 )
  • مشکل عدم موفقیت تغییر نام فایل در حین updateData در محیط‌های JVM غیر اندروید برطرف شد. ( b/203087070 )
  • مشکلی که باعث می‌شد CorruptionException پس از مقداردهی اولیه DataStore مدیریت نشود، برطرف شد. ( b/289582516 )

نسخه ۱.۱.۰-بتا۰۱

۱۰ ژانویه ۲۰۲۴

androidx.datastore:datastore-*:1.1.0-beta01 بدون هیچ تغییری از زمان 1.1.0-alpha07 منتشر شده است. نسخه 1.1.0-beta01 شامل این کامیت‌ها است.

نسخه ۱.۱.۰-آلفا۰۷

۲۹ نوامبر ۲۰۲۳

androidx.datastore:datastore-*:1.1.0-alpha07 منتشر شد. نسخه 1.1.0-alpha07 شامل این کامیت‌ها است.

تغییرات API

  • متدهای MultiProcessDataStoreFactory دیگر آزمایشی نیستند. حاشیه‌نویسی @ExperimentalMultiProcessDataStore به طور کامل حذف شده است. ( Ieee54 ، I8e607 )

رفع اشکالات

  • حذف حاشیه‌نویسی‌های @ExperimentalMultiProcessDataStore را به نسخه ۱.۱.۰-alpha07 اضافه کنید. ( I8e607 )

نسخه ۱.۱.۰-alpha06

۱ نوامبر ۲۰۲۳

androidx.datastore:datastore-*:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 شامل این کامیت‌ها است.

تغییرات API

  • متد فاکتوری createSingleProcessCoordinator اکنون یک مسیر فایل ( String ، java.io.File و okio.Path ) دریافت می‌کند تا با createMultiProcessCoordinator سازگار باشد. ( I211c8 ، b/305755935 )

نسخه ۱.۱.۰-آلفا۰۵

۶ سپتامبر ۲۰۲۳

androidx.datastore:datastore-*:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 شامل این کامیت‌ها است.

تغییرات API

  • Datastore FileStorage اکنون به صورت عمومی در دسترس است، بنابراین کلاینت‌ها می‌توانند پارامترهای سفارشی ارائه دهند. ( Icb985 )
  • سازنده OkioStorage تغییر کرد تا یک InterProcessCoordinator بپذیرد تا بتوان از آن در اندروید با MultiProcessCoordinator استفاده کرد. ( Iecea3 )

رفع اشکالات

  • رفع مشکل عدم توانایی MultiProcessCoordinator در نظارت بر چندین فایل در یک دایرکتوری.
  • رفع مشکل عدم شناسایی فایل‌های تکراری در صورت نرمال‌سازی نشدن مسیر فایل‌ها.
  • مقادیر اشتباه برگردانده شده از RxDataStore#isDisposed اصلاح کنید.
  • پیکربندی proguard از دست رفته برای datstore-preferences-core artifact برطرف شد.

نسخه ۱.۱.۰-آلفا۰۴

۵ آوریل ۲۰۲۳

androidx.datastore:datastore-*:1.1.0-alpha04 منتشر شد. نسخه 1.1.0-alpha04 شامل این کامیت‌ها است.

رفع اشکالات

  • پیاده‌سازی داخلی را بهبود دهید تا از شرایط رقابتی که در آن جریان داده DataStore ممکن است پس از به‌روزرسانی، مقدار قدیمی‌تری را منتشر کند، جلوگیری شود.

نسخه ۱.۱.۰-آلفا۰۳

۲۴ مارس ۲۰۲۳

androidx.datastore:datastore-*:1.1.0-alpha03 منتشر شد.

رفع اشکالات

  • محدودیت‌های وابستگی از مصنوعات Maven حذف شد تا یک مشکل ساخت در Kotlin Native Targets ( b/274786186 , KT-57531 ) حل شود.

نسخه ۱.۱.۰-آلفا۰۲

۲۲ مارس ۲۰۲۳

androidx.datastore:datastore-*:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 شامل این کامیت‌ها است.

توجه داشته باشید

توجه داشته باشید که این نسخه شامل یک اصلاح‌کننده داخلی مهم است که پیاده‌سازی‌ها را برای پیاده‌سازی‌های DataStore تک‌پردازشی و چندپردازشی ادغام می‌کند. لطفاً مراقب تغییرات رفتاری ناخواسته احتمالی (مثلاً زمان اعلان‌های به‌روزرسانی) باشید. می‌توانید از مؤلفه ردیاب مشکل برای گزارش چنین تغییراتی استفاده کنید.

ویژگی‌های جدید

  • اکنون می‌توانید DataStore در پروژه‌های KMM استفاده کنید. توجه داشته باشید که اهداف غیراندرویدی DataStore هنوز آزمایشی هستند، اما ما تصمیم گرفتیم نسخه‌ها را ادغام کنیم تا توسعه‌دهندگان راحت‌تر بتوانند آنها را امتحان کنند.
  • ویژگی‌های چند پردازشی از androidx.datastore.multiprocess به androidx.datastore.core منتقل شده‌اند.
  • یک متد factory جدید در androidx.datastore.core.MultiProcessDataStoreFactory اضافه کنید تا نمونه‌های DataStore را با اشیاء Storage برای عملیات فایل ایجاد کنید.
  • یک رابط جدید InterProcessCoordinator اضافه کنید که به چندین نمونه DataStore کمک می‌کند تا بین فرآیندها ارتباط برقرار کنند. توجه داشته باشید که پیاده‌سازی چند فرآیندی InterProcessCoordinator فقط در اندروید موجود است.

تغییرات API

  • اضافه کردن InterProcessCoordinator به StorageConnection در رابط datastore-core ( I555bb )
  • APIها را در MultiProcessDataStoreFactory -core datastore تغییر دهید تا از Storage استفاده کنند. ( Iac02f )
  • انتقال APIهای عمومی از datastore-multiprocess به datastore-core ( I76d7c )
  • PreferencesSerializer از datastore-preferences-core ( I4b788 ) در معرض نمایش قرار گرفت
  • اضافه کردن حاشیه‌نویسی @JvmDefaultWithCompatibility ( I8f206 )

نسخه ۱.۱.۰-آلفا۰۱

۹ نوامبر ۲۰۲۲

androidx.datastore:datastore-*:1.1.0-alpha01 منتشر شد. نسخه 1.1.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • از موارد استفاده چند فرآیندی پشتیبانی کنید که در آنها سازگاری داده‌ها بین نمونه‌های DataStore در فرآیندها تضمین می‌شود. برای ایجاد چنین نمونه‌های DataStore MultiProcessDataStoreFactory#create اضافه کنید.
  • رابط ذخیره‌سازی جدید که امکان تغییر مکانیزم ذخیره‌سازی زیربنایی برای Datastore را فراهم می‌کند. پیاده‌سازی‌هایی برای java.io و okio ارائه شده است. کارخانه‌های DataStore متدهای جدیدی دارند که این شیء Storage را می‌پذیرند.

تغییرات API

  • APIها را در MultiProcessDataStoreFactory -core datastore تغییر دهید تا از Storage استفاده کنند. ( Iac02f )
  • انتقال APIهای عمومی از datastore-multiprocess به datastore-core ( I76d7c )
  • PreferencesSerializer از datastore-preferences-core ( I4b788 ) در معرض نمایش قرار گرفت

نسخه ۱.۰.۰

نسخه ۱.۰.۰

۴ آگوست ۲۰۲۱

androidx.datastore:datastore-*:1.0.0 منتشر شد. نسخه ۱.۰.۰ شامل این کامیت‌ها است.

ویژگی‌های اصلی نسخه ۱.۰.۰

Jetpack DataStore یک راهکار ذخیره‌سازی داده است که به شما امکان می‌دهد جفت‌های کلید-مقدار یا اشیاء تایپ‌شده را با بافرهای پروتکل ذخیره کنید. DataStore از کوروتین‌های کاتلین و Flow برای ذخیره داده‌ها به صورت غیرهمزمان، سازگار و تراکنشی استفاده می‌کند.

نسخه ۱.۰.۰-rc02

۲۱ ژوئیه ۲۰۲۱

androidx.datastore:datastore-*:1.0.0-rc02 منتشر شد. نسخه 1.0.0-rc02 شامل این کامیت‌ها است.

رفع اشکالات

  • روشن کنید که SharedPreferencesMigration در صورت عدم وجود کلید اجرا نمی‌شود. ( Icfa32 , b/192824325 )
  • رفع اشکالی که باعث می‌شد SharedPreferencesMigration ساخته شده با MIGRATE_ALL_KEYS در صورت عدم وجود کلید درخواستی، استثنا ایجاد کند. ( Ie318a ، b/192824325 )

نسخه ۱.۰.۰-rc01

۳۰ ژوئن ۲۰۲۱

androidx.datastore:datastore-*:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 شامل این کامیت‌ها است.

رفع اشکالات

  • اشکالی که باعث می‌شد فایل .java سهواً به فایل jar نهایی اضافه شود ( I65d96 ، b/188985637 ) برطرف شد.

نسخه ۱.۰.۰-بتا۰۲

۱۶ ژوئن ۲۰۲۱

androidx.datastore:datastore-*:1.0.0-beta02 منتشر شد. نسخه 1.0.0-beta02 شامل این کامیت‌ها است.

رفع اشکالات

نسخه ۱.۰.۰-بتا۰۱

۲۱ آوریل ۲۰۲۱

androidx.datastore:datastore-*:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 شامل این کامیت‌ها است.

تغییرات API

  • حذف اورلودهای JVM برای متدهای فقط کاتلین ( I2adc7 )

رفع اشکالات

  • اشکالی که باعث می‌شد نمایندگان ذخیره‌ساز داده منجر به نشت محتوا شوند، برطرف شد ( Ie96fc ، b/184415662 )

نسخه ۱.۰.۰-آلفا۰۸

۱۰ مارس ۲۰۲۱

androidx.datastore:datastore-*:1.0.0-alpha08 منتشر شد. نسخه 1.0.0-alpha08 شامل این کامیت‌ها است.

تغییرات API

  • اکنون می‌توانید یک migration وابسته به context به نماینده‌ی ویژگی dataStore و preferencesDataStore خود اضافه کنید. ( I4ef69 , b/173726702 )
  • اگر دیگر از datastore delegate یا context.createDataStore ( I60f9a ) استفاده نمی‌کنید، توابع کمکی برای دریافت نام فایل اضافه می‌کند.
  • توابع writeTo و readFrom سریالایزر اکنون به حالت تعلیق در می‌آیند. اگر از سریالایزر استفاده کرده‌اید، باید توابع خود را به‌روزرسانی کنید تا به حالت تعلیق درآیند. ( I1e58e )
  • نمایندگان املاک برای کاربران RxDataStore اضافه شد. ( Ied768 ، b/173726702 )

رفع اشکالات

  • اعمال محدودیت‌هایی بر استفاده عمومی از APIهای آزمایشی ( I6aa29 ، b/174531520 )

نسخه ۱.۰.۰-آلفا۰۷

۲۴ فوریه ۲۰۲۱

androidx.datastore:datastore-*:1.0.0-alpha07 منتشر شد. نسخه 1.0.0-alpha07 شامل این کامیت‌ها است.

تغییرات API

  • تابع الحاقی Context.createDataStore حذف شده و با نماینده ویژگی globalDataStore جایگزین شده است. یک بار در بالاترین سطح فایل کاتلین خود، globalDataStore را فراخوانی کنید. برای مثال:

    val Context.myDataStore by dataStore(...)
    

    این را در بالاترین سطح فایل کاتلین خود قرار دهید تا فقط یک نمونه از آن وجود داشته باشد. ( I57215 ، b/173726702 )

  • توابع RxDataStore اکنون به جای توابع افزونه در DataStore، در یک کلاس RxDataStore قرار دارند. ( Idccdb , b/177691248 )

  • اگر می‌خواهید EncryptedSharedPreferences (یا SharedPreferences بوت مستقیم) را به DataStore منتقل کنید، اکنون می‌توانید این کار را با سازنده جدید SharedPreferencesMigration انجام دهید که به شما امکان تزریق SharedPreferences را می‌دهد. ( I8e04e ، b/177278510 )

رفع اشکالات

  • اگر چندین DataStore فعال برای یک فایل وجود داشته باشد، DataStore اکنون یک استثنا ایجاد می‌کند. اگر DataStore خود را به عنوان Singleton مدیریت نمی‌کردید یا مطمئن نمی‌شدید که هیچ دو نمونه DataStore به طور همزمان برای یک فایل فعال نیستند، اکنون ممکن است هنگام خواندن یا نوشتن در DataStore با استثناهایی مواجه شوید. این موارد را می‌توان با مدیریت DataStore خود به عنوان Singleton برطرف کرد. ( Ib43f4 , b/177691248 )
  • رفع مشکل لغو شدن ارتباط هنگام لغو محدوده تماس گیرنده ( I2c7b3 )

نسخه ۱.۰.۰-alpha06

۱۳ ژانویه ۲۰۲۱

androidx.datastore:datastore-*:1.0.0-alpha06 منتشر شد. نسخه 1.0.0-alpha06 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • بسته‌های RxJava برای DataStore اضافه شد. آرتیفکت‌های datastore-rxjava2/3 شامل بسته‌های مربوط به APIهای اصلی DataStore ( RxDataStore ، RxDataStoreBuilder و RxDataMigration ) هستند. آرتیفکت‌های datastore-preferences-rxjava2/3 شامل یک سازنده برای ساخت Preferences DataStore هستند.

تغییرات API

  • رابط CorruptionHandler را مخفی کنید. دلیلی برای عمومی بودن آن وجود نداشت زیرا کارخانه DataStore فقط یک ReplaceFileCorruptionHandler را می‌پذیرد. ( I0b3b3 , b/176032264 )
  • متد preferencesKey<T>(name: String): Key<T> حذف شده و با متدهای مختص به هر نوع پشتیبانی شده جایگزین شده است، برای مثال preferencesKey<Int>("int") اکنون intPreferencesKey("int") تبدیل شده است ( Ibcfac , b/170311106 )

رفع اشکالات

  • مستندات مربوط به DataStoreFactory که این واقعیت را که فایل datastore در زیرشاخه‌ی “datastore/” ایجاد می‌شود، از قلم انداخته بود، اصلاح شد. ( Ica222 )

نسخه ۱.۰.۰-آلفا۰۵

۲ دسامبر ۲۰۲۰

androidx.datastore:datastore-*:1.0.0-alpha05 منتشر شد. نسخه 1.0.0-alpha05 شامل این کامیت‌ها است.

رفع اشکالات

  • مستندات و استثنائات بهتری در مورد نوشتن‌های همزمان از انبارهای داده اضافه کنید. ( Ia98a2 ، b/173522155 ، b/173726702 )
  • اکنون اجازه می‌دهیم (اما الزامی نداریم) که OutputStream ارسال شده به Serializer.writeTo() بسته شود. ( I5c9bf , b/173037611 )

نسخه ۱.۰.۰-آلفا۰۴

۱۷ نوامبر ۲۰۲۰

androidx.datastore:datastore-*:1.0.0-alpha04 منتشر شد. نسخه 1.0.0-alpha04 شامل این کامیت‌ها است.

رفع اشکالات

  • مشکل بسته‌بندی که باعث خرابی زیر در Preference Datastore 1.0.0-alpha03 می‌شد، برطرف شد: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

نسخه ۱.۰.۰-آلفا۰۳

۱۱ نوامبر ۲۰۲۰

androidx.datastore:datastore-*:1.0.0-alpha03 منتشر شد. نسخه 1.0.0-alpha03 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • تنظیمات اکنون از مقادیر double پشتیبانی می‌کند (که اگر به دقت بیشتری نسبت به اعداد اعشاری نیاز دارید، مفید است) ( I5be8f ، b/169471808 )

تغییرات API

  • یک وابستگی خالص کاتلین برای datastore ایجاد کردم تا کامپایل سریع‌تر انجام شود. androidx.datastore:datastore-core شامل APIهای هسته کاتلین است و androidx.datastore:datastore شامل APIهایی است که به اندروید وابسته هستند (از جمله SharedPreferencesMigration و سازنده Context.createDataStore .)( I42d75 , b/168512698 )
  • تقسیم اهداف برای ذخیره داده‌های ترجیحی برای کامپایل سریع‌تر کاتلین ( Ia3c19 )
  • سریالایزرها اکنون به یک ویژگی جدید برای مقدار پیش‌فرض نیاز دارند که در صورت عدم وجود داده روی دیسک استفاده خواهد شد. این امر پیاده‌سازی سریالایزرهای سفارشی را آسان‌تر می‌کند، بنابراین کاربران مجبور نیستند جریان‌های ورودی خالی را به صورت خاص در نظر بگیرند (جریان‌های ورودی خالی با json تجزیه نمی‌شوند).

    • همچنین اکنون بررسی‌ای وجود دارد تا تأیید شود که جریان خروجی ارائه شده به writeTo() بسته نشده است و اگر بسته باشد، استثنائاتی ( I16e29 ) ایجاد می‌کند.
  • ساخت سازنده برای SharedPreferencesView به صورت داخلی. در ابتدا برای امکان آزمایش، عمومی بود. در عوض، آزمایش‌ها باید یک SharedPreferencesMigration بسازند و آن را آزمایش کنند. ( I93891 )

رفع اشکالات

  • پارامتر produceFile در DataStoreFactory و PreferenceDataStoreFactory اکنون آخرین پارامتر در لیست است، بنابراین به شما امکان می‌دهد از سینتکس لامبدا دنباله‌دار کاتلین استفاده کنید. ( Ibe7f1 ، b/169425442 )
  • پیروی از الزامات صریح API جدید برای کاتلین ( I5ae1e )

مشکلات شناخته شده

  • پایگاه داده Preference با خطای java.lang.NoClassDefFoundError از کار می‌افتد. ( b/173036843 )

نسخه ۱.۰.۰-آلفا۰۲

۱۴ اکتبر ۲۰۲۰

androidx.datastore:datastore-core:1.0.0-alpha02 و androidx.datastore:datastore-preferences:1.0.0-alpha02 منتشر شدند. نسخه 1.0.0-alpha02 شامل این کامیت‌ها است.

رفع اشکالات

  • یک محافظ در برابر جهش در هسته‌ی پایگاه داده اضافه شد. جهش، استفاده از پایگاه داده را برای افرادی که از پایگاه داده با انواع غیر اولیه/غیر ترجیحی ( I6aa84 ) استفاده می‌کنند، مختل می‌کند.
  • یک متد toString به Preferences.kt اضافه شد تا اشکال‌زدایی وضعیت فعلی آسان شود ( I96006 )
  • یک استثنا برای محافظت در برابر سوءاستفاده از DataStore.Preferences ( I1134d ) اضافه شد.
  • اشکالی که باعث می‌شد برنامه هنگام راه‌اندازی از کار بیفتد ( I69237 ، b/168580258 ) برطرف شد.

نسخه ۱.۰.۰-آلفا۰۱

۲ سپتامبر ۲۰۲۰

androidx.datastore:datastore-core:1.0.0-alpha01 و androidx.datastore:datastore-preferences:1.0.0-alpha01 منتشر شدند. نسخه 1.0.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

Jetpack DataStore یک راهکار ذخیره‌سازی داده جدید و بهبود یافته است که با هدف جایگزینی SharedPreferences ساخته شده است. DataStore که بر اساس کوروتین‌های کاتلین و Flow ساخته شده است، دو پیاده‌سازی متفاوت ارائه می‌دهد:

  • Proto DataStore، که به شما امکان می‌دهد اشیاء تایپ‌شده را ذخیره کنید (با پشتیبانی بافرهای پروتکل )
  • انبار داده تنظیمات، که جفت‌های کلید-مقدار را ذخیره می‌کند

داده‌ها به صورت غیرهمزمان، مداوم و تراکنشی ذخیره می‌شوند و بر اکثر معایب SharedPreferences غلبه می‌کنند.