পণ্যের খবর

অ্যান্ড্রয়েড ১৭ এর তৃতীয় বিটা

৫ মিনিটের পাঠ
Matthew McCullough
ভাইস প্রেসিডেন্ট, প্রোডাক্ট ম্যানেজমেন্ট, অ্যান্ড্রয়েড ডেভেলপার

আজ বিটা ৩-এর মাধ্যমে অ্যান্ড্রয়েড ১৭ আনুষ্ঠানিকভাবে প্ল্যাটফর্ম স্থিতিশীলতা অর্জন করেছে। এর মানে হলো, এপিআই সারফেসটি লক করা হয়েছে; আপনি চূড়ান্ত সামঞ্জস্যতা পরীক্ষা করতে এবং আপনার অ্যান্ড্রয়েড ১৭-এর জন্য তৈরি অ্যাপগুলো প্লে স্টোরে প্রকাশ করতে পারবেন। এছাড়াও, বিটা ৩ আরও উন্নত, অধিক সুরক্ষিত এবং অত্যন্ত সমন্বিত অ্যাপ্লিকেশন তৈরিতে সাহায্য করার জন্য একগুচ্ছ নতুন সক্ষমতা নিয়ে এসেছে।

আপনার অ্যাপ, লাইব্রেরি, টুল এবং গেম ইঞ্জিনগুলো প্রস্তুত করুন!

আপনি যদি কোনো SDK, লাইব্রেরি, টুল বা গেম ইঞ্জিন তৈরি করেন, তবে আপনার ডাউনস্ট্রিম অ্যাপ এবং গেম ডেভেলপারদের সামঞ্জস্যজনিত সমস্যার কারণে বাধাগ্রস্ত হওয়া থেকে বাঁচাতে এবং তাদেরকে SDK-এর সর্বশেষ ফিচারগুলো ব্যবহারের সুযোগ করে দিতে, এখনই প্রয়োজনীয় আপডেটগুলো প্রস্তুত করা আরও বেশি গুরুত্বপূর্ণ। অ্যান্ড্রয়েড ১৭-কে সম্পূর্ণরূপে সমর্থন করার জন্য কোনো আপডেটের প্রয়োজন হলে, অনুগ্রহ করে আপনার ডাউনস্ট্রিম ডেভেলপারদের তা জানিয়ে দিন।

large_Android17Timeline01.png

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

  • বড় স্ক্রিনে আকার পরিবর্তনের সুবিধা: একবার আপনি অ্যান্ড্রয়েড ১৭ ইনস্টল করলে, বড় স্ক্রিনে ওরিয়েন্টেশন, আকার পরিবর্তনের সুবিধা এবং অ্যাসপেক্ট রেশিওর সীমাবদ্ধতা বজায় রাখা থেকে আর বিরত থাকতে পারবেন না।
  • ডাইনামিক কোড লোডিং: আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৭ বা তার উচ্চতর সংস্করণকে টার্গেট করে, তাহলে অ্যান্ড্রয়েড ১৪-এ DEX এবং JAR ফাইলের জন্য চালু হওয়া সেফার ডাইনামিক কোড লোডিং (DCL) সুরক্ষা এখন নেটিভ লাইব্রেরি পর্যন্তও বিস্তৃত হয়েছে। System.load() ব্যবহার করে লোড করা সমস্ত নেটিভ ফাইলকে অবশ্যই রিড-অনলি হিসেবে চিহ্নিত করতে হবে। অন্যথায়, সিস্টেম UnsatisfiedLinkError থ্রো করবে।
  • ডিফল্টরূপে CT সক্রিয় করুন : সার্টিফিকেট ট্রান্সপারেন্সি (CT) ডিফল্টরূপে সক্রিয় থাকে। (অ্যান্ড্রয়েড ১৬-এ CT উপলব্ধ ছিল, কিন্তু অ্যাপগুলোকে এটি চালু করার জন্য সম্মতি জানাতে হতো।)
  • লোকাল নেটওয়ার্ক সুরক্ষা : অ্যান্ড্রয়েড ১৭ বা তার উচ্চতর সংস্করণের অ্যাপগুলিতে ডিফল্টরূপে লোকাল নেটওয়ার্ক অ্যাক্সেস ব্লক করা থাকে। সম্ভব হলে প্রাইভেসি রক্ষাকারী পিকার ব্যবহার করুন এবং ব্যাপক ও স্থায়ী অ্যাক্সেসের জন্য নতুন ACCESS_LOCAL_NETWORK ব্যবহার করুন।

মিডিয়া এবং ক্যামেরার উন্নতি

ফটো পিকার কাস্টমাইজেশন বিকল্পগুলি

অ্যান্ড্রয়েড এখন আপনাকে আপনার অ্যাপের ইউজার ইন্টারফেসের সাথে আরও ভালোভাবে মানিয়ে নেওয়ার জন্য ফটো পিকারের ভিজ্যুয়াল উপস্থাপনা নিজের মতো করে সাজানোর সুযোগ দেয়। নতুন PhotoPickerUiCustomizationParams API ব্যবহার করে, আপনি গ্রিড ভিউয়ের অ্যাস্পেক্ট রেশিও স্ট্যান্ডার্ড ১:১ বর্গক্ষেত্র থেকে পরিবর্তন করে ৯:১৬ পোর্ট্রেট ডিসপ্লেতে রূপান্তর করতে পারবেন। এই নমনীয়তা ACTION_PICK_IMAGES ইন্টেন্ট এবং এমবেডেড ফটো পিকার উভয়ের ক্ষেত্রেই প্রযোজ্য, যা ব্যবহারকারীদের মিডিয়ার সাথে ইন্টারঅ্যাক্ট করার সময় একটি সামঞ্জস্যপূর্ণ নান্দনিকতা বজায় রাখতে আপনাকে সক্ষম করে।

large_(Default)11aspectratio.png

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

val params = PhotoPickerUiCustomizationParams.Builder()
.setAspectRatio(PhotoPickerUiCustomizationParams.ASPECT_RATIO_PORTRAIT_9_16)
.build()
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
putExtra(MediaStore.EXTRA_PICK_IMAGES_UI_CUSTOMIZATION_PARAMS, params)
}
startActivityForResult(intent, REQUEST_CODE)

RAW14 ইমেজ ফরম্যাটের জন্য সমর্থন: অ্যান্ড্রয়েড ১৭-এ নতুন ImageFormat.RAW14 কনস্ট্যান্টের মাধ্যমে RAW14 ইমেজ ফরম্যাটের জন্য সমর্থন যুক্ত করা হয়েছে — যা উচ্চমানের ডিজিটাল ফটোগ্রাফির জন্য কার্যত একটি ইন্ডাস্ট্রি স্ট্যান্ডার্ড। RAW14 হলো একটি সিঙ্গেল-চ্যানেল, প্রতি পিক্সেলে ১৪-বিটের ফরম্যাট যা একটি ঘন সন্নিবিষ্ট লেআউট ব্যবহার করে, যেখানে প্রতি চারটি ধারাবাহিক পিক্সেল সাত বাইটের মধ্যে প্যাক করা থাকে।

ভেন্ডর-সংজ্ঞায়িত ক্যামেরা এক্সটেনশন: অ্যান্ড্রয়েড ১৭-এ ভেন্ডর-সংজ্ঞায়িত এক্সটেনশন যুক্ত করা হয়েছে, যা হার্ডওয়্যার পার্টনারদের কাস্টম ক্যামেরা এক্সটেনশন মোড সংজ্ঞায়িত ও প্রয়োগ করার সুযোগ দেয়। এর মাধ্যমে আপনি 'সুপার রেজোলিউশন' বা অত্যাধুনিক এআই-চালিত এনহ্যান্সমেন্টের মতো সেরা ও সর্বশেষ ক্যামেরা ফিচারগুলো ব্যবহারের সুযোগ পাবেন। আপনি isExtensionSupported(int) API ব্যবহার করে এই মোডগুলো সম্পর্কে জানতে পারবেন।

ক্যামেরা ডিভাইস টাইপ এপিআই: নতুন অ্যান্ড্রয়েড ১৭ এপিআই আপনাকে ডিভাইসের ধরন জিজ্ঞাসা করে শনাক্ত করতে দেয় যে ক্যামেরাটি বিল্ট-ইন হার্ডওয়্যার, একটি এক্সটার্নাল ইউএসবি ওয়েবক্যাম, নাকি একটি ভার্চুয়াল ক্যামেরা।

ব্লুটুথ এলই অডিও হিয়ারিং এইড সাপোর্ট

অ্যান্ড্রয়েডে এখন ব্লুটুথ লো এনার্জি (BLE) অডিও হিয়ারিং এইডের জন্য একটি নির্দিষ্ট ডিভাইস ক্যাটাগরি অন্তর্ভুক্ত করা হয়েছে। AudioDeviceInfo.TYPE_BLE_HEARING_AID কনস্ট্যান্টটি যুক্ত করার ফলে, আপনার অ্যাপ এখন সাধারণ হেডসেট থেকে হিয়ারিং এইডকে আলাদাভাবে শনাক্ত করতে পারবে।

val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
val isHearingAidConnected = devices.any { it.type == AudioDeviceInfo.TYPE_BLE_HEARING_AID }

শ্রবণযন্ত্রের জন্য সূক্ষ্ম অডিও রাউটিং

অ্যান্ড্রয়েড ১৭ ব্যবহারকারীদের নির্দিষ্ট সিস্টেম সাউন্ডগুলো কোথায় বাজবে তা স্বাধীনভাবে নিয়ন্ত্রণ করার সুযোগ দেয়। তারা নোটিফিকেশন, রিংটোন এবং অ্যালার্ম সংযুক্ত হিয়ারিং এইড অথবা ডিভাইসের বিল্ট-ইন স্পিকারে পাঠানোর জন্য বেছে নিতে পারেন।

বর্ধিত HE-AAC সফটওয়্যার এনকোডার

অ্যান্ড্রয়েড ১৭-এ একটি সিস্টেম-প্রদত্ত এক্সটেন্ডেড HE-AAC সফটওয়্যার এনকোডার চালু করা হয়েছে। এই এনকোডারটি ইউনিফাইড স্পিচ এবং অডিও কোডিং ব্যবহার করে কম ও বেশি উভয় বিটরেট সমর্থন করে। আপনি MediaCodec API-এর মাধ্যমে c2.android.xheaac.encoder নামটি ব্যবহার করে অথবা audio/mp4a-latm MIME টাইপটি কোয়েরি করে এই এনকোডারটি অ্যাক্সেস করতে পারেন।

val encoder = MediaCodec.createByCodecName("c2.android.xheaac.encoder")
val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, 48000, 1)
format.setInteger(MediaFormat.KEY_BIT_RATE, 24000)
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectXHE)
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)

কর্মক্ষমতা এবং ব্যাটারির উন্নতি

allow-while-idle অ্যালার্মের জন্য লিসেনার সাপোর্টের মাধ্যমে ওয়েক-লক হ্রাস করুন।

অ্যান্ড্রয়েড ১৭-এ AlarmManager.setExactAndAllowWhileIdle-এর একটি নতুন সংস্করণ চালু করা হয়েছে, যা PendingIntent-এর পরিবর্তে একটি OnAlarmListener গ্রহণ করে। এই নতুন কলব্যাক-ভিত্তিক পদ্ধতিটি সেইসব অ্যাপের জন্য আদর্শ, যেগুলো বর্তমানে পর্যায়ক্রমিক কাজ সম্পাদনের জন্য অবিরাম ওয়েক-লকের উপর নির্ভর করে; যেমন সকেট সংযোগ বজায় রাখা মেসেজিং অ্যাপ।

val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)

গোপনীয়তা আপডেট

সিস্টেম-প্রদত্ত অবস্থান বোতাম

localcafe.jpg

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

টাচ এবং ফিজিক্যাল কিবোর্ডের জন্য পৃথক পাসওয়ার্ড দৃশ্যমানতা সেটিংস

এই ফিচারটি বিদ্যমান 'পাসওয়ার্ড দেখান' সিস্টেম সেটিংটিকে দুটি স্বতন্ত্র ইউজার প্রেফারেন্সে বিভক্ত করে: একটি টাচ-ভিত্তিক ইনপুটের জন্য এবং অন্যটি ফিজিক্যাল (হার্ডওয়্যার) কীবোর্ড ইনপুটের জন্য। ফিজিক্যাল কীবোর্ডের মাধ্যমে টাইপ করা অক্ষরগুলো এখন ডিফল্টরূপে তাৎক্ষণিকভাবে লুকানো থাকে।

val isPhysical = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD
val shouldShow = android.text.ShowSecretsSetting.shouldShowPassword(context, isPhysical)

নিরাপত্তা

বাধ্যতামূলক পঠনযোগ্য গতিশীল কোড লোডিং

কোড ইনজেকশন আক্রমণের বিরুদ্ধে নিরাপত্তা জোরদার করতে, অ্যান্ড্রয়েড এখন ডায়নামিকভাবে লোড করা নেটিভ লাইব্রেরিগুলোকে রিড-অনলি করার নিয়ম চালু করেছে। আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৭ বা তার উচ্চতর সংস্করণকে টার্গেট করে, তবে System.load() ব্যবহার করে লোড করা সমস্ত নেটিভ ফাইলকে আগে থেকেই রিড-অনলি হিসেবে চিহ্নিত করতে হবে।

val libraryFile = File(context.filesDir, "my_native_lib.so")
// Mark the file as read-only before loading to comply with Android 17+ security requirements
libraryFile.setReadOnly()
System.load(libraryFile.absolutePath)

পোস্ট-কোয়ান্টাম ক্রিপ্টোগ্রাফি (PQC) হাইব্রিড APK সাইনিং

কোয়ান্টাম কম্পিউটিং-এর ভবিষ্যৎ অগ্রগতির জন্য প্রস্তুতি হিসেবে, অ্যান্ড্রয়েড নতুন v3.2 APK সিগনেচার স্কিমের মাধ্যমে পোস্ট-কোয়ান্টাম ক্রিপ্টোগ্রাফি (PQC)-এর জন্য সমর্থন চালু করছে। এই স্কিমটি একটি হাইব্রিড পদ্ধতি ব্যবহার করে, যা একটি ক্লাসিক্যাল সিগনেচারের সাথে একটি ML-DSA সিগনেচারকে একত্রিত করে।

ব্যবহারকারীর অভিজ্ঞতা এবং সিস্টেম UI

বাহ্যিক ডিসপ্লেতে উইজেটগুলির জন্য উন্নত সমর্থন

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

val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
val displayId = options.getInt(AppWidgetManager.OPTION_APPWIDGET_DISPLAY_ID)
val remoteViews = RemoteViews(context.packageName, R.layout.widget_layout)
remoteViews.setViewPadding(
R.id.container,
16f, 8f, 16f, 8f,
TypedValue.COMPLEX_UNIT_DIP
)

হোম স্ক্রিনে লুকানো অ্যাপ লেবেল

হোমস্ক্রিনে লুকানো অ্যাপ লেবেল png

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

ডেস্কটপ ইন্টারেক্টিভ পিকচার-ইন-পিকচার

প্রচলিত পিকচার-ইন-পিকচারের থেকে ভিন্ন, এই পিন করা উইন্ডোগুলি ডেস্কটপ মোডে অন্যান্য অ্যাপ্লিকেশন উইন্ডোগুলির উপরে সর্বদা অবস্থান করার পাশাপাশি ইন্টারেক্টিভও থাকে।

val appTask: ActivityManager.AppTask = activity.getSystemService(ActivityManager::class.java).appTasks[0]
appTask.requestWindowingLayer(
ActivityManager.AppTask.WINDOWING_LAYER_PINNED,
context.mainExecutor,
object : OutcomeReceiver<Int, Exception> {
override fun onResult(result: Int) {
if (result == ActivityManager.AppTask.WINDOWING_LAYER_REQUEST_GRANTED) {
// Task successfully moved to pinned layer
}
}
override fun onError(error: Exception) {}
}
)

নতুন করে ডিজাইন করা স্ক্রিন রেকর্ডিং টুলবার

large_Recording-redesign.png

মূল কার্যকারিতা

ভিপিএন অ্যাপ বর্জন সেটিংস

নতুন ACTION_VPN_APP_EXCLUSION_SETTINGS Intent ব্যবহার করে, আপনার অ্যাপ একটি সিস্টেম-পরিচালিত সেটিংস স্ক্রিন চালু করতে পারে, যেখানে ব্যবহারকারীরা ভিপিএন টানেল বাইপাস করার জন্য অ্যাপ্লিকেশন নির্বাচন করতে পারেন।

val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}

OpenJDK 25 এবং 21 API আপডেট

এই আপডেটে OpenJDK 21 এবং OpenJDK 25 থেকে ব্যাপক বৈশিষ্ট্য ও পরিমার্জন আনা হয়েছে, যার মধ্যে রয়েছে সর্বশেষ ইউনিকোড সমর্থন এবং TLS-এর নেমড গ্রুপগুলির জন্য উন্নত SSL সমর্থন।

অ্যান্ড্রয়েড ১৭ দিয়ে শুরু করুন

আপনি যেকোনো সমর্থিত পিক্সেল ডিভাইস নথিভুক্ত করতে পারেন অথবা অ্যান্ড্রয়েড এমুলেটরের সাহায্যে ৬৪-বিট সিস্টেম ইমেজ ব্যবহার করতে পারেন

  • নতুন SDK অনুযায়ী কম্পাইল করুন এবং ফিডব্যাক পেজে সমস্যাগুলো জানান।
  • আপনার বর্তমান অ্যাপটির সামঞ্জস্যতা পরীক্ষা করুন এবং জানুন অ্যান্ড্রয়েড ১৭-এর পরিবর্তনগুলির দ্বারা আপনার অ্যাপটি প্রভাবিত হচ্ছে কিনা।

সম্পূর্ণ তথ্যের জন্য অ্যান্ড্রয়েড ১৭ ডেভেলপার সাইট পরিদর্শন করুন।

লিখেছেন:

পড়তে থাকুন