تركز الموارد العامة على أنماط تكامل قابلة للتكرار. تبقى SDK والبرامج الثابتة ووثائق المصنع المقيدة ضمن القنوات المعتمدة.
أدلة قابلة للمقارنة مع الطريقة والإصدار والقيود.
- طراز الجهاز الدقيق ومتغير المنطقة وإصدار Android والبرامج الثابتة وإصدار SDK المعتمد.
- سياسة نشر تميز التفتيش للقراءة فقط عن عناصر التحكم على مستوى المسؤول.
- مسار استعادة لا يعتمد على تغيير المفتاح أو شريط الحالة أو إعداد التطبيق.
معيار النشر
أنشئ تكاملات Android مؤسسية بأدلة محددة الإصدار.
تركز الموارد العامة على أنماط تكامل قابلة للتكرار. تبقى SDK والبرامج الثابتة ووثائق المصنع المقيدة ضمن القنوات المعتمدة.
- 01
التقط لقطة قدرة ذات إصدار
نموذج التسجيل، المنطقة، إصدار Android ، تصحيح الأمان، البرامج الثابتة، SDK، إصدار التطبيق، الملحقات والأجهزة الطرفية المتاحة. اسم عائلة المنتج ليس كافيًا لإعادة إنتاج نتيجة النشر.
- 02
تفتيش منفصل عن السيطرة المتميزة
احتفظ بقراءات الهوية وإصدار البرنامج والقدرة متاحة لشاشة التشخيص. تعامل مع شريط الحالة وملف تعريف الشبكة والكشك وتثبيت التطبيقات والعمليات المشابهة باعتبارها إجراءات نشر يتحكم فيها المسؤول من خلال القائمة المسموح بها وسجل التدقيق.
- 03
جعل تغييرات إدخال الأجهزة قابلة للعكس
تفضل التعامل مع المفاتيح على مستوى التطبيق. عندما يتعين على النشر تغيير التعيين الفعلي، قم بالتقاط صورة لرمز المفتاح الأصلي والإجراء وحالة الاعتراض قبل تطبيق تغيير واحد في كل مرة.
- 04
البوابة والتحقق والاستعادة
قم بتشغيل سير العمل المستهدف، وأعد التشغيل وكرر عملية التحقق. قم بتخزين النتيجة والقيود قبل /after، ثم قم باستعادة الحالة الأصلية أو احتفظ بسجل النشر المعتمد من خلال إجراء الاسترداد الفعلي.
تطبيقات نموذجية / Kotlin
أنماط SDK وAPI
نمط المنفذ الأصلي. اربطه بالجهاز المعتمد SDK داخل محول خاص؛ احتفظ بالمكالمات المميزة خارج طبقة سير عمل التطبيق.
enum class DeviceCapability {
BARCODE, PRINTER, PHYSICAL_KEYS,
MAGNETIC_STRIPE, CONTACT_CARD,
CONTACTLESS_CARD, SECURE_MODULE,
}
data class DeviceBaseline(
val model: String,
val region: String,
val android: String,
val firmware: String,
val sdk: String,
val appBuild: String,
val capabilities: Set<DeviceCapability>,
)
data class KeySnapshot(
val keyCode: Int,
val action: String?,
val intercepted: Boolean,
)
interface DeviceCapabilityPort {
fun readBaseline(): DeviceBaseline
fun snapshotKey(keyCode: Int): KeySnapshot?
fun applyKeyAction(keyCode: Int, action: String)
fun restoreKey(snapshot: KeySnapshot)
}
class DeploymentInspector(
private val device: DeviceCapabilityPort,
) {
fun inspect(): DeviceBaseline = device.readBaseline()
fun applyTemporaryKey(
keyCode: Int,
action: String,
) {
val original = device.snapshotKey(keyCode)
?: error("key-mapping-unavailable")
try {
device.applyKeyAction(keyCode, action)
} catch (error: Throwable) {
device.restoreKey(original)
throw error
}
}
}توزيع SDK
بوابة النشر
لا تُنشر ملفات المصنع أو البرامج الثابتة أو الأمثلة قبل تسجيل إذن التوزيع.
قم بوضع علامة على النشر على أنه غير جاهز واطلب تشخيصًا خاصًا بالنموذج بدلاً من سد الفجوة من متغير قريب.
احتفظ بنتيجة القراءة فقط، وسجل نطاق المسؤول المطلوب ولا تعيد المحاولة باستخدام أذونات أوسع.
قم بوضع علامة عليها للجلسة فقط، واستعد التعيين الأصلي وانقل الثبات إلى ملف تعريف النشر المعتمد.
استخدم إجراء الاسترداد الفعلي، وقم باستعادة اللقطة وإزالة التغيير من الطرح.
حالات الدليل
أدلة قابلة للمقارنة مع الطريقة والإصدار والقيود.
- 01
سجّل الطراز والمنطقة وAndroid والبرنامج الثابت وSDK وإصدار التطبيق والملحقات قبل الاختبار.
- 02
قم بتشغيل عارض إمكانية القراءة فقط بعد التشغيل البارد وإعادة تشغيل التطبيق وإعادة التشغيل.
- 03
قم بتنفيذ عناصر التحكم المميزة فقط من خلال سياسة النشر المعتمدة وتسجيل حدود الأذونات.
- 04
تحقق من استعادة المفاتيح والتنقل في النظام وسلوك الثبات ومسار الاسترداد الفعلي.
الموارد
أنماط SDK وAPI
لا تُنشر ملفات المصنع أو البرامج الثابتة أو الأمثلة قبل تسجيل إذن التوزيع.