ডাইনামিক লিঙ্কার ট্রেবল ভিএনডিকে ডিজাইনে দুটি চ্যালেঞ্জ মোকাবেলা করে:
- SP-HAL শেয়ার্ড লাইব্রেরি এবং VNDK-SP লাইব্রেরি সহ তাদের নির্ভরতা ফ্রেমওয়ার্ক প্রসেসে লোড করা হয়। প্রতীক দ্বন্দ্ব প্রতিরোধে কিছু ব্যবস্থা থাকা উচিত।
-
dlopen()
এবংandroid_dlopen_ext()
কিছু রানটাইম নির্ভরতা প্রবর্তন করতে পারে যা নির্মাণের সময় দৃশ্যমান হয় না এবং স্ট্যাটিক বিশ্লেষণ ব্যবহার করে সনাক্ত করা কঠিন হতে পারে।
এই দুটি চ্যালেঞ্জ লিঙ্কার নেমস্পেস মেকানিজম দ্বারা সমাধান করা যেতে পারে। এই প্রক্রিয়াটি ডায়নামিক লিঙ্কার দ্বারা সরবরাহ করা হয়। এটি বিভিন্ন লিঙ্কার নামস্থানে ভাগ করা লাইব্রেরিগুলিকে বিচ্ছিন্ন করতে পারে যাতে একই লাইব্রেরি নামের লাইব্রেরিগুলি কিন্তু ভিন্ন চিহ্নগুলির সাথে বিরোধ না করে।
অন্যদিকে, লিঙ্কার নেমস্পেস মেকানিজম নমনীয়তা প্রদান করে যাতে কিছু শেয়ার করা লাইব্রেরি একটি লিঙ্কার নেমস্পেস দ্বারা রপ্তানি করা যায় এবং অন্য লিঙ্কার নেমস্পেস দ্বারা ব্যবহার করা যায়। এই রপ্তানি করা শেয়ার্ড লাইব্রেরিগুলি অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস হয়ে উঠতে পারে যা অন্য প্রোগ্রামগুলির জন্য সর্বজনীন এবং তাদের লিঙ্কার নামস্থানের মধ্যে তাদের বাস্তবায়নের বিবরণ লুকিয়ে রাখে।
উদাহরণস্বরূপ, /system/lib[64]/libcutils.so
এবং /system/lib[64]/vndk-sp-${VER}/libcutils.so
দুটি ভাগ করা লাইব্রেরি। এই দুটি লাইব্রেরির বিভিন্ন চিহ্ন থাকতে পারে। এগুলি বিভিন্ন লিঙ্কার নেমস্পেসে লোড করা হয়েছে যাতে ফ্রেমওয়ার্ক মডিউলগুলি /system/lib[64]/libcutils.so
এর উপর নির্ভর করতে পারে এবং SP-HAL শেয়ার্ড লাইব্রেরিগুলি /system/lib[64]/vndk-sp-${VER}/libcutils.so
এর উপর নির্ভর করতে পারে /system/lib[64]/vndk-sp-${VER}/libcutils.so
।
অন্যদিকে, /system/lib[64]/libc.so
হল একটি পাবলিক লাইব্রেরির একটি উদাহরণ যা একটি লিঙ্কার নেমস্পেস দ্বারা রপ্তানি করা হয় এবং অনেক লিঙ্কার নামস্থানে আমদানি করা হয়। /system/lib[64]/libc.so
এর নির্ভরতা, যেমন libnetd_client.so
, নামস্থানে লোড করা হয় যেখানে /system/lib[64]/libc.so
থাকে। অন্যান্য নেমস্পেসগুলিতে সেই নির্ভরতাগুলিতে অ্যাক্সেস থাকবে না। পাবলিক ইন্টারফেস প্রদান করার সময় এই প্রক্রিয়াটি বাস্তবায়নের বিশদ বিবরণকে অন্তর্ভুক্ত করে।
এটা কিভাবে কাজ করে
ডায়নামিক লিঙ্কার DT_NEEDED
এন্ট্রিতে নির্দিষ্ট করা শেয়ার্ড লাইব্রেরি বা dlopen()
বা android_dlopen_ext()
এর আর্গুমেন্ট দ্বারা নির্দিষ্ট করা শেয়ার্ড লাইব্রেরি লোড করার জন্য দায়ী। উভয় ক্ষেত্রেই, ডায়নামিক লিঙ্কার লিঙ্কার নেমস্পেস খুঁজে পায় যেখানে কলার থাকে এবং একই লিঙ্কার নামস্থানে নির্ভরতা লোড করার চেষ্টা করে। যদি ডায়নামিক লিঙ্কার শেয়ার করা লাইব্রেরিটিকে নির্দিষ্ট লিঙ্কার নেমস্পেসে লোড করতে না পারে, তাহলে এটি রপ্তানি করা শেয়ার্ড লাইব্রেরির জন্য লিঙ্ক করা লিঙ্কার নেমস্পেসকে জিজ্ঞাসা করে।
কনফিগারেশন ফাইল ফরম্যাট
কনফিগারেশন ফাইল বিন্যাস INI ফাইল বিন্যাসের উপর ভিত্তি করে। একটি সাধারণ কনফিগারেশন ফাইল এই মত দেখায়:
dir.system = /system/bin dir.system = /system/xbin dir.vendor = /vendor/bin [system] additional.namespaces = sphal,vndk namespace.default.isolated = true namespace.default.search.paths = /system/${LIB} namespace.default.permitted.paths = /system/${LIB}/hw namespace.default.asan.search.paths = /data/asan/system/${LIB}:/system/${LIB} namespace.default.asan.permitted.paths = /data/asan/system/${LIB}/hw:/system/${LIB}/hw namespace.sphal.isolated = true namespace.sphal.visible = true namespace.sphal.search.paths = /odm/${LIB}:/vendor/${LIB} namespace.sphal.permitted.paths = /odm/${LIB}:/vendor/${LIB} namespace.sphal.asan.search.paths = /data/asan/odm/${LIB}:/odm/${LIB} namespace.sphal.asan.search.paths += /data/asan/vendor/${LIB}:/vendor/${LIB} namespace.sphal.asan.permitted.paths = /data/asan/odm/${LIB}:/odm/${LIB} namespace.sphal.asan.permitted.paths += /data/asan/vendor/${LIB}:/vendor/${LIB} namespace.sphal.links = default,vndk namespace.sphal.link.default.shared_libs = libc.so:libm.so namespace.sphal.link.vndk.shared_libs = libbase.so:libcutils.so namespace.vndk.isolated = true namespace.vndk.search.paths = /system/${LIB}/vndk-sp-29 namespace.vndk.permitted.paths = /system/${LIB}/vndk-sp-29 namespace.vndk.links = default namespace.vndk.link.default.shared_libs = libc.so:libm.so [vendor] namespace.default.isolated = false namespace.default.search.paths = /vendor/${LIB}:/system/${LIB}
কনফিগারেশন ফাইল অন্তর্ভুক্ত:
- কার্যকরী বিভাগ নির্বাচন করার জন্য ডায়নামিক লিঙ্কারের জন্য শুরুতে বেশ কয়েকটি ডিরেক্টরি-বিভাগ ম্যাপিং বৈশিষ্ট্য।
- বেশ কিছু লিঙ্কার নেমস্পেস কনফিগারেশন বিভাগ:
- প্রতিটি বিভাগে বিভিন্ন নামস্থান (গ্রাফ শীর্ষবিন্দু) এবং নেমস্পেস (গ্রাফ আর্কস) এর মধ্যে কয়েকটি ফলব্যাক লিঙ্ক রয়েছে।
- প্রতিটি নামস্থানের নিজস্ব বিচ্ছিন্নতা, অনুসন্ধানের পথ, অনুমোদিত পথ এবং দৃশ্যমানতা সেটিংস রয়েছে।
নীচের টেবিলগুলি প্রতিটি সম্পত্তির অর্থ বিশদভাবে বর্ণনা করে।
ডিরেক্টরি-বিভাগ ম্যাপিং সম্পত্তি
সম্পত্তি | বর্ণনা | উদাহরণ |
---|---|---|
| একটি ডিরেক্টরির একটি পথ যেখানে প্রতিটি সম্পত্তি একটি লিঙ্কার নেমস্পেস কনফিগারেশন বিভাগে ডিরেক্টরির অধীনে এক্সিকিউটেবল ম্যাপ করে। একই | এটি নির্দেশ করে যে |
সম্পর্কের বৈশিষ্ট্য
সম্পত্তি | বর্ণনা | উদাহরণ |
---|---|---|
additional. namespaces | বিভাগের জন্য অতিরিক্ত নামস্থানের একটি কমা দ্বারা পৃথক করা তালিকা ( | এটি নির্দেশ করে যে |
namespace. name . links | ফলব্যাক নেমস্পেসগুলির একটি কমা দ্বারা পৃথক করা তালিকা৷ যদি বর্তমান নামস্থানে একটি ভাগ করা লাইব্রেরি খুঁজে না পাওয়া যায়, তবে ডাইনামিক লিঙ্কার ফলব্যাক নেমস্পেস থেকে ভাগ করা লাইব্রেরি লোড করার চেষ্টা করে। তালিকার শুরুতে উল্লেখ করা নামস্থানের অগ্রাধিকার বেশি। | যদি একটি শেয়ার্ড লাইব্রেরি বা এক্সিকিউটেবল একটি শেয়ার্ড লাইব্রেরির অনুরোধ করে যা এবং তারপর, যদি ভাগ করা লাইব্রেরিটি অবশেষে, সমস্ত প্রচেষ্টা ব্যর্থ হলে, ডায়নামিক লিঙ্কার একটি ত্রুটি ফেরত দেয়। |
namespace. name . link. other . shared_libs | শেয়ার্ড লাইব্রেরিগুলির একটি কোলন-বিচ্ছিন্ন তালিকা যা এই সম্পত্তি | এটি নির্দেশ করে যে ফলব্যাক লিঙ্কটি অনুরোধ করা লাইব্রেরির নাম হিসাবে শুধুমাত্র |
namespace. name . link. other . allow_all_shared_libs | একটি বুলিয়ান মান যা নির্দেশ করে যে সমস্ত ভাগ করা লাইব্রেরিগুলি এই সম্পত্তি | এটি ইঙ্গিত করে যে সমস্ত লাইব্রেরির নাম |
নামস্থান বৈশিষ্ট্য
সম্পত্তি | বর্ণনা | উদাহরণ |
---|---|---|
namespace. name . isolated | একটি বুলিয়ান মান যা নির্দেশ করে যে ডাইনামিক লিঙ্কারটি ভাগ করা লাইব্রেরিটি কোথায় থাকে তা পরীক্ষা করা উচিত। যদি যদি | এটি ইঙ্গিত করে যে |
namespace. name . search.paths | শেয়ার্ড লাইব্রেরি অনুসন্ধান করার জন্য ডিরেক্টরিগুলির একটি কোলন-বিচ্ছিন্ন তালিকা। যদি ফাংশন যখন উদাহরণস্বরূপ, যদি | এটি নির্দেশ করে যে ডাইনামিক লিঙ্কার শেয়ার করা লাইব্রেরির জন্য |
namespace. name . asan.search.paths | অ্যাড্রেস স্যানিটাইজার (ASan) সক্রিয় থাকলে শেয়ার্ড লাইব্রেরি অনুসন্ধান করার জন্য ডিরেক্টরিগুলির একটি কোলন-বিচ্ছিন্ন তালিকা। | এটি নির্দেশ করে যে যখন ASan সক্রিয় করা হয় তখন ডায়নামিক লিঙ্কার প্রথমে |
namespace. name . permitted.paths | ডিরেক্টরিগুলির একটি কোলন-বিচ্ছিন্ন তালিকা (সাবডিরেক্টরি সহ) যেখানে ডাইনামিক লিঙ্কার শেয়ার করা লাইব্রেরিগুলিকে লোড করতে পারে ( যদি | এটি নির্দেশ করে যে উদাহরণস্বরূপ, |
namespace. name . asan.permitted.paths | ডিরেক্টরির একটি কোলন-বিচ্ছিন্ন তালিকা যেখানে ডাইনামিক লিঙ্কার শেয়ার্ড লাইব্রেরি লোড করতে পারে যখন ASan সক্রিয় থাকে। | এটি নির্দেশ করে যে যখন ASan সক্রিয় করা হয় তখন |
namespace. name . visible | একটি বুলিয়ান মান যা নির্দেশ করে যে প্রোগ্রামটি ( | এটি নির্দেশ করে যে |
লিঙ্কার নামস্থান সৃষ্টি
Android 11-এ, ${android-src}/system/core/rootdir/etc
এ প্লেইন টেক্সট ফাইল ব্যবহার করার পরিবর্তে /linkerconfig
অধীনে রানটাইমে লিঙ্কার কনফিগারেশন তৈরি করা হয়। রানটাইম পরিবেশের উপর ভিত্তি করে বুট করার সময় কনফিগারেশন তৈরি করা হয়, যার মধ্যে নিম্নলিখিত আইটেমগুলি অন্তর্ভুক্ত রয়েছে:
- যদি ডিভাইস VNDK সমর্থন করে
- বিক্রেতা পার্টিশনের লক্ষ্য VNDK সংস্করণ
- পণ্য পার্টিশনের VNDK সংস্করণ
- APEX মডিউল ইনস্টল করা হয়েছে
লিঙ্কার কনফিগারেশন লিঙ্কার নেমস্পেসগুলির মধ্যে নির্ভরতা সমাধান করে তৈরি করা হয়। উদাহরণস্বরূপ, যদি APEX মডিউলগুলিতে কোনো আপডেট থাকে যাতে নির্ভরতা আপডেট অন্তর্ভুক্ত থাকে, তাহলে লিঙ্কার কনফিগারেশন এই পরিবর্তনগুলিকে প্রতিফলিত করে তৈরি করা হয়। লিঙ্কার কনফিগারেশন তৈরি করার জন্য আরও বিশদ ${android-src}/system/linkerconfig
এ পাওয়া যাবে।
লিঙ্কার নামস্থান বিচ্ছিন্নতা
তিন ধরনের কনফিগারেশন আছে। BoardConfig.mk
এ PRODUCT_TREBLE_LINKER_NAMESPACES
এবং BOARD_VNDK_VERSION
এর মানের উপর নির্ভর করে, বুট করার সময় সংশ্লিষ্ট কনফিগারেশন তৈরি হয়।
PRODUCT_TREBLE_ LINKER_NAMESPACES | BOARD_VNDK_ VERSION | নির্বাচিত কনফিগারেশন | VTS প্রয়োজনীয়তা |
---|---|---|---|
true | current | VNDK | Android 9 বা উচ্চতর সংস্করণের সাথে লঞ্চ হওয়া ডিভাইসগুলির জন্য বাধ্যতামূলক৷ |
খালি | VNDK Lite | Android 8.x সহ লঞ্চ করা ডিভাইসগুলির জন্য বাধ্যতামূলক৷ | |
false | খালি | Legacy | নন-ট্রেবল ডিভাইসের জন্য |
VNDK Lite কনফিগারেশন SP-HAL এবং VNDK-SP ভাগ করা লাইব্রেরিগুলিকে বিচ্ছিন্ন করে। Android 8.0-এ, PRODUCT_TREBLE_LINKER_NAMESPACES
true
হলে এটি ডায়নামিক লিঙ্কারের জন্য কনফিগারেশন ফাইল হতে হবে।
VNDK কনফিগারেশন SP-HAL এবং VNDK-SP ভাগ করা লাইব্রেরিগুলিকেও আলাদা করে। উপরন্তু, এই কনফিগারেশন সম্পূর্ণ গতিশীল লিঙ্কার বিচ্ছিন্নতা প্রদান করে। এটি নিশ্চিত করে যে সিস্টেম পার্টিশনের মডিউলগুলি বিক্রেতা পার্টিশনে ভাগ করা লাইব্রেরির উপর নির্ভর করবে না এবং এর বিপরীতে।
অ্যান্ড্রয়েড 8.1 বা উচ্চতর সংস্করণে, VNDK কনফিগারেশন হল ডিফল্ট কনফিগারেশন এবং BOARD_VNDK_VERSION
current
সেট করে সম্পূর্ণ ডাইনামিক লিঙ্কার আইসোলেশন সক্ষম করার জন্য এটি অত্যন্ত সুপারিশ করা হয়।
VNDK কনফিগারেশন
VNDK কনফিগারেশন সিস্টেম পার্টিশন এবং বিক্রেতা পার্টিশনের মধ্যে ভাগ করা লাইব্রেরি নির্ভরতাকে আলাদা করে। পূর্ববর্তী উপধারায় উল্লিখিত কনফিগারেশনের তুলনায়, পার্থক্যগুলি নিম্নরূপ বর্ণিত হয়েছে:
ফ্রেমওয়ার্ক প্রক্রিয়া
-
default
,vndk
,sphal
, এবংrs
নামস্থান তৈরি করা হয়। - সমস্ত নামস্থান বিচ্ছিন্ন।
- সিস্টেম ভাগ করা লাইব্রেরি
default
নামস্থানে লোড করা হয়। - SP-HALs
sphal
নামস্থানে লোড করা হয়। - VNDK-SP ভাগ করা লাইব্রেরিগুলি
vndk
নামস্থানে লোড করা হয়েছে।
-
বিক্রেতা প্রক্রিয়া
-
default
,vndk
এবংsystem
নামস্থান তৈরি করা হয়। -
default
নামস্থান বিচ্ছিন্ন। - বিক্রেতার ভাগ করা লাইব্রেরিগুলি
default
নামস্থানে লোড করা হয়৷ - VNDK এবং VNDK-SP ভাগ করা লাইব্রেরিগুলি
vndk
নামস্থানে লোড করা হয়। - LL-NDK এবং এর নির্ভরতাগুলি
system
নামস্থানে লোড করা হয়।
-
লিঙ্কার নামস্থানের মধ্যে সম্পর্ক নীচে চিত্রিত করা হয়েছে।
চিত্র 1. লিঙ্কার নেমস্পেস বিচ্ছিন্নতা (VNDK কনফিগারেশন)।
উপরের ছবিতে, LL-NDK এবং VNDK-SP নিম্নলিখিত ভাগ করা লাইব্রেরির জন্য দাঁড়িয়েছে:
- এলএল-এনডিকে
-
libEGL.so
-
libGLESv1_CM.so
-
libGLESv2.so
-
libGLESv3.so
-
libandroid_net.so
-
libc.so
-
libdl.so
-
liblog.so
-
libm.so
-
libnativewindow.so
-
libneuralnetworks.so
-
libsync.so
-
libvndksupport.so
-
libvulkan.so
-
- ভিএনডিকে-এসপি
-
android.hardware.graphics.common@1.0.so
-
android.hardware.graphics.mapper@2.0.so
-
android.hardware.renderscript@1.0.so
-
android.hidl.memory@1.0.so
-
libRSCpuRef.so
-
libRSDriver.so
-
libRS_internal.so
-
libbase.so
-
libbcinfo.so
-
libc++.so
-
libcutils.so
-
libhardware.so
-
libhidlbase.so
-
libhidlmemory.so
-
libhidltransport.so
-
libhwbinder.so
-
libion.so
-
libutils.so
-
libz.so
-
আপনি ডিভাইস থেকে /linkerconfig/ld.config.txt
এ আরও বিশদ জানতে পারেন।
VNDK লাইট কনফিগারেশন
অ্যান্ড্রয়েড 8.0 হিসাবে, গতিশীল লিঙ্কারটি SP-HAL এবং VNDK-SP ভাগ করা লাইব্রেরিগুলিকে আলাদা করার জন্য কনফিগার করা হয়েছে যাতে তাদের প্রতীকগুলি অন্যান্য ফ্রেমওয়ার্ক ভাগ করা লাইব্রেরির সাথে বিরোধ না করে। লিঙ্কার নামস্থানের মধ্যে সম্পর্ক নীচে দেখানো হয়েছে।
LL-NDK এবং VNDK-SP নিম্নলিখিত ভাগ করা লাইব্রেরির জন্য দাঁড়িয়েছে:
- এলএল-এনডিকে
-
libEGL.so
-
libGLESv1_CM.so
-
libGLESv2.so
-
libc.so
-
libdl.so
-
liblog.so
-
libm.so
-
libnativewindow.so
-
libstdc++.so
(কনফিগারেশনে নয়) -
libsync.so
-
libvndksupport.so
-
libz.so
(কনফিগারেশনে ভিএনডিকে-এসপিতে সরানো হয়েছে)
-
- ভিএনডিকে-এসপি
-
android.hardware.graphics.common@1.0.so
-
android.hardware.graphics.mapper@2.0.so
-
android.hardware.renderscript@1.0.so
-
android.hidl.memory@1.0.so
-
libbase.so
-
libc++.so
-
libcutils.so
-
libhardware.so
-
libhidlbase.so
-
libhidlmemory.so
-
libhidltransport.so
-
libhwbinder.so
-
libion.so
-
libutils.so
-
নীচের টেবিলে ফ্রেমওয়ার্ক প্রসেসের জন্য নেমস্পেস কনফিগারেশন তালিকাভুক্ত করা হয়েছে, যা VNDK লাইট কনফিগারেশনের [system]
বিভাগ থেকে উদ্ধৃত করা হয়েছে।
নামস্থান | সম্পত্তি | মান |
---|---|---|
default | search.paths | /system/${LIB} /odm/${LIB} /vendor/${LIB} /product/${LIB} |
isolated | false | |
sphal | search.paths | /odm/${LIB} /vendor/${LIB} |
permitted.paths | /odm/${LIB} /vendor/${LIB} | |
isolated | true | |
visible | true | |
links | default,vndk,rs | |
link.default.shared_libs | এলএল-এনডিকে | |
link.vndk.shared_libs | ভিএনডিকে-এসপি | |
link.rs.shared_libs | libRS_internal.so | |
vndk (VNDK-SP-এর জন্য) | search.paths | /odm/${LIB}/vndk-sp /vendor/${LIB}/vndk-sp /system/${LIB}/vndk-sp-${VER} |
permitted.paths | /odm/${LIB}/hw /odm/${LIB}/egl /vendor/${LIB}/hw /vendor/${LIB}/egl /system/${LIB}/vndk-sp-${VER}/hw | |
isolated | true | |
visible | true | |
links | default | |
link.default.shared_libs | এলএল-এনডিকে | |
rs (রেন্ডারস্ক্রিপ্টের জন্য) | search.paths | /odm/${LIB}/vndk-sp /vendor/${LIB}/vndk-sp /system/${LIB}/vndk-sp-${VER} /odm/${LIB} /vendor/${LIB} |
permitted.paths | /odm/${LIB} /vendor/${LIB} /data (সংকলিত আরএস কার্নেলের জন্য) | |
isolated | true | |
visible | true | |
links | default,vndk | |
link.default.shared_libs | এলএল-এনডিকেlibmediandk.so libft2.so | |
link.vndk.shared_libs | ভিএনডিকে-এসপি |
নীচের টেবিলটি ভেন্ডর প্রসেসের জন্য নেমস্পেস কনফিগারেশন উপস্থাপন করে, যা VNDK লাইট কনফিগারেশনের [vendor]
বিভাগ থেকে উদ্ধৃত করা হয়েছে।
নামস্থান | সম্পত্তি | মান |
---|---|---|
default | search.paths | /odm/${LIB} /odm/${LIB}/vndk /odm/${LIB}/vndk-sp /vendor/${LIB} /vendor/${LIB}/vndk /vendor/${LIB}/vndk-sp /system/${LIB}/vndk-${VER} /system/${LIB}/vndk-sp-${VER} /system/${LIB} (অপ্রচলিত)/product/${LIB} (অপ্রচলিত) |
isolated | false |
ডিভাইস থেকে /linkerconfig/ld.config.txt
এ আরও বিশদ বিবরণ পাওয়া যাবে।
নথির ইতিহাস
অ্যান্ড্রয়েড 11 পরিবর্তন
- অ্যান্ড্রয়েড 11-এ, স্ট্যাটিক
ld.config.*.txt
ফাইলগুলি কোডবেস থেকে সরানো হয় এবং LinkerConfig তাদের পরিবর্তে রানটাইম তৈরি করে।
অ্যান্ড্রয়েড 9 পরিবর্তন
- অ্যান্ড্রয়েড 9-এ,
vndk
লিঙ্কার নামস্থান বিক্রেতা প্রক্রিয়াগুলিতে যোগ করা হয় এবং VNDK ভাগ করা লাইব্রেরিগুলি ডিফল্ট লিঙ্কার নামস্থান থেকে বিচ্ছিন্ন করা হয়। -
PRODUCT_FULL_TREBLE
আরও নির্দিষ্টPRODUCT_TREBLE_LINKER_NAMESPACES
দিয়ে প্রতিস্থাপন করুন। - Android 9 নিম্নলিখিত ডায়নামিক লিঙ্কার কনফিগারেশন ফাইলগুলির নাম পরিবর্তন করে।
Android 8.x অ্যান্ড্রয়েড 9 বর্ণনা ld.config.txt.in
ld.config.txt
রানটাইম লিঙ্কার নেমস্পেস আইসোলেশন সহ ডিভাইসগুলির জন্য ld.config.txt
ld.config.vndk_lite.txt
VNDK-SP লিঙ্কার নেমস্পেস আইসোলেশন সহ ডিভাইসগুলির জন্য ld.config.legacy.txt
ld.config.legacy.txt
অ্যান্ড্রয়েড 7.x বা তার কম সংস্করণে চলমান লিগ্যাসি ডিভাইসগুলির জন্য -
android.hardware.graphics.allocator@2.0.so
সরান। -
product
এবংodm
পার্টিশন যোগ করা হয়.