সিস্টেম আপডেট পরিচালনা করুন

এই বিকাশকারীর নির্দেশিকা ব্যাখ্যা করে যে কীভাবে আপনার ডিভাইস নীতি নিয়ন্ত্রক (DPC) ডিভাইস ব্যবহারকারীর হয়ে Android সিস্টেম আপডেটগুলি পরিচালনা করতে পারে৷

ভূমিকা

অ্যান্ড্রয়েড ডিভাইসগুলি সিস্টেম এবং অ্যাপ্লিকেশন সফ্টওয়্যারে ওভার-দ্য-এয়ার (OTA) আপডেটগুলি গ্রহণ এবং ইনস্টল করতে পারে৷ অ্যান্ড্রয়েড ডিভাইস ব্যবহারকারীকে জানায় যে একটি সিস্টেম আপডেট উপলব্ধ রয়েছে এবং ডিভাইস ব্যবহারকারী অবিলম্বে বা পরে আপডেটটি ইনস্টল করতে পারেন।

আপনার DPC ব্যবহার করে, একজন আইটি প্রশাসক ডিভাইস ব্যবহারকারীর জন্য সিস্টেম আপডেট পরিচালনা করতে পারেন। DPC একটি সম্পূর্ণরূপে পরিচালিত ডিভাইসের মালিক হতে পারে (একটি ডিভাইসের মালিক বলা হয়) বা একটি কাজের প্রোফাইলের মালিক হতে পারে (একটি প্রোফাইল মালিক বলা হয়)। সারণী 1 দেখায় কিভাবে ডিভাইস মালিকরা সিস্টেম আপডেট পরিচালনা করতে পারেন, যখন প্রোফাইল মালিকরা শুধুমাত্র সিস্টেম আপডেট সম্পর্কে তথ্য রিপোর্ট করতে পারেন।

সারণি 1 : DPC-তে উপলব্ধ কাজগুলি মালিকের মোডের উপর নির্ভর করে

টাস্ক ডিভাইস মালিক প্রোফাইল মালিক
মুলতুবি সিস্টেম আপডেটের জন্য চেক করুন
নতুন সিস্টেম আপডেট উপলব্ধ হলে কলব্যাক গ্রহণ করুন৷
Android সিস্টেম আপডেট ইনস্টল করার সময় নিয়ন্ত্রণ করতে একটি স্থানীয় আপডেট নীতি সেট করুন
জটিল সময়ের মধ্যে OS সংস্করণ হিমায়িত করুন

মুলতুবি আপডেটের জন্য চেক করুন

একটি মুলতুবি আপডেট হল একটি ডিভাইসের জন্য একটি সিস্টেম আপডেট যা এখনও ইনস্টল করা হয়নি৷ আপনার ডিপিসি আইটি প্রশাসকদের সাহায্য করতে পারে কোন ডিভাইসে সিস্টেম আপডেট মুলতুবি আছে তা পরীক্ষা করতে এবং সম্ভবত ডিভাইস ব্যবহারকারীদের দ্রুত গুরুত্বপূর্ণ আপডেট ইনস্টল করতে বলুন।

Android 8.0 (API লেভেল 26) বা উচ্চতর সংস্করণে চলমান ডিভাইস মালিক এবং প্রোফাইল মালিকরা একটি ডিভাইসের সিস্টেম আপডেট মুলতুবি আছে কিনা তা পরীক্ষা করতে পারেন। DevicePolicyManager.getPendingSystemUpdate() কল করুন যা ডিভাইসটি আপ টু ডেট থাকলে null দেয়। যদি একটি সিস্টেম আপডেট মুলতুবি থাকে, পদ্ধতিটি আপডেট সম্পর্কে তথ্য প্রদান করে।

একটি মুলতুবি আপডেট সম্পর্কে আরও জানুন

getPendingSystemUpdate() কল করার পরে আপনি মুলতুবি আপডেট সম্পর্কে আরও জানতে ফিরে আসা SystemUpdateInfo মানটি পরীক্ষা করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় যে ডিভাইসে একটি মুলতুবি আপডেট প্রথম উপলব্ধ হলে আপনি কীভাবে খুঁজে পেতে পারেন:

কোটলিন

val firstAvailable =
        dpm.getPendingSystemUpdate(adminName)?.receivedTime
firstAvailable?.let {
    Log.i(TAG, "Update first available: ${Date(firstAvailable)}")
}

জাভা

SystemUpdateInfo updateInfo = dpm.getPendingSystemUpdate(adminName);
if (updateInfo != null) {
  Long firstAvailable = updateInfo.getReceivedTime();
  Log.i(TAG, "Update first available: " + new Date(firstAvailable));
}

সিস্টেম কলব্যাক

যখন একটি আপডেট উপলব্ধ হয়, তখন Android সিস্টেম ডিভাইস মালিকদের নতুন আপডেট সম্পর্কে অবহিত করে৷ অ্যান্ড্রয়েড 8.0 বা উচ্চতর সংস্করণে, সিস্টেমটি প্রোফাইল মালিকদেরও অবহিত করে।

আপনার DeviceAdminReceiver সাবক্লাসে, onSystemUpdatePending() কলব্যাক ওভাররাইড করুন। কলব্যাক পাওয়ার জন্য আপনাকে আপনার DPC-এর জন্য নিবন্ধন বা বিজ্ঞাপন দেওয়ার দরকার নেই। সিস্টেম একটি একক আপডেটের জন্য এই পদ্ধতিটিকে একাধিকবার কল করতে পারে তাই প্রতিক্রিয়া দেওয়ার আগে আপডেটের স্থিতি পরীক্ষা করুন৷ কলব্যাকে সিস্টেম আপডেট সম্পর্কে আরও জানতে getPendingSystemUpdate() এ কল করুন। নিম্নলিখিত উদাহরণ দেখায় কিভাবে আপনি এটি করতে পারেন:

কোটলিন

/**
 * Called when a new update is available.
 */
override fun onSystemUpdatePending(context: Context?, intent: Intent?,
                                   receivedTime: Long) {

    // System update information is supported in API level 26 or higher.
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
        return
    }

    val updateInfo = getManager(context)
            .getPendingSystemUpdate(getWho(context))
            ?: return
    if (updateInfo.securityPatchState ==
            SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
        // Perhaps install because this is a security patch.
        // ...
    }
}

জাভা

/**
 * Called when a new update is available.
 */
public void onSystemUpdatePending (Context context, Intent intent,
                                   long receivedTime) {

  // System update information is supported in API level 26 or higher.
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
    return;
  }
  SystemUpdateInfo updateInfo = getManager(context)
      .getPendingSystemUpdate(getWho(context));
  if (updateInfo == null) {
    return;
  }
  if (updateInfo.getSecurityPatchState() ==
      SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
    // Perhaps install because this is a security patch.
    // ...
  }
}

যখন একটি সিস্টেমে একাধিক DPC থাকে, উদাহরণস্বরূপ সম্পূর্ণরূপে পরিচালিত ডিভাইসে কাজের প্রোফাইল, ডিভাইস মালিক এবং প্রোফাইল মালিক উভয়ই কলব্যাক গ্রহণ করেন।

আপডেট নীতি

একটি ডিভাইসের মালিক একটি ডিভাইসের জন্য একটি স্থানীয় সিস্টেম আপডেট নীতি সেট করে আপডেটগুলি ইনস্টল করার সময় নিয়ন্ত্রণ করতে পারেন৷ সিস্টেম আপডেট নীতি তিন ধরনের হতে পারে:

স্বয়ংক্রিয়
সিস্টেম আপডেটগুলি উপলব্ধ হওয়ার সাথে সাথে ইনস্টল করে (ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই)। এই নীতির ধরন সেট করা অবিলম্বে কোনো মুলতুবি আপডেট ইনস্টল করে যা স্থগিত হতে পারে বা রক্ষণাবেক্ষণ উইন্ডোর জন্য অপেক্ষা করতে পারে।
জানালাযুক্ত
একটি দৈনিক রক্ষণাবেক্ষণ উইন্ডোর সময় সিস্টেম আপডেট ইনস্টল করে (ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই)। একটি নতুন উইন্ডোযুক্ত নীতি তৈরি করার সময়, দিনের মিনিট হিসাবে, দৈনিক রক্ষণাবেক্ষণ উইন্ডোর শুরু এবং শেষ সেট করুন।
স্থগিত
সিস্টেম আপডেটের ইনস্টলেশন 30 দিনের জন্য স্থগিত করে। 30-দিনের মেয়াদ শেষ হওয়ার পরে, সিস্টেমটি ডিভাইস ব্যবহারকারীকে আপডেটটি ইনস্টল করার জন্য অনুরোধ করে।

স্থগিত সময়কাল

সিস্টেম প্রতিটি আপডেটকে 30-দিন স্থগিত করার জন্য সীমাবদ্ধ করে। সময়কাল শুরু হয় যখন সিস্টেমটি প্রথম আপডেট স্থগিত করে এবং নতুন স্থগিত নীতি সেট করা সময়কাল বাড়ানো হবে না।

স্থগিত করা ছাড়াও, সংযোগ নেই, অপর্যাপ্ত ডিস্ক স্থান, বা কম ব্যাটারির মতো অন্যান্য কারণে Android একটি আপডেট ইনস্টল করতে সক্ষম নাও হতে পারে।

সিস্টেমটি 30-দিনের স্থগিত টাইমার রিসেট করে যদি এই সময়ের মধ্যে একটি ভিন্ন আপডেট উপলব্ধ হয় - আইটি প্রশাসকদের সম্মিলিত সিস্টেম আপডেটগুলি চেষ্টা করার সুযোগ দেয়৷ একবার নতুন আপডেট ছাড়াই 30 দিন অতিবাহিত হয়ে গেলে, সিস্টেম ব্যবহারকারীকে সমস্ত মুলতুবি আপডেটগুলি ইনস্টল করতে অনুরোধ করে। পরে, যখন একটি নতুন সিস্টেম আপডেট উপলব্ধ হয়, 30-দিনের মেয়াদ আবার শুরু হয়।

একটি নীতি নির্ধারণ কিভাবে

আপনি Android 8.0 (API স্তর 26) বা উচ্চতর সংস্করণে আপডেট নীতি সেট করতে পারেন৷ ডিভাইসটি কখন সিস্টেম আপডেটগুলি ইনস্টল করবে তা নির্দিষ্ট করতে, উপরে বর্ণিত তিনটি প্রকারের একটি ব্যবহার করে SystemUpdatePolicy এর একটি উদাহরণ তৈরি করুন৷ একটি নীতি সেট করতে, আপনার ডিভাইসের মালিক DevicePolicyManager মেথড setSystemUpdatePolicy() কল করে। নিম্নলিখিত কোড নমুনা দেখায় কিভাবে আপনি এটি করতে পারেন. একটি উইন্ডোড-নীতির উদাহরণ দেখতে, SystemUpdatePolicy ডকুমেন্টেশন দেখুন।

কোটলিন

// Create the system update policy to postpone installation for 30 days.
val policy = SystemUpdatePolicy.createPostponeInstallPolicy()

// Get a DevicePolicyManager instance to set the policy on the device.
val dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE)
        as DevicePolicyManager
val adminName = getComponentName(context)

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy)

জাভা

// Create the system update policy to postpone installation for 30 days.
SystemUpdatePolicy policy = SystemUpdatePolicy.createPostponeInstallPolicy();

// Get a DevicePolicyManager instance to set the policy on the device.
DevicePolicyManager dpm = (DevicePolicyManager) context
    .getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminName = getComponentName(context);

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy);

নীতির দৃষ্টান্তগুলি তৈরি করার পরে পরিবর্তন করা যাবে না৷ একটি ডিভাইস আপডেট ইনস্টল করার সময় পরিবর্তন করতে, আপনি একটি নতুন নীতি তৈরি করতে এবং সেট করতে পারেন৷ একটি ডিভাইস থেকে একটি নীতি সরাতে, policy যুক্তি হিসাবে setSystemUpdatePolicy() পাসিং null কল করুন। আপনার ডিপিসি একটি নীতি সরানোর পরে, ডিভাইস ব্যবহারকারী যেকোন উপলব্ধ সিস্টেম আপডেটের জন্য বিজ্ঞপ্তিগুলি দেখতে পান।

অ্যাপগুলি ডিভাইসের বর্তমান নীতি পেতে getSystemUpdatePolicy() কল করতে পারে। যদি এই পদ্ধতিটি null প্রদান করে, তাহলে এর মানে হল একটি নীতি বর্তমানে সেট করা নেই।

ফ্রিজ পিরিয়ড

ছুটির দিন বা অন্যান্য ব্যস্ত সময়ের মতো জটিল সময়গুলিতে OS সংস্করণ হিমায়িত করতে, ডিভাইস মালিকরা 90 দিন পর্যন্ত সিস্টেম আপডেট স্থগিত করতে পারেন। যখন একটি ডিভাইস হিমায়িত সময়ের মধ্যে থাকে তখন এটি নিম্নরূপ আচরণ করে:

  • মুলতুবি থাকা সিস্টেম আপডেট সম্পর্কে ডিভাইসটি কোনো বিজ্ঞপ্তি পায় না।
  • OS-এ সিস্টেম আপডেট ইনস্টল করা নেই।
  • ডিভাইস ব্যবহারকারীরা ম্যানুয়ালি সেটিংসে সিস্টেম আপডেট চেক করতে পারবেন না।

ডিভাইসটিকে অনির্দিষ্টকালের জন্য হিমায়িত করা রোধ করতে সিস্টেমটি যেকোন সংজ্ঞায়িত ফ্রিজ পিরিয়ড অনুসরণ করে একটি বাধ্যতামূলক 60-দিনের বাফার পিরিয়ড প্রয়োগ করে। মনে রাখবেন, হিমায়িত সিস্টেম আপডেটগুলি ডিভাইসগুলিকে সমালোচনামূলক আপডেটগুলি পেতে বাধা দিতে পারে।

চিত্র 1. একটি ডিভাইসের জন্য দুটি ফ্রিজ পিরিয়ড সেট করা হয়েছে৷
ক্যালেন্ডার 60-দিনের বাফার সহ এক বছরে দুটি ফ্রিজ পিরিয়ড দেখাচ্ছে।

আপনি একটি আপডেট নীতিতে ফ্রিজ পিরিয়ড সেট করেন। আপনি একটি নীতি সেট না করে ফ্রিজ পিরিয়ড সেট করতে পারবেন না৷ ডিভাইসটি আপনার সেট করা যেকোনো ফ্রিজ পিরিয়ডের বাইরে থাকলে, স্বাভাবিক নীতি আচরণ (স্বয়ংক্রিয়, উইন্ডো করা বা স্থগিত) প্রযোজ্য হয়।

হিমায়িত সময়কাল কীভাবে সেট করবেন

আপনি Android 9 (API লেভেল 28) বা উচ্চতর তে ফ্রিজ পিরিয়ড সেট করতে পারেন। একটি ডিভাইসের মালিক ডিভাইসের জন্য নীতি সেট করার আগে একটি সিস্টেম আপডেট নীতিতে একটি ফ্রিজ পিরিয়ড সেট করে। ধাপগুলো হল:

  1. একটি নতুন (বা বর্তমান পান) সিস্টেম আপডেট নীতি তৈরি করুন৷
  2. setFreezePeriods() কল করে পলিসিতে ফ্রিজ পিরিয়ড সেট করুন।
  3. setSystemUpdatePolicy() এ কল করে ডিভাইসের জন্য নীতি সেট করুন এবং সময়কাল ফ্রিজ করুন।

যেহেতু ফ্রিজ পিরিয়ড বার্ষিক পুনরাবৃত্তি হয়, পিরিয়ডের শুরু এবং শেষ তারিখগুলি মাস এবং দিনের মান দ্বারা উপস্থাপিত হয়। প্রারম্ভিক দিনটি পূর্ববর্তী যেকোন ফ্রিজ পিরিয়ড শেষ হওয়ার কমপক্ষে 60 দিন পরে শুরু হওয়া আবশ্যক৷ নিম্নলিখিত উদাহরণ দেখায় কিভাবে আপনি একটি বিদ্যমান সিস্টেম আপডেট নীতির জন্য দুটি ফ্রিজ পিরিয়ড সেট করতে পারেন:

কোটলিন

// Get the existing policy from the DevicePolicyController instance.
val policy = dpm.systemUpdatePolicy ?: return

try {
    // Set the two annual freeze periods on the policy for our retail
    // point-of-sale devices.
    val summerSale = FreezePeriod(
            MonthDay.of(6, 1),
            MonthDay.of(7, 31)) // Jun 1 - Jul 31 inclusive
    val winterSale = FreezePeriod(
            MonthDay.of(11, 20),
            MonthDay.of(1, 12)) // Nov 20 - Jan 12 inclusive
    policy.freezePeriods = Arrays.asList(summerSale, winterSale)

    // Set the policy again to activate the freeze periods.
    dpm.setSystemUpdatePolicy(adminName, policy)

} catch (e: SystemUpdatePolicy.ValidationFailedException) {
    // There must be previous periods recorded on the device because
    // summerSale and winterSale don’t overlap and are separated by more
    // than 60 days. Report the overlap ...
}

জাভা

// Get the existing policy from the DevicePolicyController instance.
SystemUpdatePolicy policy = dpm.getSystemUpdatePolicy();

try {
  // Set the two annual freeze periods on the policy for our
  // retail point-of-sale devices.
  FreezePeriod summerSale = new FreezePeriod(
      MonthDay.of(6, 1),
      MonthDay.of(7, 31)); // Jun 1 - Jul 31 inclusive
  FreezePeriod winterSale = new FreezePeriod(
      MonthDay.of(11, 20),
      MonthDay.of(1, 12)); // Nov 20 - Jan 12 inclusive
  policy.setFreezePeriods(Arrays.asList(summerSale, winterSale));

  // Don’t forget to set the policy again to activate the freeze periods.
  dpm.setSystemUpdatePolicy(adminName, policy);

} catch (SystemUpdatePolicy.ValidationFailedException e) {
  // There must be previous periods recorded on the device because summerSale
  // and winterSale don’t overlap and are separated by more than 60 days.
  // Report the overlap ...
}

শুরুর দিন এবং শেষ দিন উভয়ই অন্তর্ভুক্ত। যদি শুরুর দিনটি শেষের দিনের চেয়ে বেশি হয় (যেমন পূর্বের উদাহরণে winterSale ), হিমায়িত সময় পরের বছর পর্যন্ত প্রসারিত হয়।

একটি সিস্টেম আপডেট নীতিতে ফ্রিজ পিরিয়ড সেট করার সময়, এই প্রয়োজনীয়তার জন্য Android পরীক্ষা করে:

  • কোন হিমায়িত সময়কাল 90 দিনের বেশি নয়।
  • হিমায়িত সময়ের মধ্যে ব্যবধান কমপক্ষে 60 দিন।
  • ফ্রিজ পিরিয়ড ওভারল্যাপ হয় না।
  • কোনো ডুপ্লিকেট ফ্রিজ পিরিয়ড নেই।

একটি ডিভাইসের জন্য সিস্টেম আপডেট নীতি সেট করার সময়, অ্যান্ড্রয়েড এই পরীক্ষাগুলি পুনরাবৃত্তি করে এবং ডিভাইসের জন্য বর্তমান বা অতীতের ফ্রিজ পিরিয়ডগুলি অন্তর্ভুক্ত করে৷

এই পরীক্ষাগুলির মধ্যে যেকোনো একটি ব্যর্থ হলে Android একটি SystemUpdatePolicy.ValidationFailedException নিক্ষেপ করে৷

একটি সিস্টেম আপডেট নীতি অবজেক্টে আগে সেট করা ফ্রিজ পিরিয়ডের একটি তালিকা পেতে, সমস্ত ইনস্টল করা অ্যাপ SystemUpdatePolicy.getFreezePeriods() এ কল করতে পারে। নিম্নলিখিত উদাহরণটি একটি ডিভাইসের ফ্রিজ পিরিয়ড লগ করার জন্য এই পদ্ধতিটিকে কল করে:

কোটলিন

// Log any freeze periods that might be set on a system update policy.
dpm.systemUpdatePolicy?.freezePeriods?.forEach {
    Log.i(TAG, "Freeze period: $it")
}

জাভা

// Log any freeze periods that might be set on a system update policy.
SystemUpdatePolicy currentPolicy = dpm.getSystemUpdatePolicy();
if (currentPolicy != null) { // A policy might not be set.
  for (FreezePeriod freezePeriod : currentPolicy.getFreezePeriods()) {
    Log.i(TAG, "Freeze period: " + freezePeriod.toString());
  }
}

লিপ বছর

অ্যান্ড্রয়েড আইএসও 8601 ক্যালেন্ডার ব্যবহার করে (যাকে গ্রেগরিয়ান ক্যালেন্ডারও বলা হয়) হিমায়িত সময়কাল গণনা করতে এবং এটি লিপ বছরগুলিকে উপেক্ষা করে। এর মানে হল যে 29 শে ফেব্রুয়ারী একটি বৈধ তারিখ হিসাবে স্বীকৃত নয় এবং এটিকে 28 শে ফেব্রুয়ারি হিসাবে বিবেচনা করা হয়৷ তাই ফ্রিজ পিরিয়ডের সময়কাল গণনা করার সময় 29 ফেব্রুয়ারি গণনা করা হয় না।

উন্নয়ন এবং পরীক্ষা

আপনি যখন আপনার DPC এর সিস্টেম আপডেট বৈশিষ্ট্যটি বিকাশ এবং পরীক্ষা করছেন, তখন আপনাকে অনেকগুলি ফ্রিজ পিরিয়ড তৈরি করতে হতে পারে। যেহেতু অ্যান্ড্রয়েড অতীতের ফ্রিজ পিরিয়ডের মধ্যে 60-দিনের ব্যবধানের জন্য পরীক্ষা করে, আপনি অতীতের সময়কালের রেকর্ডটি প্রথমে সাফ না করে একটি নতুন ফ্রিজ পিরিয়ড সেট করতে পারবেন না। ডিভাইসের ফ্রিজ পিরিয়ড রেকর্ড সাফ করতে, অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) শেলে নিম্নলিখিত কমান্ডটি চালান:

adb shell dpm clear-freeze-period-record

সিস্টেম আপডেটের জন্য ইউজার ইন্টারফেস অক্ষম আছে কিনা তা পরীক্ষা করে আপনি নিশ্চিত করতে পারেন যে একটি ডিভাইস ফ্রিজ সময়ের মধ্যে রয়েছে।

গুগল প্লে সিস্টেম আপডেট (মেইনলাইন)

Google Play সিস্টেম আপডেটগুলি (যাকে মেইনলাইন আপডেটও বলা হয়) স্বয়ংক্রিয়ভাবে ডাউনলোড হয় তবে ইনস্টল করার জন্য একটি ডিভাইস রিবুট প্রয়োজন। এই আপডেটগুলি একটি স্বয়ংক্রিয় রিবুট ট্রিগার করবে না এবং পরিবর্তে সেগুলি পরবর্তী ব্যবহারকারী, প্রশাসক বা নীতি চালু করা রিবুটে ইনস্টল করা হবে। সিস্টেম আপডেট নীতি দ্বারা ট্রিগার করা রিবুটগুলি সংশ্লিষ্ট Google/OEM সিস্টেম আপডেট এবং পূর্বে ডাউনলোড করা Google Play সিস্টেম আপডেটগুলি ইনস্টল করবে৷

সেটিংস > সম্বন্ধে > Android সংস্করণ > Google Play সিস্টেম আপডেটে নেভিগেট করেও Google Play সিস্টেম আপডেট ম্যানুয়ালি ইনস্টল করা যেতে পারে।

একটি আপডেট রোল ব্যাক

কিছু ক্ষেত্রে, Google Play System Update Rollbacks (GPSUR) টুলটি একটি সমস্যাযুক্ত Google Play সিস্টেম আপডেট ইনস্টলেশনের কারণে ডিভাইসের অবস্থা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে। এই টুলটি উন্নত ব্যবহারকারীদের দ্বারা ব্যবহার করা উচিত বা সহায়তা কর্মীদের দ্বারা এটি করার নির্দেশ দেওয়া উচিত কারণ এটি ডেটা ক্ষতির কারণ হতে পারে। এখানে কিভাবে GPSUR টুল ব্যবহার করবেন:

  1. যদি আপনার মেশিনে অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) চলমান থাকে, তবে এগিয়ে যাওয়ার আগে অ্যাডবি পরিষেবা বন্ধ করুন যাতে এটি রোলব্যাক প্রক্রিয়াতে হস্তক্ষেপ না করে। অ্যাডবি বন্ধ করতে, adb kill-server চালান।
  2. GPSUR টুল খুলুন
  3. টুলটিকে adb এর মাধ্যমে আপনার টেস্ট ডিভাইসের সাথে যোগাযোগ করার অনুমতি দিতে ADB অ্যাক্সেসের অনুমতি দিন ক্লিক করুন।
  4. নতুন ডিভাইস যোগ করুন ক্লিক করুন.
  5. তালিকা থেকে আপনার ডিভাইস নির্বাচন করুন এবং সংযোগ ক্লিক করুন. এই তালিকায় সম্পূর্ণ ডিভাইসের নাম নাও থাকতে পারে।
  6. আপনার ডিভাইসের স্ক্রিনে, এই কম্পিউটার থেকে সর্বদা অনুমতি দিন নির্বাচন করুন এবং USB ডিবাগিং সংযোগ গ্রহণ করতে ওকে ক্লিক করুন৷
  7. আপনার ব্রাউজারে সংযুক্ত ডিভাইস নির্বাচন করুন.
  8. আপনার ডিভাইসে রোলব্যাক উপলব্ধ থাকলে পৃষ্ঠার বোতাম পাঠ্যটি নো রোলব্যাক উপলব্ধ থেকে রোলব্যাক সাম্প্রতিক আপডেটগুলিতে স্যুইচ করা উচিত৷ রোলব্যাক সাম্প্রতিক আপডেটে ক্লিক করুন।
  9. নিশ্চিত করুন রোলব্যাক মোডেলের সতর্কতাগুলি পড়ুন এবং নিশ্চিত করুন ক্লিক করুন।
  10. রোলব্যাক সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন। একবার সম্পূর্ণ হলে, একটি রোলব্যাক সফল মডেল প্রদর্শিত হবে এবং ডিভাইসটি পুনরায় বুট হবে। এখন আপনার ডিভাইস আনপ্লাগ করা নিরাপদ।

অতিরিক্ত সম্পদ

সিস্টেম আপডেট সম্পর্কে আরও জানতে, অ্যান্ড্রয়েড ওপেন সোর্স প্রকল্পের OTA আপডেট ডকুমেন্টেশন পড়ুন।

,

এই বিকাশকারীর নির্দেশিকা ব্যাখ্যা করে যে কীভাবে আপনার ডিভাইস নীতি নিয়ন্ত্রক (DPC) ডিভাইস ব্যবহারকারীর হয়ে Android সিস্টেম আপডেটগুলি পরিচালনা করতে পারে৷

ভূমিকা

অ্যান্ড্রয়েড ডিভাইসগুলি সিস্টেম এবং অ্যাপ্লিকেশন সফ্টওয়্যারে ওভার-দ্য-এয়ার (OTA) আপডেটগুলি গ্রহণ এবং ইনস্টল করতে পারে৷ অ্যান্ড্রয়েড ডিভাইস ব্যবহারকারীকে জানায় যে একটি সিস্টেম আপডেট উপলব্ধ রয়েছে এবং ডিভাইস ব্যবহারকারী অবিলম্বে বা পরে আপডেটটি ইনস্টল করতে পারেন।

আপনার DPC ব্যবহার করে, একজন আইটি প্রশাসক ডিভাইস ব্যবহারকারীর জন্য সিস্টেম আপডেট পরিচালনা করতে পারেন। DPC একটি সম্পূর্ণরূপে পরিচালিত ডিভাইসের মালিক হতে পারে (একটি ডিভাইসের মালিক বলা হয়) বা একটি কাজের প্রোফাইলের মালিক হতে পারে (একটি প্রোফাইল মালিক বলা হয়)। সারণী 1 দেখায় কিভাবে ডিভাইস মালিকরা সিস্টেম আপডেট পরিচালনা করতে পারেন, যখন প্রোফাইল মালিকরা শুধুমাত্র সিস্টেম আপডেট সম্পর্কে তথ্য রিপোর্ট করতে পারেন।

সারণি 1 : DPC-তে উপলব্ধ কাজগুলি মালিকের মোডের উপর নির্ভর করে

টাস্ক ডিভাইস মালিক প্রোফাইল মালিক
মুলতুবি সিস্টেম আপডেটের জন্য চেক করুন
নতুন সিস্টেম আপডেট উপলব্ধ হলে কলব্যাক গ্রহণ করুন৷
Android সিস্টেম আপডেট ইনস্টল করার সময় নিয়ন্ত্রণ করতে একটি স্থানীয় আপডেট নীতি সেট করুন
জটিল সময়ের মধ্যে OS সংস্করণ হিমায়িত করুন

মুলতুবি আপডেটের জন্য চেক করুন

একটি মুলতুবি আপডেট হল একটি ডিভাইসের জন্য একটি সিস্টেম আপডেট যা এখনও ইনস্টল করা হয়নি৷ আপনার ডিপিসি আইটি প্রশাসকদের সাহায্য করতে পারে কোন ডিভাইসে সিস্টেম আপডেট মুলতুবি আছে তা পরীক্ষা করতে এবং সম্ভবত ডিভাইস ব্যবহারকারীদের দ্রুত গুরুত্বপূর্ণ আপডেট ইনস্টল করতে বলুন।

Android 8.0 (API লেভেল 26) বা উচ্চতর সংস্করণে চলমান ডিভাইস মালিক এবং প্রোফাইল মালিকরা একটি ডিভাইসের সিস্টেম আপডেট মুলতুবি আছে কিনা তা পরীক্ষা করতে পারেন। DevicePolicyManager.getPendingSystemUpdate() কল করুন যা ডিভাইসটি আপ টু ডেট থাকলে null দেয়। যদি একটি সিস্টেম আপডেট মুলতুবি থাকে, পদ্ধতিটি আপডেট সম্পর্কে তথ্য প্রদান করে।

একটি মুলতুবি আপডেট সম্পর্কে আরও জানুন

getPendingSystemUpdate() কল করার পরে আপনি মুলতুবি আপডেট সম্পর্কে আরও জানতে ফিরে আসা SystemUpdateInfo মানটি পরীক্ষা করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় যে ডিভাইসে একটি মুলতুবি আপডেট প্রথম উপলব্ধ হলে আপনি কীভাবে খুঁজে পেতে পারেন:

কোটলিন

val firstAvailable =
        dpm.getPendingSystemUpdate(adminName)?.receivedTime
firstAvailable?.let {
    Log.i(TAG, "Update first available: ${Date(firstAvailable)}")
}

জাভা

SystemUpdateInfo updateInfo = dpm.getPendingSystemUpdate(adminName);
if (updateInfo != null) {
  Long firstAvailable = updateInfo.getReceivedTime();
  Log.i(TAG, "Update first available: " + new Date(firstAvailable));
}

সিস্টেম কলব্যাক

যখন একটি আপডেট উপলব্ধ হয়, তখন Android সিস্টেম ডিভাইস মালিকদের নতুন আপডেট সম্পর্কে অবহিত করে৷ অ্যান্ড্রয়েড 8.0 বা উচ্চতর সংস্করণে, সিস্টেমটি প্রোফাইল মালিকদেরও অবহিত করে।

আপনার DeviceAdminReceiver সাবক্লাসে, onSystemUpdatePending() কলব্যাক ওভাররাইড করুন। কলব্যাক পাওয়ার জন্য আপনাকে আপনার DPC-এর জন্য নিবন্ধন বা বিজ্ঞাপন দেওয়ার দরকার নেই। সিস্টেম একটি একক আপডেটের জন্য এই পদ্ধতিটিকে একাধিকবার কল করতে পারে তাই প্রতিক্রিয়া দেওয়ার আগে আপডেটের স্থিতি পরীক্ষা করুন৷ কলব্যাকে সিস্টেম আপডেট সম্পর্কে আরও জানতে getPendingSystemUpdate() এ কল করুন। নিম্নলিখিত উদাহরণ দেখায় কিভাবে আপনি এটি করতে পারেন:

কোটলিন

/**
 * Called when a new update is available.
 */
override fun onSystemUpdatePending(context: Context?, intent: Intent?,
                                   receivedTime: Long) {

    // System update information is supported in API level 26 or higher.
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
        return
    }

    val updateInfo = getManager(context)
            .getPendingSystemUpdate(getWho(context))
            ?: return
    if (updateInfo.securityPatchState ==
            SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
        // Perhaps install because this is a security patch.
        // ...
    }
}

জাভা

/**
 * Called when a new update is available.
 */
public void onSystemUpdatePending (Context context, Intent intent,
                                   long receivedTime) {

  // System update information is supported in API level 26 or higher.
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
    return;
  }
  SystemUpdateInfo updateInfo = getManager(context)
      .getPendingSystemUpdate(getWho(context));
  if (updateInfo == null) {
    return;
  }
  if (updateInfo.getSecurityPatchState() ==
      SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
    // Perhaps install because this is a security patch.
    // ...
  }
}

যখন একটি সিস্টেমে একাধিক DPC থাকে, উদাহরণস্বরূপ সম্পূর্ণরূপে পরিচালিত ডিভাইসে কাজের প্রোফাইল, ডিভাইস মালিক এবং প্রোফাইল মালিক উভয়ই কলব্যাক গ্রহণ করেন।

আপডেট নীতি

একটি ডিভাইসের মালিক একটি ডিভাইসের জন্য একটি স্থানীয় সিস্টেম আপডেট নীতি সেট করে আপডেটগুলি ইনস্টল করার সময় নিয়ন্ত্রণ করতে পারেন৷ সিস্টেম আপডেট নীতি তিন ধরনের হতে পারে:

স্বয়ংক্রিয়
সিস্টেম আপডেটগুলি উপলব্ধ হওয়ার সাথে সাথে ইনস্টল করে (ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই)। এই নীতির ধরন সেট করা অবিলম্বে কোনো মুলতুবি আপডেট ইনস্টল করে যা স্থগিত হতে পারে বা রক্ষণাবেক্ষণ উইন্ডোর জন্য অপেক্ষা করতে পারে।
জানালাযুক্ত
একটি দৈনিক রক্ষণাবেক্ষণ উইন্ডোর সময় সিস্টেম আপডেট ইনস্টল করে (ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই)। একটি নতুন উইন্ডোযুক্ত নীতি তৈরি করার সময়, দিনের মিনিট হিসাবে, দৈনিক রক্ষণাবেক্ষণ উইন্ডোর শুরু এবং শেষ সেট করুন।
স্থগিত
সিস্টেম আপডেটের ইনস্টলেশন 30 দিনের জন্য স্থগিত করে। 30-দিনের মেয়াদ শেষ হওয়ার পরে, সিস্টেমটি ডিভাইস ব্যবহারকারীকে আপডেটটি ইনস্টল করার জন্য অনুরোধ করে।

স্থগিত সময়কাল

সিস্টেম প্রতিটি আপডেটকে 30-দিন স্থগিত করার জন্য সীমাবদ্ধ করে। সময়কাল শুরু হয় যখন সিস্টেমটি প্রথম আপডেট স্থগিত করে এবং নতুন স্থগিত নীতি সেট করা সময়কাল বাড়ানো হবে না।

স্থগিত করা ছাড়াও, সংযোগ নেই, অপর্যাপ্ত ডিস্ক স্থান, বা কম ব্যাটারির মতো অন্যান্য কারণে Android একটি আপডেট ইনস্টল করতে সক্ষম নাও হতে পারে।

সিস্টেমটি 30-দিনের স্থগিত টাইমার রিসেট করে যদি এই সময়ের মধ্যে একটি ভিন্ন আপডেট উপলব্ধ হয় - আইটি প্রশাসকদের সম্মিলিত সিস্টেম আপডেটগুলি চেষ্টা করার সুযোগ দেয়৷ একবার নতুন আপডেট ছাড়াই 30 দিন অতিবাহিত হয়ে গেলে, সিস্টেম ব্যবহারকারীকে সমস্ত মুলতুবি আপডেটগুলি ইনস্টল করতে অনুরোধ করে। পরে, যখন একটি নতুন সিস্টেম আপডেট উপলব্ধ হয়, 30-দিনের মেয়াদ আবার শুরু হয়।

একটি নীতি নির্ধারণ কিভাবে

আপনি Android 8.0 (API স্তর 26) বা উচ্চতর সংস্করণে আপডেট নীতি সেট করতে পারেন৷ ডিভাইসটি কখন সিস্টেম আপডেটগুলি ইনস্টল করবে তা নির্দিষ্ট করতে, উপরে বর্ণিত তিনটি প্রকারের একটি ব্যবহার করে SystemUpdatePolicy এর একটি উদাহরণ তৈরি করুন৷ একটি নীতি সেট করতে, আপনার ডিভাইসের মালিক DevicePolicyManager মেথড setSystemUpdatePolicy() কল করে। নিম্নলিখিত কোড নমুনা দেখায় কিভাবে আপনি এটি করতে পারেন. একটি উইন্ডোড-নীতির উদাহরণ দেখতে, SystemUpdatePolicy ডকুমেন্টেশন দেখুন।

কোটলিন

// Create the system update policy to postpone installation for 30 days.
val policy = SystemUpdatePolicy.createPostponeInstallPolicy()

// Get a DevicePolicyManager instance to set the policy on the device.
val dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE)
        as DevicePolicyManager
val adminName = getComponentName(context)

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy)

জাভা

// Create the system update policy to postpone installation for 30 days.
SystemUpdatePolicy policy = SystemUpdatePolicy.createPostponeInstallPolicy();

// Get a DevicePolicyManager instance to set the policy on the device.
DevicePolicyManager dpm = (DevicePolicyManager) context
    .getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminName = getComponentName(context);

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy);

নীতির দৃষ্টান্তগুলি তৈরি করার পরে পরিবর্তন করা যাবে না৷ একটি ডিভাইস আপডেট ইনস্টল করার সময় পরিবর্তন করতে, আপনি একটি নতুন নীতি তৈরি করতে এবং সেট করতে পারেন৷ একটি ডিভাইস থেকে একটি নীতি সরাতে, policy যুক্তি হিসাবে setSystemUpdatePolicy() পাসিং null কল করুন। আপনার ডিপিসি একটি নীতি সরানোর পরে, ডিভাইস ব্যবহারকারী যেকোন উপলব্ধ সিস্টেম আপডেটের জন্য বিজ্ঞপ্তিগুলি দেখতে পান।

অ্যাপগুলি ডিভাইসের বর্তমান নীতি পেতে getSystemUpdatePolicy() কল করতে পারে। যদি এই পদ্ধতিটি null প্রদান করে, তাহলে এর মানে হল একটি নীতি বর্তমানে সেট করা নেই।

ফ্রিজ পিরিয়ড

ছুটির দিন বা অন্যান্য ব্যস্ত সময়ের মতো জটিল সময়গুলিতে OS সংস্করণ হিমায়িত করতে, ডিভাইস মালিকরা 90 দিন পর্যন্ত সিস্টেম আপডেট স্থগিত করতে পারেন। যখন একটি ডিভাইস হিমায়িত সময়ের মধ্যে থাকে তখন এটি নিম্নরূপ আচরণ করে:

  • মুলতুবি থাকা সিস্টেম আপডেট সম্পর্কে ডিভাইসটি কোনো বিজ্ঞপ্তি পায় না।
  • OS-এ সিস্টেম আপডেট ইনস্টল করা নেই।
  • ডিভাইস ব্যবহারকারীরা ম্যানুয়ালি সেটিংসে সিস্টেম আপডেট চেক করতে পারবেন না।

ডিভাইসটিকে অনির্দিষ্টকালের জন্য হিমায়িত করা রোধ করতে সিস্টেমটি যেকোন সংজ্ঞায়িত ফ্রিজ পিরিয়ড অনুসরণ করে একটি বাধ্যতামূলক 60-দিনের বাফার পিরিয়ড প্রয়োগ করে। মনে রাখবেন, হিমায়িত সিস্টেম আপডেটগুলি ডিভাইসগুলিকে সমালোচনামূলক আপডেটগুলি পেতে বাধা দিতে পারে।

চিত্র 1. একটি ডিভাইসের জন্য দুটি ফ্রিজ পিরিয়ড সেট করা হয়েছে৷
ক্যালেন্ডার 60-দিনের বাফার সহ এক বছরে দুটি ফ্রিজ পিরিয়ড দেখাচ্ছে।

আপনি একটি আপডেট নীতিতে ফ্রিজ পিরিয়ড সেট করেন। আপনি একটি নীতি সেট না করে ফ্রিজ পিরিয়ড সেট করতে পারবেন না৷ ডিভাইসটি আপনার সেট করা যেকোনো ফ্রিজ পিরিয়ডের বাইরে থাকলে, স্বাভাবিক নীতি আচরণ (স্বয়ংক্রিয়, উইন্ডো করা বা স্থগিত) প্রযোজ্য হয়।

হিমায়িত সময়কাল কীভাবে সেট করবেন

আপনি Android 9 (API লেভেল 28) বা উচ্চতর তে ফ্রিজ পিরিয়ড সেট করতে পারেন। একটি ডিভাইসের মালিক ডিভাইসের জন্য নীতি সেট করার আগে একটি সিস্টেম আপডেট নীতিতে একটি ফ্রিজ পিরিয়ড সেট করে। ধাপগুলো হল:

  1. একটি নতুন (বা বর্তমান পান) সিস্টেম আপডেট নীতি তৈরি করুন৷
  2. setFreezePeriods() কল করে পলিসিতে ফ্রিজ পিরিয়ড সেট করুন।
  3. setSystemUpdatePolicy() এ কল করে ডিভাইসের জন্য নীতি সেট করুন এবং সময়কাল ফ্রিজ করুন।

যেহেতু ফ্রিজ পিরিয়ড বার্ষিক পুনরাবৃত্তি হয়, পিরিয়ডের শুরু এবং শেষ তারিখগুলি মাস এবং দিনের মান দ্বারা উপস্থাপিত হয়। প্রারম্ভিক দিনটি পূর্ববর্তী যেকোন ফ্রিজ পিরিয়ড শেষ হওয়ার কমপক্ষে 60 দিন পরে শুরু হওয়া আবশ্যক৷ নিম্নলিখিত উদাহরণ দেখায় কিভাবে আপনি একটি বিদ্যমান সিস্টেম আপডেট নীতির জন্য দুটি ফ্রিজ পিরিয়ড সেট করতে পারেন:

কোটলিন

// Get the existing policy from the DevicePolicyController instance.
val policy = dpm.systemUpdatePolicy ?: return

try {
    // Set the two annual freeze periods on the policy for our retail
    // point-of-sale devices.
    val summerSale = FreezePeriod(
            MonthDay.of(6, 1),
            MonthDay.of(7, 31)) // Jun 1 - Jul 31 inclusive
    val winterSale = FreezePeriod(
            MonthDay.of(11, 20),
            MonthDay.of(1, 12)) // Nov 20 - Jan 12 inclusive
    policy.freezePeriods = Arrays.asList(summerSale, winterSale)

    // Set the policy again to activate the freeze periods.
    dpm.setSystemUpdatePolicy(adminName, policy)

} catch (e: SystemUpdatePolicy.ValidationFailedException) {
    // There must be previous periods recorded on the device because
    // summerSale and winterSale don’t overlap and are separated by more
    // than 60 days. Report the overlap ...
}

জাভা

// Get the existing policy from the DevicePolicyController instance.
SystemUpdatePolicy policy = dpm.getSystemUpdatePolicy();

try {
  // Set the two annual freeze periods on the policy for our
  // retail point-of-sale devices.
  FreezePeriod summerSale = new FreezePeriod(
      MonthDay.of(6, 1),
      MonthDay.of(7, 31)); // Jun 1 - Jul 31 inclusive
  FreezePeriod winterSale = new FreezePeriod(
      MonthDay.of(11, 20),
      MonthDay.of(1, 12)); // Nov 20 - Jan 12 inclusive
  policy.setFreezePeriods(Arrays.asList(summerSale, winterSale));

  // Don’t forget to set the policy again to activate the freeze periods.
  dpm.setSystemUpdatePolicy(adminName, policy);

} catch (SystemUpdatePolicy.ValidationFailedException e) {
  // There must be previous periods recorded on the device because summerSale
  // and winterSale don’t overlap and are separated by more than 60 days.
  // Report the overlap ...
}

শুরুর দিন এবং শেষ দিন উভয়ই অন্তর্ভুক্ত। যদি শুরুর দিনটি শেষের দিনের চেয়ে বেশি হয় (যেমন পূর্বের উদাহরণে winterSale ), হিমায়িত সময় পরের বছর পর্যন্ত প্রসারিত হয়।

একটি সিস্টেম আপডেট নীতিতে ফ্রিজ পিরিয়ড সেট করার সময়, এই প্রয়োজনীয়তার জন্য Android পরীক্ষা করে:

  • কোন হিমায়িত সময়কাল 90 দিনের বেশি নয়।
  • হিমায়িত সময়ের মধ্যে ব্যবধান কমপক্ষে 60 দিন।
  • ফ্রিজ পিরিয়ড ওভারল্যাপ হয় না।
  • কোনো ডুপ্লিকেট ফ্রিজ পিরিয়ড নেই।

একটি ডিভাইসের জন্য সিস্টেম আপডেট নীতি সেট করার সময়, অ্যান্ড্রয়েড এই পরীক্ষাগুলি পুনরাবৃত্তি করে এবং ডিভাইসের জন্য বর্তমান বা অতীতের ফ্রিজ পিরিয়ডগুলি অন্তর্ভুক্ত করে৷

এই পরীক্ষাগুলির মধ্যে যেকোনো একটি ব্যর্থ হলে Android একটি SystemUpdatePolicy.ValidationFailedException নিক্ষেপ করে৷

একটি সিস্টেম আপডেট নীতি অবজেক্টে আগে সেট করা ফ্রিজ পিরিয়ডের একটি তালিকা পেতে, সমস্ত ইনস্টল করা অ্যাপ SystemUpdatePolicy.getFreezePeriods() এ কল করতে পারে। নিম্নলিখিত উদাহরণটি একটি ডিভাইসের ফ্রিজ পিরিয়ড লগ করার জন্য এই পদ্ধতিটিকে কল করে:

কোটলিন

// Log any freeze periods that might be set on a system update policy.
dpm.systemUpdatePolicy?.freezePeriods?.forEach {
    Log.i(TAG, "Freeze period: $it")
}

জাভা

// Log any freeze periods that might be set on a system update policy.
SystemUpdatePolicy currentPolicy = dpm.getSystemUpdatePolicy();
if (currentPolicy != null) { // A policy might not be set.
  for (FreezePeriod freezePeriod : currentPolicy.getFreezePeriods()) {
    Log.i(TAG, "Freeze period: " + freezePeriod.toString());
  }
}

লিপ বছর

অ্যান্ড্রয়েড আইএসও 8601 ক্যালেন্ডার ব্যবহার করে (যাকে গ্রেগরিয়ান ক্যালেন্ডারও বলা হয়) হিমায়িত সময়কাল গণনা করতে এবং এটি লিপ বছরগুলিকে উপেক্ষা করে। এর মানে হল যে 29 শে ফেব্রুয়ারী একটি বৈধ তারিখ হিসাবে স্বীকৃত নয় এবং এটিকে 28 শে ফেব্রুয়ারি হিসাবে বিবেচনা করা হয়৷ তাই ফ্রিজ পিরিয়ডের সময়কাল গণনা করার সময় 29 ফেব্রুয়ারি গণনা করা হয় না।

উন্নয়ন এবং পরীক্ষা

আপনি যখন আপনার DPC এর সিস্টেম আপডেট বৈশিষ্ট্যটি বিকাশ এবং পরীক্ষা করছেন, তখন আপনাকে অনেকগুলি ফ্রিজ পিরিয়ড তৈরি করতে হতে পারে। যেহেতু অ্যান্ড্রয়েড অতীতের ফ্রিজ পিরিয়ডের মধ্যে 60-দিনের ব্যবধানের জন্য পরীক্ষা করে, আপনি অতীতের সময়কালের রেকর্ডটি প্রথমে সাফ না করে একটি নতুন ফ্রিজ পিরিয়ড সেট করতে পারবেন না। ডিভাইসের ফ্রিজ পিরিয়ড রেকর্ড সাফ করতে, অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) শেলে নিম্নলিখিত কমান্ডটি চালান:

adb shell dpm clear-freeze-period-record

সিস্টেম আপডেটের জন্য ইউজার ইন্টারফেস অক্ষম আছে কিনা তা পরীক্ষা করে আপনি নিশ্চিত করতে পারেন যে একটি ডিভাইস ফ্রিজ সময়ের মধ্যে রয়েছে।

গুগল প্লে সিস্টেম আপডেট (মেইনলাইন)

Google Play সিস্টেম আপডেটগুলি (যাকে মেইনলাইন আপডেটও বলা হয়) স্বয়ংক্রিয়ভাবে ডাউনলোড হয় তবে ইনস্টল করার জন্য একটি ডিভাইস রিবুট প্রয়োজন। এই আপডেটগুলি একটি স্বয়ংক্রিয় রিবুট ট্রিগার করবে না এবং পরিবর্তে সেগুলি পরবর্তী ব্যবহারকারী, প্রশাসক বা নীতি চালু করা রিবুটে ইনস্টল করা হবে। সিস্টেম আপডেট নীতি দ্বারা ট্রিগার করা রিবুটগুলি সংশ্লিষ্ট Google/OEM সিস্টেম আপডেট এবং পূর্বে ডাউনলোড করা Google Play সিস্টেম আপডেটগুলি ইনস্টল করবে৷

সেটিংস > সম্বন্ধে > Android সংস্করণ > Google Play সিস্টেম আপডেটে নেভিগেট করেও Google Play সিস্টেম আপডেট ম্যানুয়ালি ইনস্টল করা যেতে পারে।

একটি আপডেট রোল ব্যাক

কিছু ক্ষেত্রে, Google Play System Update Rollbacks (GPSUR) টুলটি একটি সমস্যাযুক্ত Google Play সিস্টেম আপডেট ইনস্টলেশনের কারণে ডিভাইসের অবস্থা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে। এই টুলটি উন্নত ব্যবহারকারীদের দ্বারা ব্যবহার করা উচিত বা সহায়তা কর্মীদের দ্বারা এটি করার নির্দেশ দেওয়া উচিত কারণ এটি ডেটা ক্ষতির কারণ হতে পারে। এখানে কিভাবে GPSUR টুল ব্যবহার করবেন:

  1. যদি আপনার মেশিনে অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) চলমান থাকে, তবে এগিয়ে যাওয়ার আগে অ্যাডবি পরিষেবা বন্ধ করুন যাতে এটি রোলব্যাক প্রক্রিয়াতে হস্তক্ষেপ না করে। অ্যাডবি বন্ধ করতে, adb kill-server চালান।
  2. GPSUR টুল খুলুন
  3. টুলটিকে adb এর মাধ্যমে আপনার টেস্ট ডিভাইসের সাথে যোগাযোগ করার অনুমতি দিতে ADB অ্যাক্সেসের অনুমতি দিন ক্লিক করুন।
  4. নতুন ডিভাইস যোগ করুন ক্লিক করুন.
  5. তালিকা থেকে আপনার ডিভাইস নির্বাচন করুন এবং সংযোগ ক্লিক করুন. এই তালিকায় সম্পূর্ণ ডিভাইসের নাম নাও থাকতে পারে।
  6. আপনার ডিভাইসের স্ক্রিনে, এই কম্পিউটার থেকে সর্বদা অনুমতি দিন নির্বাচন করুন এবং USB ডিবাগিং সংযোগ গ্রহণ করতে ওকে ক্লিক করুন৷
  7. আপনার ব্রাউজারে সংযুক্ত ডিভাইস নির্বাচন করুন.
  8. আপনার ডিভাইসে রোলব্যাক উপলব্ধ থাকলে পৃষ্ঠার বোতাম পাঠ্যটি নো রোলব্যাক উপলব্ধ থেকে রোলব্যাক সাম্প্রতিক আপডেটগুলিতে স্যুইচ করা উচিত৷ রোলব্যাক সাম্প্রতিক আপডেটে ক্লিক করুন।
  9. নিশ্চিত করুন রোলব্যাক মোডেলের সতর্কতাগুলি পড়ুন এবং নিশ্চিত করুন ক্লিক করুন।
  10. রোলব্যাক সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন। একবার সম্পূর্ণ হলে, একটি রোলব্যাক সফল মডেল প্রদর্শিত হবে এবং ডিভাইসটি পুনরায় বুট হবে। এখন আপনার ডিভাইস আনপ্লাগ করা নিরাপদ।

অতিরিক্ত সম্পদ

সিস্টেম আপডেট সম্পর্কে আরও জানতে, অ্যান্ড্রয়েড ওপেন সোর্স প্রকল্পের OTA আপডেট ডকুমেন্টেশন পড়ুন।

,

এই বিকাশকারীর নির্দেশিকা ব্যাখ্যা করে যে কীভাবে আপনার ডিভাইস নীতি নিয়ন্ত্রক (DPC) ডিভাইস ব্যবহারকারীর হয়ে Android সিস্টেম আপডেটগুলি পরিচালনা করতে পারে৷

ভূমিকা

অ্যান্ড্রয়েড ডিভাইসগুলি সিস্টেম এবং অ্যাপ্লিকেশন সফ্টওয়্যারে ওভার-দ্য-এয়ার (OTA) আপডেটগুলি গ্রহণ এবং ইনস্টল করতে পারে৷ অ্যান্ড্রয়েড ডিভাইস ব্যবহারকারীকে জানায় যে একটি সিস্টেম আপডেট উপলব্ধ রয়েছে এবং ডিভাইস ব্যবহারকারী অবিলম্বে বা পরে আপডেটটি ইনস্টল করতে পারেন।

আপনার DPC ব্যবহার করে, একজন আইটি প্রশাসক ডিভাইস ব্যবহারকারীর জন্য সিস্টেম আপডেট পরিচালনা করতে পারেন। DPC একটি সম্পূর্ণরূপে পরিচালিত ডিভাইসের মালিক হতে পারে (একটি ডিভাইসের মালিক বলা হয়) বা একটি কাজের প্রোফাইলের মালিক হতে পারে (একটি প্রোফাইল মালিক বলা হয়)। সারণী 1 দেখায় কিভাবে ডিভাইস মালিকরা সিস্টেম আপডেট পরিচালনা করতে পারেন, যখন প্রোফাইল মালিকরা শুধুমাত্র সিস্টেম আপডেট সম্পর্কে তথ্য রিপোর্ট করতে পারেন।

সারণি 1 : DPC-তে উপলব্ধ কাজগুলি মালিকের মোডের উপর নির্ভর করে

টাস্ক ডিভাইস মালিক প্রোফাইল মালিক
মুলতুবি সিস্টেম আপডেটের জন্য চেক করুন
নতুন সিস্টেম আপডেট উপলব্ধ হলে কলব্যাক গ্রহণ করুন৷
Android সিস্টেম আপডেট ইনস্টল করার সময় নিয়ন্ত্রণ করতে একটি স্থানীয় আপডেট নীতি সেট করুন
জটিল সময়ের মধ্যে OS সংস্করণ হিমায়িত করুন

মুলতুবি আপডেটের জন্য চেক করুন

একটি মুলতুবি আপডেট হল একটি ডিভাইসের জন্য একটি সিস্টেম আপডেট যা এখনও ইনস্টল করা হয়নি৷ আপনার ডিপিসি আইটি প্রশাসকদের সাহায্য করতে পারে কোন ডিভাইসে সিস্টেম আপডেট মুলতুবি আছে তা পরীক্ষা করতে এবং সম্ভবত ডিভাইস ব্যবহারকারীদের দ্রুত গুরুত্বপূর্ণ আপডেট ইনস্টল করতে বলুন।

Android 8.0 (API লেভেল 26) বা উচ্চতর সংস্করণে চলমান ডিভাইস মালিক এবং প্রোফাইল মালিকরা একটি ডিভাইসের সিস্টেম আপডেট মুলতুবি আছে কিনা তা পরীক্ষা করতে পারেন। DevicePolicyManager.getPendingSystemUpdate() কল করুন যা ডিভাইসটি আপ টু ডেট থাকলে null দেয়। যদি একটি সিস্টেম আপডেট মুলতুবি থাকে, পদ্ধতিটি আপডেট সম্পর্কে তথ্য প্রদান করে।

একটি মুলতুবি আপডেট সম্পর্কে আরও জানুন

getPendingSystemUpdate() কল করার পরে আপনি মুলতুবি আপডেট সম্পর্কে আরও জানতে ফিরে আসা SystemUpdateInfo মানটি পরীক্ষা করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় যে ডিভাইসে একটি মুলতুবি আপডেট প্রথম উপলব্ধ হলে আপনি কীভাবে খুঁজে পেতে পারেন:

কোটলিন

val firstAvailable =
        dpm.getPendingSystemUpdate(adminName)?.receivedTime
firstAvailable?.let {
    Log.i(TAG, "Update first available: ${Date(firstAvailable)}")
}

জাভা

SystemUpdateInfo updateInfo = dpm.getPendingSystemUpdate(adminName);
if (updateInfo != null) {
  Long firstAvailable = updateInfo.getReceivedTime();
  Log.i(TAG, "Update first available: " + new Date(firstAvailable));
}

সিস্টেম কলব্যাক

যখন একটি আপডেট উপলব্ধ হয়, তখন Android সিস্টেম ডিভাইস মালিকদের নতুন আপডেট সম্পর্কে অবহিত করে৷ অ্যান্ড্রয়েড 8.0 বা উচ্চতর সংস্করণে, সিস্টেমটি প্রোফাইল মালিকদেরও অবহিত করে।

আপনার DeviceAdminReceiver সাবক্লাসে, onSystemUpdatePending() কলব্যাক ওভাররাইড করুন। কলব্যাক পাওয়ার জন্য আপনাকে আপনার DPC-এর জন্য নিবন্ধন বা বিজ্ঞাপন দেওয়ার দরকার নেই। সিস্টেম একটি একক আপডেটের জন্য এই পদ্ধতিটিকে একাধিকবার কল করতে পারে তাই প্রতিক্রিয়া দেওয়ার আগে আপডেটের স্থিতি পরীক্ষা করুন৷ কলব্যাকে সিস্টেম আপডেট সম্পর্কে আরও জানতে getPendingSystemUpdate() এ কল করুন। নিম্নলিখিত উদাহরণ দেখায় কিভাবে আপনি এটি করতে পারেন:

কোটলিন

/**
 * Called when a new update is available.
 */
override fun onSystemUpdatePending(context: Context?, intent: Intent?,
                                   receivedTime: Long) {

    // System update information is supported in API level 26 or higher.
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
        return
    }

    val updateInfo = getManager(context)
            .getPendingSystemUpdate(getWho(context))
            ?: return
    if (updateInfo.securityPatchState ==
            SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
        // Perhaps install because this is a security patch.
        // ...
    }
}

জাভা

/**
 * Called when a new update is available.
 */
public void onSystemUpdatePending (Context context, Intent intent,
                                   long receivedTime) {

  // System update information is supported in API level 26 or higher.
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
    return;
  }
  SystemUpdateInfo updateInfo = getManager(context)
      .getPendingSystemUpdate(getWho(context));
  if (updateInfo == null) {
    return;
  }
  if (updateInfo.getSecurityPatchState() ==
      SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
    // Perhaps install because this is a security patch.
    // ...
  }
}

যখন একটি সিস্টেমে একাধিক DPC থাকে, উদাহরণস্বরূপ সম্পূর্ণরূপে পরিচালিত ডিভাইসে কাজের প্রোফাইল, ডিভাইস মালিক এবং প্রোফাইল মালিক উভয়ই কলব্যাক গ্রহণ করেন।

আপডেট নীতি

একটি ডিভাইসের মালিক একটি ডিভাইসের জন্য একটি স্থানীয় সিস্টেম আপডেট নীতি সেট করে আপডেটগুলি ইনস্টল করার সময় নিয়ন্ত্রণ করতে পারেন৷ সিস্টেম আপডেট নীতি তিন ধরনের হতে পারে:

স্বয়ংক্রিয়
সিস্টেম আপডেটগুলি উপলব্ধ হওয়ার সাথে সাথে ইনস্টল করে (ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই)। এই নীতির ধরন সেট করা অবিলম্বে কোনো মুলতুবি আপডেট ইনস্টল করে যা স্থগিত হতে পারে বা রক্ষণাবেক্ষণ উইন্ডোর জন্য অপেক্ষা করতে পারে।
জানালাযুক্ত
একটি দৈনিক রক্ষণাবেক্ষণ উইন্ডোর সময় সিস্টেম আপডেট ইনস্টল করে (ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই)। একটি নতুন উইন্ডোযুক্ত নীতি তৈরি করার সময়, দিনের মিনিট হিসাবে, দৈনিক রক্ষণাবেক্ষণ উইন্ডোর শুরু এবং শেষ সেট করুন।
স্থগিত
সিস্টেম আপডেটের ইনস্টলেশন 30 দিনের জন্য স্থগিত করে। 30-দিনের মেয়াদ শেষ হওয়ার পরে, সিস্টেমটি ডিভাইস ব্যবহারকারীকে আপডেটটি ইনস্টল করার জন্য অনুরোধ করে।

স্থগিত সময়কাল

সিস্টেম প্রতিটি আপডেটকে 30-দিন স্থগিত করার জন্য সীমাবদ্ধ করে। সময়কাল শুরু হয় যখন সিস্টেমটি প্রথম আপডেট স্থগিত করে এবং নতুন স্থগিত নীতি সেট করা সময়কাল বাড়ানো হবে না।

স্থগিত করা ছাড়াও, সংযোগ নেই, অপর্যাপ্ত ডিস্ক স্থান, বা কম ব্যাটারির মতো অন্যান্য কারণে Android একটি আপডেট ইনস্টল করতে সক্ষম নাও হতে পারে।

সিস্টেমটি 30-দিনের স্থগিত টাইমার রিসেট করে যদি এই সময়ের মধ্যে একটি ভিন্ন আপডেট উপলব্ধ হয় - আইটি প্রশাসকদের সম্মিলিত সিস্টেম আপডেটগুলি চেষ্টা করার সুযোগ দেয়৷ একবার নতুন আপডেট ছাড়াই 30 দিন অতিবাহিত হয়ে গেলে, সিস্টেম ব্যবহারকারীকে সমস্ত মুলতুবি আপডেটগুলি ইনস্টল করতে অনুরোধ করে। পরে, যখন একটি নতুন সিস্টেম আপডেট উপলব্ধ হয়, 30-দিনের মেয়াদ আবার শুরু হয়।

একটি নীতি নির্ধারণ কিভাবে

আপনি Android 8.0 (API স্তর 26) বা উচ্চতর সংস্করণে আপডেট নীতি সেট করতে পারেন৷ ডিভাইসটি কখন সিস্টেম আপডেটগুলি ইনস্টল করবে তা নির্দিষ্ট করতে, উপরে বর্ণিত তিনটি প্রকারের একটি ব্যবহার করে SystemUpdatePolicy এর একটি উদাহরণ তৈরি করুন৷ একটি নীতি সেট করতে, আপনার ডিভাইসের মালিক DevicePolicyManager মেথড setSystemUpdatePolicy() কল করে। নিম্নলিখিত কোড নমুনা দেখায় কিভাবে আপনি এটি করতে পারেন. একটি উইন্ডোড-নীতির উদাহরণ দেখতে, SystemUpdatePolicy ডকুমেন্টেশন দেখুন।

কোটলিন

// Create the system update policy to postpone installation for 30 days.
val policy = SystemUpdatePolicy.createPostponeInstallPolicy()

// Get a DevicePolicyManager instance to set the policy on the device.
val dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE)
        as DevicePolicyManager
val adminName = getComponentName(context)

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy)

জাভা

// Create the system update policy to postpone installation for 30 days.
SystemUpdatePolicy policy = SystemUpdatePolicy.createPostponeInstallPolicy();

// Get a DevicePolicyManager instance to set the policy on the device.
DevicePolicyManager dpm = (DevicePolicyManager) context
    .getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminName = getComponentName(context);

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy);

নীতির দৃষ্টান্তগুলি তৈরি করার পরে পরিবর্তন করা যাবে না৷ একটি ডিভাইস আপডেট ইনস্টল করার সময় পরিবর্তন করতে, আপনি একটি নতুন নীতি তৈরি করতে এবং সেট করতে পারেন৷ একটি ডিভাইস থেকে একটি নীতি সরাতে, policy যুক্তি হিসাবে setSystemUpdatePolicy() পাসিং null কল করুন। আপনার ডিপিসি একটি নীতি সরানোর পরে, ডিভাইস ব্যবহারকারী যেকোন উপলব্ধ সিস্টেম আপডেটের জন্য বিজ্ঞপ্তিগুলি দেখতে পান।

অ্যাপগুলি ডিভাইসের বর্তমান নীতি পেতে getSystemUpdatePolicy() কল করতে পারে। যদি এই পদ্ধতিটি null প্রদান করে, তাহলে এর মানে হল একটি নীতি বর্তমানে সেট করা নেই।

ফ্রিজ পিরিয়ড

ছুটির দিন বা অন্যান্য ব্যস্ত সময়ের মতো জটিল সময়গুলিতে OS সংস্করণ হিমায়িত করতে, ডিভাইস মালিকরা 90 দিন পর্যন্ত সিস্টেম আপডেট স্থগিত করতে পারেন। যখন একটি ডিভাইস হিমায়িত সময়ের মধ্যে থাকে তখন এটি নিম্নরূপ আচরণ করে:

  • মুলতুবি থাকা সিস্টেম আপডেট সম্পর্কে ডিভাইসটি কোনো বিজ্ঞপ্তি পায় না।
  • OS-এ সিস্টেম আপডেট ইনস্টল করা নেই।
  • ডিভাইস ব্যবহারকারীরা ম্যানুয়ালি সেটিংসে সিস্টেম আপডেট চেক করতে পারবেন না।

ডিভাইসটিকে অনির্দিষ্টকালের জন্য হিমায়িত করা রোধ করতে সিস্টেমটি যেকোন সংজ্ঞায়িত ফ্রিজ পিরিয়ড অনুসরণ করে একটি বাধ্যতামূলক 60-দিনের বাফার পিরিয়ড প্রয়োগ করে। মনে রাখবেন, হিমায়িত সিস্টেম আপডেটগুলি ডিভাইসগুলিকে সমালোচনামূলক আপডেটগুলি পেতে বাধা দিতে পারে।

চিত্র 1. একটি ডিভাইসের জন্য দুটি ফ্রিজ পিরিয়ড সেট করা হয়েছে৷
ক্যালেন্ডার 60-দিনের বাফার সহ এক বছরে দুটি ফ্রিজ পিরিয়ড দেখাচ্ছে।

আপনি একটি আপডেট নীতিতে ফ্রিজ পিরিয়ড সেট করেন। আপনি একটি নীতি সেট না করে ফ্রিজ পিরিয়ড সেট করতে পারবেন না৷ ডিভাইসটি আপনার সেট করা যেকোনো ফ্রিজ পিরিয়ডের বাইরে থাকলে, স্বাভাবিক নীতি আচরণ (স্বয়ংক্রিয়, উইন্ডো করা বা স্থগিত) প্রযোজ্য হয়।

হিমায়িত সময়কাল কীভাবে সেট করবেন

আপনি Android 9 (API লেভেল 28) বা উচ্চতর তে ফ্রিজ পিরিয়ড সেট করতে পারেন। একটি ডিভাইসের মালিক ডিভাইসের জন্য নীতি সেট করার আগে একটি সিস্টেম আপডেট নীতিতে একটি ফ্রিজ পিরিয়ড সেট করে। ধাপগুলো হল:

  1. একটি নতুন (বা বর্তমান পান) সিস্টেম আপডেট নীতি তৈরি করুন৷
  2. setFreezePeriods() কল করে পলিসিতে ফ্রিজ পিরিয়ড সেট করুন।
  3. setSystemUpdatePolicy() এ কল করে ডিভাইসের জন্য নীতি সেট করুন এবং সময়কাল ফ্রিজ করুন।

যেহেতু ফ্রিজ পিরিয়ড বার্ষিক পুনরাবৃত্তি হয়, পিরিয়ডের শুরু এবং শেষ তারিখগুলি মাস এবং দিনের মান দ্বারা উপস্থাপিত হয়। প্রারম্ভিক দিনটি পূর্ববর্তী যেকোন ফ্রিজ পিরিয়ড শেষ হওয়ার কমপক্ষে 60 দিন পরে শুরু হতে হবে। নিম্নলিখিত উদাহরণ দেখায় কিভাবে আপনি একটি বিদ্যমান সিস্টেম আপডেট নীতির জন্য দুটি ফ্রিজ পিরিয়ড সেট করতে পারেন:

কোটলিন

// Get the existing policy from the DevicePolicyController instance.
val policy = dpm.systemUpdatePolicy ?: return

try {
    // Set the two annual freeze periods on the policy for our retail
    // point-of-sale devices.
    val summerSale = FreezePeriod(
            MonthDay.of(6, 1),
            MonthDay.of(7, 31)) // Jun 1 - Jul 31 inclusive
    val winterSale = FreezePeriod(
            MonthDay.of(11, 20),
            MonthDay.of(1, 12)) // Nov 20 - Jan 12 inclusive
    policy.freezePeriods = Arrays.asList(summerSale, winterSale)

    // Set the policy again to activate the freeze periods.
    dpm.setSystemUpdatePolicy(adminName, policy)

} catch (e: SystemUpdatePolicy.ValidationFailedException) {
    // There must be previous periods recorded on the device because
    // summerSale and winterSale don’t overlap and are separated by more
    // than 60 days. Report the overlap ...
}

জাভা

// Get the existing policy from the DevicePolicyController instance.
SystemUpdatePolicy policy = dpm.getSystemUpdatePolicy();

try {
  // Set the two annual freeze periods on the policy for our
  // retail point-of-sale devices.
  FreezePeriod summerSale = new FreezePeriod(
      MonthDay.of(6, 1),
      MonthDay.of(7, 31)); // Jun 1 - Jul 31 inclusive
  FreezePeriod winterSale = new FreezePeriod(
      MonthDay.of(11, 20),
      MonthDay.of(1, 12)); // Nov 20 - Jan 12 inclusive
  policy.setFreezePeriods(Arrays.asList(summerSale, winterSale));

  // Don’t forget to set the policy again to activate the freeze periods.
  dpm.setSystemUpdatePolicy(adminName, policy);

} catch (SystemUpdatePolicy.ValidationFailedException e) {
  // There must be previous periods recorded on the device because summerSale
  // and winterSale don’t overlap and are separated by more than 60 days.
  // Report the overlap ...
}

শুরুর দিন এবং শেষ দিন উভয়ই অন্তর্ভুক্ত। যদি শুরুর দিনটি শেষের দিনের চেয়ে বেশি হয় (যেমন পূর্বের উদাহরণে winterSale ), হিমায়িত সময় পরের বছর পর্যন্ত প্রসারিত হয়।

একটি সিস্টেম আপডেট নীতিতে ফ্রিজ পিরিয়ড সেট করার সময়, এই প্রয়োজনীয়তার জন্য Android পরীক্ষা করে:

  • কোন হিমায়িত সময়কাল 90 দিনের বেশি নয়।
  • হিমায়িত সময়ের মধ্যে ব্যবধান কমপক্ষে 60 দিন।
  • ফ্রিজ পিরিয়ড ওভারল্যাপ হয় না।
  • কোনো ডুপ্লিকেট ফ্রিজ পিরিয়ড নেই।

একটি ডিভাইসের জন্য সিস্টেম আপডেট নীতি সেট করার সময়, অ্যান্ড্রয়েড এই পরীক্ষাগুলি পুনরাবৃত্তি করে এবং ডিভাইসের জন্য বর্তমান বা অতীতের ফ্রিজ পিরিয়ডগুলি অন্তর্ভুক্ত করে৷

এই পরীক্ষাগুলির মধ্যে যেকোনো একটি ব্যর্থ হলে Android একটি SystemUpdatePolicy.ValidationFailedException নিক্ষেপ করে৷

একটি সিস্টেম আপডেট নীতি অবজেক্টে আগে সেট করা ফ্রিজ পিরিয়ডের একটি তালিকা পেতে, সমস্ত ইনস্টল করা অ্যাপ SystemUpdatePolicy.getFreezePeriods() এ কল করতে পারে। নিম্নলিখিত উদাহরণটি একটি ডিভাইসের ফ্রিজ পিরিয়ড লগ করার জন্য এই পদ্ধতিটিকে কল করে:

কোটলিন

// Log any freeze periods that might be set on a system update policy.
dpm.systemUpdatePolicy?.freezePeriods?.forEach {
    Log.i(TAG, "Freeze period: $it")
}

জাভা

// Log any freeze periods that might be set on a system update policy.
SystemUpdatePolicy currentPolicy = dpm.getSystemUpdatePolicy();
if (currentPolicy != null) { // A policy might not be set.
  for (FreezePeriod freezePeriod : currentPolicy.getFreezePeriods()) {
    Log.i(TAG, "Freeze period: " + freezePeriod.toString());
  }
}

লিপ বছর

অ্যান্ড্রয়েড আইএসও 8601 ক্যালেন্ডার ব্যবহার করে (যাকে গ্রেগরিয়ান ক্যালেন্ডারও বলা হয়) হিমায়িত সময়কাল গণনা করতে এবং এটি লিপ বছরগুলিকে উপেক্ষা করে। এর মানে হল যে 29 শে ফেব্রুয়ারী একটি বৈধ তারিখ হিসাবে স্বীকৃত নয় এবং এটিকে 28 শে ফেব্রুয়ারি হিসাবে বিবেচনা করা হয়৷ তাই ফ্রিজ পিরিয়ডের সময়কাল গণনা করার সময় 29 ফেব্রুয়ারি গণনা করা হয় না।

উন্নয়ন এবং পরীক্ষা

আপনি যখন আপনার DPC এর সিস্টেম আপডেট বৈশিষ্ট্যটি বিকাশ এবং পরীক্ষা করছেন, তখন আপনাকে অনেকগুলি ফ্রিজ পিরিয়ড তৈরি করতে হতে পারে। যেহেতু অ্যান্ড্রয়েড অতীতের ফ্রিজ পিরিয়ডের মধ্যে 60-দিনের ব্যবধানের জন্য পরীক্ষা করে, আপনি অতীতের সময়কালের রেকর্ডটি প্রথমে সাফ না করে একটি নতুন ফ্রিজ পিরিয়ড সেট করতে পারবেন না। ডিভাইসের ফ্রিজ পিরিয়ড রেকর্ড সাফ করতে, অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) শেলে নিম্নলিখিত কমান্ডটি চালান:

adb shell dpm clear-freeze-period-record

সিস্টেম আপডেটের জন্য ইউজার ইন্টারফেস অক্ষম আছে কিনা তা পরীক্ষা করে আপনি নিশ্চিত করতে পারেন যে একটি ডিভাইস ফ্রিজ সময়ের মধ্যে রয়েছে।

গুগল প্লে সিস্টেম আপডেট (মেইনলাইন)

Google Play সিস্টেম আপডেটগুলি (যাকে মেইনলাইন আপডেটও বলা হয়) স্বয়ংক্রিয়ভাবে ডাউনলোড হয় তবে ইনস্টল করার জন্য একটি ডিভাইস রিবুট প্রয়োজন। এই আপডেটগুলি একটি স্বয়ংক্রিয় রিবুট ট্রিগার করবে না এবং পরিবর্তে সেগুলি পরবর্তী ব্যবহারকারী, প্রশাসক বা নীতি চালু করা রিবুটে ইনস্টল করা হবে। সিস্টেম আপডেট নীতি দ্বারা ট্রিগার করা রিবুটগুলি সংশ্লিষ্ট Google/OEM সিস্টেম আপডেট এবং পূর্বে ডাউনলোড করা Google Play সিস্টেম আপডেটগুলি ইনস্টল করবে৷

সেটিংস > সম্বন্ধে > Android সংস্করণ > Google Play সিস্টেম আপডেটে নেভিগেট করেও Google Play সিস্টেম আপডেট ম্যানুয়ালি ইনস্টল করা যেতে পারে।

একটি আপডেট রোল ব্যাক

কিছু ক্ষেত্রে, Google Play System Update Rollbacks (GPSUR) টুলটি একটি সমস্যাযুক্ত Google Play সিস্টেম আপডেট ইনস্টলেশনের কারণে ডিভাইসের অবস্থা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে। এই টুলটি উন্নত ব্যবহারকারীদের দ্বারা ব্যবহার করা উচিত বা সহায়তা কর্মীদের দ্বারা এটি করার নির্দেশ দেওয়া উচিত কারণ এটি ডেটা ক্ষতির কারণ হতে পারে। এখানে কিভাবে GPSUR টুল ব্যবহার করবেন:

  1. যদি আপনার মেশিনে অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) চলমান থাকে, তবে এগিয়ে যাওয়ার আগে অ্যাডবি পরিষেবা বন্ধ করুন যাতে এটি রোলব্যাক প্রক্রিয়াতে হস্তক্ষেপ না করে। অ্যাডবি বন্ধ করতে, adb kill-server চালান।
  2. GPSUR টুল খুলুন
  3. টুলটিকে adb এর মাধ্যমে আপনার টেস্ট ডিভাইসের সাথে যোগাযোগ করার অনুমতি দিতে ADB অ্যাক্সেসের অনুমতি দিন ক্লিক করুন।
  4. নতুন ডিভাইস যোগ করুন ক্লিক করুন.
  5. তালিকা থেকে আপনার ডিভাইস নির্বাচন করুন এবং সংযোগ ক্লিক করুন. এই তালিকায় সম্পূর্ণ ডিভাইসের নাম নাও থাকতে পারে।
  6. আপনার ডিভাইসের স্ক্রিনে, এই কম্পিউটার থেকে সর্বদা অনুমতি দিন নির্বাচন করুন এবং USB ডিবাগিং সংযোগ গ্রহণ করতে ওকে ক্লিক করুন৷
  7. আপনার ব্রাউজারে সংযুক্ত ডিভাইস নির্বাচন করুন.
  8. আপনার ডিভাইসে রোলব্যাক উপলব্ধ থাকলে পৃষ্ঠার বোতাম পাঠ্যটি নো রোলব্যাক উপলব্ধ থেকে রোলব্যাক সাম্প্রতিক আপডেটগুলিতে স্যুইচ করা উচিত৷ রোলব্যাক সাম্প্রতিক আপডেটে ক্লিক করুন।
  9. নিশ্চিত করুন রোলব্যাক মোডেলের সতর্কতাগুলি পড়ুন এবং নিশ্চিত করুন ক্লিক করুন।
  10. রোলব্যাক সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন। একবার সম্পূর্ণ হয়ে গেলে, একটি রোলব্যাক সফল মডেল উপস্থিত হবে এবং ডিভাইসটি পুনরায় বুট করবে। আপনার ডিভাইসটি প্লাগ করা এখন নিরাপদ।

অতিরিক্ত সম্পদ

সিস্টেম আপডেটগুলি সম্পর্কে আরও জানতে, অ্যান্ড্রয়েড ওপেন সোর্স প্রকল্পের ওটিএ আপডেট ডকুমেন্টেশন পড়ুন।

,

এই বিকাশকারী গাইডটি ব্যাখ্যা করে যে কীভাবে আপনার ডিভাইস পলিসি কন্ট্রোলার (ডিপিসি) ডিভাইস ব্যবহারকারীর পক্ষে অ্যান্ড্রয়েড সিস্টেম আপডেটগুলি পরিচালনা করতে পারে।

ভূমিকা

অ্যান্ড্রয়েড ডিভাইসগুলি সিস্টেম এবং অ্যাপ্লিকেশন সফ্টওয়্যারটিতে ওভার-দ্য এয়ার (ওটিএ) আপডেটগুলি গ্রহণ এবং ইনস্টল করতে পারে। অ্যান্ড্রয়েড ডিভাইস ব্যবহারকারীকে অবহিত করে যে একটি সিস্টেম আপডেট উপলব্ধ এবং ডিভাইস ব্যবহারকারী তাত্ক্ষণিকভাবে বা পরে আপডেটটি ইনস্টল করতে পারে।

আপনার ডিপিসি ব্যবহার করে, একটি আইটি অ্যাডমিন ডিভাইস ব্যবহারকারীর জন্য সিস্টেম আপডেটগুলি পরিচালনা করতে পারে। ডিপিসিগুলি সম্পূর্ণরূপে পরিচালিত ডিভাইসের মালিক হতে পারে (একটি ডিভাইস মালিক বলা হয়) বা কোনও কাজের প্রোফাইলের মালিক হতে পারে (যাকে প্রোফাইলের মালিক বলা হয়)। সারণী 1 দেখায় যে ডিভাইস মালিকরা কীভাবে সিস্টেম আপডেটগুলি পরিচালনা করতে পারে, অন্যদিকে প্রোফাইল মালিকরা কেবল সিস্টেম আপডেট সম্পর্কে তথ্য প্রতিবেদন করতে পারেন।

সারণী 1 : ডিপিসিগুলিতে উপলব্ধ কাজগুলি মালিকের মোডের উপর নির্ভর করে

টাস্ক ডিভাইস মালিক প্রোফাইল মালিক
মুলতুবি সিস্টেম আপডেটগুলির জন্য পরীক্ষা করুন
নতুন সিস্টেমের আপডেটগুলি উপলব্ধ হয়ে গেলে কলব্যাকগুলি পান
অ্যান্ড্রয়েড সিস্টেম আপডেটগুলি ইনস্টল করার সময় নিয়ন্ত্রণ করতে একটি স্থানীয় আপডেট নীতি সেট করুন
সমালোচনামূলক সময়কালে ওএস সংস্করণটি হিমায়িত করুন

মুলতুবি আপডেটের জন্য চেক করুন

একটি মুলতুবি আপডেট এমন একটি ডিভাইসের জন্য একটি সিস্টেম আপডেট যা এখনও ইনস্টল করা হয়নি। আপনার ডিপিসি এটিকে প্রশাসকদের সহায়তা করতে পারে যা কোন ডিভাইসে মুলতুবি সিস্টেমের আপডেট রয়েছে - এবং সম্ভবত ডিভাইস ব্যবহারকারীদের তাত্ক্ষণিকভাবে সমালোচনামূলক আপডেটগুলি ইনস্টল করতে বলুন।

ডিভাইস মালিক এবং প্রোফাইল মালিকরা অ্যান্ড্রয়েড 8.0 (এপিআই স্তর 26) বা উচ্চতরভাবে চলমান কোনও ডিভাইসে কোনও মুলতুবি সিস্টেম আপডেট রয়েছে কিনা তা পরীক্ষা করতে পারে। DevicePolicyManager.getPendingSystemUpdate() কল করুন null যদি কোনও সিস্টেম আপডেট মুলতুবি থাকে তবে পদ্ধতিটি আপডেট সম্পর্কে তথ্য দেয়।

মুলতুবি আপডেট সম্পর্কে আরও সন্ধান করুন

getPendingSystemUpdate() কল করার পরে আপনি মুলতুবি আপডেট সম্পর্কে আরও জানতে ফেরত SystemUpdateInfo মানটি পরীক্ষা করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় যে ডিভাইসে যখন কোনও মুলতুবি আপডেট প্রথম উপলব্ধ ছিল তখন আপনি কীভাবে খুঁজে পেতে পারেন:

কোটলিন

val firstAvailable =
        dpm.getPendingSystemUpdate(adminName)?.receivedTime
firstAvailable?.let {
    Log.i(TAG, "Update first available: ${Date(firstAvailable)}")
}

জাভা

SystemUpdateInfo updateInfo = dpm.getPendingSystemUpdate(adminName);
if (updateInfo != null) {
  Long firstAvailable = updateInfo.getReceivedTime();
  Log.i(TAG, "Update first available: " + new Date(firstAvailable));
}

সিস্টেম কলব্যাকস

যখন কোনও আপডেট উপলভ্য হয়, অ্যান্ড্রয়েড সিস্টেমটি ডিভাইসের মালিকদের নতুন আপডেট সম্পর্কে অবহিত করে। অ্যান্ড্রয়েড 8.0 বা উচ্চতর ক্ষেত্রে, সিস্টেমটি প্রোফাইলের মালিকদেরও অবহিত করে।

আপনার DeviceAdminReceiver সাবক্লাসে, onSystemUpdatePending() কলব্যাককে ওভাররাইড করুন। কলব্যাকটি পাওয়ার জন্য আপনার ডিপিসির জন্য নিবন্ধন বা বিজ্ঞাপন দেওয়ার দরকার নেই। সিস্টেমটি একক আপডেটের জন্য এই পদ্ধতিটিকে একাধিকবার কল করতে পারে তাই প্রতিক্রিয়া জানানোর আগে আপডেটের স্থিতি পরীক্ষা করুন। কলব্যাকের সিস্টেম আপডেট সম্পর্কে আরও জানতে getPendingSystemUpdate() কল করুন। নিম্নলিখিত উদাহরণটি দেখায় যে আপনি কীভাবে এটি করতে পারেন:

কোটলিন

/**
 * Called when a new update is available.
 */
override fun onSystemUpdatePending(context: Context?, intent: Intent?,
                                   receivedTime: Long) {

    // System update information is supported in API level 26 or higher.
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
        return
    }

    val updateInfo = getManager(context)
            .getPendingSystemUpdate(getWho(context))
            ?: return
    if (updateInfo.securityPatchState ==
            SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
        // Perhaps install because this is a security patch.
        // ...
    }
}

জাভা

/**
 * Called when a new update is available.
 */
public void onSystemUpdatePending (Context context, Intent intent,
                                   long receivedTime) {

  // System update information is supported in API level 26 or higher.
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
    return;
  }
  SystemUpdateInfo updateInfo = getManager(context)
      .getPendingSystemUpdate(getWho(context));
  if (updateInfo == null) {
    return;
  }
  if (updateInfo.getSecurityPatchState() ==
      SystemUpdateInfo.SECURITY_PATCH_STATE_TRUE) {
    // Perhaps install because this is a security patch.
    // ...
  }
}

যখন কোনও সিস্টেমে একাধিক ডিপিসি থাকে, উদাহরণস্বরূপ সম্পূর্ণরূপে পরিচালিত ডিভাইসে কাজের প্রোফাইলগুলি, ডিভাইসের মালিক এবং প্রোফাইলের মালিক উভয়ই কলব্যাক পান।

নীতি আপডেট করুন

কোনও ডিভাইসের জন্য স্থানীয় সিস্টেম আপডেট নীতি নির্ধারণ করে আপডেটগুলি ইনস্টল করা হলে কোনও ডিভাইস মালিক নিয়ন্ত্রণ করতে পারেন। সিস্টেম আপডেট নীতি তিন ধরণের মধ্যে একটি হতে পারে:

স্বয়ংক্রিয়
সিস্টেম আপডেটগুলি উপলব্ধ হওয়ার সাথে সাথে ইনস্টল করে (ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়াই)। এই নীতি প্রকারটি সেট করা অবিলম্বে কোনও মুলতুবি আপডেটগুলি ইনস্টল করে যা স্থগিত হতে পারে বা রক্ষণাবেক্ষণ উইন্ডোর জন্য অপেক্ষা করতে পারে।
জানালাযুক্ত
দৈনিক রক্ষণাবেক্ষণ উইন্ডো চলাকালীন সিস্টেম আপডেটগুলি ইনস্টল করে (ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়াই)। একটি নতুন উইন্ডোড নীতি তৈরি করার সময় দিনের কয়েক মিনিট হিসাবে দৈনিক রক্ষণাবেক্ষণ উইন্ডোটির শুরু এবং শেষ সেট করুন।
স্থগিত
30 দিনের জন্য সিস্টেম আপডেটগুলি ইনস্টলেশন স্থগিত করে। 30 দিনের সময় শেষ হওয়ার পরে, সিস্টেমটি ডিভাইস ব্যবহারকারীকে আপডেটটি ইনস্টল করতে অনুরোধ করে।

স্থগিতের সময়কাল

সিস্টেমটি প্রতিটি আপডেটকে একটি 30 দিনের স্থগিতের মধ্যে সীমাবদ্ধ করে। সময়টি শুরু হয় যখন সিস্টেমটি প্রথম আপডেটটি স্থগিত করে এবং নতুন স্থগিতাদেশ নীতি নির্ধারণ করে পিরিয়ডটি বাড়িয়ে দেয় না।

স্থগিতকরণ ছাড়াও, অ্যান্ড্রয়েড অন্যান্য কারণে যেমন সংযোগ, অপর্যাপ্ত ডিস্কের স্থান বা কম ব্যাটারি হিসাবে কোনও আপডেট ইনস্টল করতে সক্ষম নাও হতে পারে।

সিস্টেমটি 30 দিনের স্থগিতাদেশের টাইমার পুনরায় সেট করে যদি পিরিয়ডের সময় কোনও আলাদা আপডেট পাওয়া যায়-এটি সম্মিলিত সিস্টেম আপডেটগুলি চেষ্টা করার সুযোগকে প্রশ্রয় দেয়। 30 দিন একবার নতুন আপডেট ছাড়াই কেটে গেলে, সিস্টেমটি ব্যবহারকারীকে সমস্ত মুলতুবি আপডেটগুলি ইনস্টল করতে অনুরোধ করে। পরে, যখন একটি নতুন সিস্টেম আপডেট পাওয়া যায়, 30 দিনের সময়কাল আবার শুরু হয়।

কিভাবে একটি নীতি সেট

আপনি অ্যান্ড্রয়েড 8.0 (এপিআই স্তর 26) বা উচ্চতর এ আপডেট নীতিগুলি সেট করতে পারেন। ডিভাইসটি কখন সিস্টেম আপডেটগুলি ইনস্টল করা উচিত তা নির্দিষ্ট করতে, উপরে বর্ণিত তিন ধরণের একটি ব্যবহার করে SystemUpdatePolicy একটি উদাহরণ তৈরি করুন। নীতি নির্ধারণের জন্য, আপনার ডিভাইসের মালিক DevicePolicyManager পদ্ধতি setSystemUpdatePolicy() কে কল করে। নিম্নলিখিত কোড নমুনাটি দেখায় যে আপনি কীভাবে এটি করতে পারেন। একটি উইন্ডোড-পলিসি উদাহরণ দেখতে, SystemUpdatePolicy ডকুমেন্টেশনটি দেখুন।

কোটলিন

// Create the system update policy to postpone installation for 30 days.
val policy = SystemUpdatePolicy.createPostponeInstallPolicy()

// Get a DevicePolicyManager instance to set the policy on the device.
val dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE)
        as DevicePolicyManager
val adminName = getComponentName(context)

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy)

জাভা

// Create the system update policy to postpone installation for 30 days.
SystemUpdatePolicy policy = SystemUpdatePolicy.createPostponeInstallPolicy();

// Get a DevicePolicyManager instance to set the policy on the device.
DevicePolicyManager dpm = (DevicePolicyManager) context
    .getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminName = getComponentName(context);

// Set the policy.
dpm.setSystemUpdatePolicy(adminName, policy);

আপনি একবার তৈরি করার পরে নীতিগত উদাহরণগুলি পরিবর্তন করা যাবে না। কোনও ডিভাইস আপডেট ইনস্টল করার সময় পরিবর্তন করতে আপনি একটি নতুন নীতি তৈরি এবং সেট করতে পারেন। কোনও ডিভাইস থেকে কোনও নীতি অপসারণ করতে, setSystemUpdatePolicy() কল করুন policy যুক্তি হিসাবে null পাস করুন। আপনার ডিপিসি কোনও নীতি অপসারণের পরে, ডিভাইস ব্যবহারকারী কোনও উপলব্ধ সিস্টেম আপডেটের জন্য বিজ্ঞপ্তিগুলি দেখেন।

অ্যাপ্লিকেশনগুলি ডিভাইসের জন্য বর্তমান নীতি পেতে getSystemUpdatePolicy() কল করতে পারে। যদি এই পদ্ধতিটি null হয় তবে এর অর্থ একটি নীতি বর্তমানে সেট করা হয়নি।

ফ্রিজ পিরিয়ড

ছুটির দিন বা অন্যান্য ব্যস্ত সময়গুলির মতো সমালোচনামূলক সময়কালে ওএস সংস্করণটি হিমায়িত করতে, ডিভাইস মালিকরা 90 দিনের জন্য সিস্টেম আপডেটগুলি স্থগিত করতে পারেন। যখন কোনও ডিভাইস হিমশীতল সময়ের মধ্যে থাকে তখন এটি নিম্নলিখিত আচরণ করে:

  • ডিভাইসটি মুলতুবি সিস্টেমের আপডেটগুলি সম্পর্কে কোনও বিজ্ঞপ্তি পায় না।
  • ওএসে সিস্টেম আপডেটগুলি ইনস্টল করা নেই।
  • ডিভাইস ব্যবহারকারীরা সেটিংসে সিস্টেম আপডেটগুলি ম্যানুয়ালি পরীক্ষা করতে পারবেন না।

ডিভাইসটিকে অনির্দিষ্টকালের জন্য হিমায়িত করতে কোনও সংজ্ঞায়িত ফ্রিজ পিরিয়ডের পরে সিস্টেমটি একটি বাধ্যতামূলক 60-দিনের বাফার সময়কাল প্রয়োগ করে। মনে রাখবেন, হিমায়িত সিস্টেম আপডেটগুলি ডিভাইসগুলিকে সমালোচনামূলক আপডেটগুলি পেতে বাধা দিতে পারে।

চিত্র 1. একটি ডিভাইসের জন্য দুটি ফ্রিজ পিরিয়ড সেট করা
ক্যালেন্ডারটি 60 দিনের বাফার সহ এক বছরে দুটি ফ্রিজ পিরিয়ড দেখায়।

আপনি একটি আপডেট নীতিতে ফ্রিজ পিরিয়ড সেট করেছেন। আপনি কোনও নীতি নির্ধারণ না করে ফ্রিজ পিরিয়ড সেট করতে পারবেন না। ডিভাইসটি যখন আপনার সেট করা কোনও হিমায়িত পিরিয়ডের বাইরে থাকে তখন সাধারণ নীতি আচরণ (স্বয়ংক্রিয়, উইন্ডোড বা স্থগিত) প্রযোজ্য।

কিভাবে একটি ফ্রিজ পিরিয়ড সেট করবেন

আপনি অ্যান্ড্রয়েড 9 (এপিআই স্তর 28) বা উচ্চতর এ ফ্রিজ পিরিয়ড সেট করতে পারেন। কোনও ডিভাইস মালিক ডিভাইসের জন্য নীতি নির্ধারণের আগে সিস্টেম আপডেট নীতিমালায় একটি ফ্রিজ পিরিয়ড সেট করে। ধাপগুলো হল:

  1. একটি নতুন (বা বর্তমান) সিস্টেম আপডেট নীতি তৈরি করুন।
  2. setFreezePeriods() কল করে নীতিমালায় ফ্রিজ পিরিয়ডগুলি সেট করুন।
  3. setSystemUpdatePolicy() কল করে ডিভাইসের জন্য নীতি এবং হিমায়িত পিরিয়ডগুলি সেট করুন।

যেহেতু ফ্রিজ পিরিয়ডটি বার্ষিক পুনরাবৃত্তি করে, সেই সময়ের শুরু এবং শেষের তারিখগুলি মাস এবং দিনের মান দ্বারা প্রতিনিধিত্ব করা হয়। প্রারম্ভিক দিনটি অবশ্যই আগের কোনও ফ্রিজ সময় শেষ হওয়ার কমপক্ষে 60 দিন পরে শুরু করতে হবে। নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে আপনি বিদ্যমান সিস্টেম আপডেট নীতিমালার জন্য দুটি ফ্রিজ পিরিয়ড সেট করতে পারেন:

কোটলিন

// Get the existing policy from the DevicePolicyController instance.
val policy = dpm.systemUpdatePolicy ?: return

try {
    // Set the two annual freeze periods on the policy for our retail
    // point-of-sale devices.
    val summerSale = FreezePeriod(
            MonthDay.of(6, 1),
            MonthDay.of(7, 31)) // Jun 1 - Jul 31 inclusive
    val winterSale = FreezePeriod(
            MonthDay.of(11, 20),
            MonthDay.of(1, 12)) // Nov 20 - Jan 12 inclusive
    policy.freezePeriods = Arrays.asList(summerSale, winterSale)

    // Set the policy again to activate the freeze periods.
    dpm.setSystemUpdatePolicy(adminName, policy)

} catch (e: SystemUpdatePolicy.ValidationFailedException) {
    // There must be previous periods recorded on the device because
    // summerSale and winterSale don’t overlap and are separated by more
    // than 60 days. Report the overlap ...
}

জাভা

// Get the existing policy from the DevicePolicyController instance.
SystemUpdatePolicy policy = dpm.getSystemUpdatePolicy();

try {
  // Set the two annual freeze periods on the policy for our
  // retail point-of-sale devices.
  FreezePeriod summerSale = new FreezePeriod(
      MonthDay.of(6, 1),
      MonthDay.of(7, 31)); // Jun 1 - Jul 31 inclusive
  FreezePeriod winterSale = new FreezePeriod(
      MonthDay.of(11, 20),
      MonthDay.of(1, 12)); // Nov 20 - Jan 12 inclusive
  policy.setFreezePeriods(Arrays.asList(summerSale, winterSale));

  // Don’t forget to set the policy again to activate the freeze periods.
  dpm.setSystemUpdatePolicy(adminName, policy);

} catch (SystemUpdatePolicy.ValidationFailedException e) {
  // There must be previous periods recorded on the device because summerSale
  // and winterSale don’t overlap and are separated by more than 60 days.
  // Report the overlap ...
}

শুরুর দিন এবং শেষ দিন উভয়ই অন্তর্ভুক্ত। যদি শুরুর দিনটি শেষ দিনের চেয়ে বেশি হয় (যেমন আগের উদাহরণে winterSale ), হিমায়িত সময়কালটি পরের বছর পর্যন্ত প্রসারিত হয়।

সিস্টেম আপডেট নীতিমালায় ফ্রিজ পিরিয়ড সেট করার সময়, এই প্রয়োজনীয়তার জন্য অ্যান্ড্রয়েড পরীক্ষা:

  • কোনও ফ্রিজের সময়কাল 90 দিনের বেশি নয়।
  • ফ্রিজ পিরিয়ডের মধ্যে ব্যবধান কমপক্ষে 60 দিন।
  • হিমায়িত পিরিয়ডগুলি ওভারল্যাপ হয় না।
  • কোনও সদৃশ ফ্রিজ পিরিয়ড নেই।

কোনও ডিভাইসের জন্য সিস্টেম আপডেট নীতি নির্ধারণ করার সময়, অ্যান্ড্রয়েড এই পরীক্ষাগুলি পুনরাবৃত্তি করে এবং ডিভাইসের জন্য কোনও বর্তমান বা অতীতের ফ্রিজ পিরিয়ড অন্তর্ভুক্ত করে।

অ্যান্ড্রয়েড একটি SystemUpdatePolicy.ValidationFailedException ছুড়ে দেয় Valied ভ্যালিডেশনফেইলডেক্সেপশন যখন এই পরীক্ষাগুলির কোনও ব্যর্থ হয়।

সিস্টেম আপডেট নীতি অবজেক্টে পূর্বে সেট করা ফ্রিজ পিরিয়ডগুলির একটি তালিকা পেতে, সমস্ত ইনস্টলড অ্যাপ্লিকেশনগুলি SystemUpdatePolicy.getFreezePeriods() কল করতে পারে। নীচের উদাহরণটি কোনও ডিভাইসের ফ্রিজ পিরিয়ডগুলিতে লগ করতে এই পদ্ধতিটিকে কল করে:

কোটলিন

// Log any freeze periods that might be set on a system update policy.
dpm.systemUpdatePolicy?.freezePeriods?.forEach {
    Log.i(TAG, "Freeze period: $it")
}

জাভা

// Log any freeze periods that might be set on a system update policy.
SystemUpdatePolicy currentPolicy = dpm.getSystemUpdatePolicy();
if (currentPolicy != null) { // A policy might not be set.
  for (FreezePeriod freezePeriod : currentPolicy.getFreezePeriods()) {
    Log.i(TAG, "Freeze period: " + freezePeriod.toString());
  }
}

লিপ বছর

অ্যান্ড্রয়েড ফ্রিজ পিরিয়ড গণনা করতে আইএসও 8601 ক্যালেন্ডার (গ্রেগরিয়ান ক্যালেন্ডারও বলা হয়) ব্যবহার করে এবং এটি লিপ বছরগুলি উপেক্ষা করে। এর অর্থ হ'ল 29 শে ফেব্রুয়ারি বৈধ তারিখ হিসাবে স্বীকৃত নয় এবং এটি 28 শে ফেব্রুয়ারি হিসাবে বিবেচনা করা হয়। অতএব 29 শে ফেব্রুয়ারি একটি ফ্রিজ পিরিয়ডের সময়কাল গণনা করার সময় গণনা করা হয় না।

উন্নয়ন এবং পরীক্ষা

আপনি যখন আপনার ডিপিসির সিস্টেম আপডেট বৈশিষ্ট্যটি বিকাশ ও পরীক্ষা করছেন, তখন আপনাকে অনেকগুলি ফ্রিজ পিরিয়ড তৈরি করতে হবে। কারণ অ্যান্ড্রয়েড অতীতের ফ্রিজ পিরিয়ডের মধ্যে 60 দিনের ব্যবধানের জন্য চেক করে, আপনি প্রথমে অতীতের রেকর্ডগুলি পরিষ্কার না করে প্রথমে একটি নতুন ফ্রিজ পিরিয়ড সেট করতে পারবেন না। ডিভাইসের ফ্রিজ পিরিয়ড রেকর্ডটি সাফ করতে, অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) শেলটিতে নিম্নলিখিত কমান্ডটি চালান:

adb shell dpm clear-freeze-period-record

আপনি নিশ্চিত করতে পারেন যে কোনও ডিভাইস সিস্টেম আপডেটের জন্য ইউজার ইন্টারফেসটি অক্ষম রয়েছে তা যাচাই করে একটি ফ্রিজ পিরিয়ডে রয়েছে।

গুগল প্লে সিস্টেম আপডেট (মেইনলাইন)

গুগল প্লে সিস্টেম আপডেটগুলি (যাকে মেইনলাইন আপডেটও বলা হয়) স্বয়ংক্রিয়ভাবে ডাউনলোড করা হয় তবে ইনস্টল করার জন্য একটি ডিভাইস রিবুট প্রয়োজন। এই আপডেটগুলি কোনও স্বয়ংক্রিয় রিবুটকে ট্রিগার করবে না এবং পরিবর্তে সেগুলি পরবর্তী ব্যবহারকারী, অ্যাডমিন বা নীতিমালার সূচনা রিবুটে ইনস্টল করা হয়। সিস্টেম আপডেট নীতি দ্বারা ট্রিগার করা রিবুটগুলি সম্পর্কিত গুগল/ওএম সিস্টেম আপডেট এবং পূর্বে ডাউনলোড করা গুগল প্লে সিস্টেম আপডেটগুলি ইনস্টল করবে।

সেটিংস > সম্বন্ধে > Android সংস্করণ > Google Play সিস্টেম আপডেটে নেভিগেট করেও Google Play সিস্টেম আপডেট ম্যানুয়ালি ইনস্টল করা যেতে পারে।

একটি আপডেট ফিরে রোল

কিছু ক্ষেত্রে, গুগল প্লে সিস্টেম আপডেট রোলব্যাকস (জিপিএসআর) সরঞ্জামটি সমস্যাযুক্ত গুগল প্লে সিস্টেম আপডেট ইনস্টলেশনটির কারণে ডিভাইসের অবস্থা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে। এই সরঞ্জামটি উন্নত ব্যবহারকারীদের দ্বারা ব্যবহার করা উচিত বা যখন সহায়তা কর্মীদের দ্বারা এটি করার নির্দেশ দেওয়া উচিত কারণ এটি ডেটা হ্রাস হতে পারে। জিপিএসআর সরঞ্জামটি কীভাবে ব্যবহার করবেন তা এখানে:

  1. আপনার যদি আপনার মেশিনে অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) চলমান থাকে তবে এডিবি পরিষেবাটি এগিয়ে যাওয়ার আগে বন্ধ করুন যাতে এটি রোলব্যাক প্রক্রিয়াতে হস্তক্ষেপ না করে। এডিবি বন্ধ করতে, adb kill-server চালান।
  2. জিপিএসআর সরঞ্জামটি খুলুন
  3. টুলটিকে adb এর মাধ্যমে আপনার টেস্ট ডিভাইসের সাথে যোগাযোগ করার অনুমতি দিতে ADB অ্যাক্সেসের অনুমতি দিন ক্লিক করুন।
  4. নতুন ডিভাইস যুক্ত করুন ক্লিক করুন।
  5. তালিকা থেকে আপনার ডিভাইসটি নির্বাচন করুন এবং সংযোগ ক্লিক করুন। এই তালিকায় পুরো ডিভাইসের নাম নাও থাকতে পারে।
  6. আপনার ডিভাইসের স্ক্রিনে, সর্বদা এই কম্পিউটার থেকে অনুমতি দিন নির্বাচন করুন এবং ইউএসবি ডিবাগিং সংযোগটি গ্রহণ করতে ওকে ক্লিক করুন।
  7. আপনার ব্রাউজারে সংযুক্ত ডিভাইসটি নির্বাচন করুন।
  8. পৃষ্ঠার বোতামের পাঠ্যটি যদি আপনার ডিভাইসে রোলব্যাক উপলব্ধ থাকে তবে সাম্প্রতিক আপডেটগুলিতে রোলব্যাকের জন্য কোনও রোলব্যাক থেকে পাওয়া যায় নারোলব্যাক সাম্প্রতিক আপডেটগুলি ক্লিক করুন।
  9. নিশ্চিত রোলব্যাক মডেলটিতে সতর্কতাগুলি পড়ুন এবং নিশ্চিত ক্লিক করুন।
  10. রোলব্যাকটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন। একবার সম্পূর্ণ হয়ে গেলে, একটি রোলব্যাক সফল মডেল উপস্থিত হবে এবং ডিভাইসটি পুনরায় বুট করবে। আপনার ডিভাইসটি প্লাগ করা এখন নিরাপদ।

অতিরিক্ত সম্পদ

সিস্টেম আপডেটগুলি সম্পর্কে আরও জানতে, অ্যান্ড্রয়েড ওপেন সোর্স প্রকল্পের ওটিএ আপডেট ডকুমেন্টেশন পড়ুন।