Developer Hub / デバイスの機能と展開の制御

デバイスの機能と展開の制御

読み取り専用デバイスのスナップショットを作成し、特権操作を分離し、すべての展開変更を元に戻せるようにします。

公開基準開発者

対象端末にアプリを接続して検証します。

デバイスで何ができるか、何を変更できるか、およびデバイスを回復する方法をエンジニアに伝える導入ベースライン。

Android 開発者、導入エンジニア、QA チームは、パイロットまたはフリートの展開に向けてマネージド ハンドヘルドを準備しています。

公開資料は再現可能な実装パターンを中心にします。再配布制限のあるSDK、ファームウェア、メーカー資料は承認済み経路に限定します。

方法、バージョン、制約を伴う比較可能な根拠。

開発者向け資料デバイスの機能と展開の制御
RuggedLayerテストラボ中級者
堅牢バーコード・RFID端末向け技術ガイド、SDK情報、サンプル、互換性データ。Android 開発者、導入エンジニア、QA チームは、パイロットまたはフリートの展開に向けてマネージド ハンドヘルドを準備しています。
  • 正確なデバイス モデル、地域バリアント、 Android ビルド、ファームウェア、承認された SDK リリース。
  • 読み取り専用検査を管理者レベルの制御から区別する展開ポリシー。
  • 変更されるキー、ステータスバー、またはアプリケーション設定に依存しない回復パス。

公開基準

版管理された根拠とともにAndroid業務連携を構築。

公開資料は再現可能な実装パターンを中心にします。再配布制限のあるSDK、ファームウェア、メーカー資料は承認済み経路に限定します。

  1. 01

    バージョン管理された機能のスナップショットを取得する

    モデル、地域、 Android バージョン、セキュリティ パッチ、ファームウェア、 SDK、アプリケーション ビルド、アクセサリ、および利用可能な周辺機器を記録します。製品ファミリ名だけでは展開結果を再現するのに十分ではありません。

  2. 02

    特権制御から検査を分離する

    ID、ソフトウェア バージョン、機能の読み取りを診断画面で利用できるようにします。ステータス バー、ネットワーク プロファイル、キオスク、アプリケーションのインストール、および同様の操作を、ホワイトリストと監査レコードを使用して管理者が制御する展開アクションとして扱います。

  3. 03

    ハードウェア入力の変更を元に戻せるようにする

    アプリケーションレベルのキー処理を優先します。導入で物理マッピングを変更する必要がある場合は、一度に 1 つの変更を適用する前に、元のキー コード、アクション、およびインターセプト状態のスナップショットを作成します。

  4. 04

    ゲート、検証、復元

    ターゲットのワークフローを実行し、再起動してチェックを繰り返します。 before/after の結果と制限を保存し、元の状態に復元するか、物理的な回復手順で承認された展開記録を保持します。

サンプルアプリ / Kotlin

SDK・APIパターン

オリジナルのポートパターン。それをプライベートアダプター内の承認されたデバイス SDK にバインドします。特権呼び出しをアプリケーション ワークフロー層から遠ざけます。

device-capability-port.kt

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
    }
  }
}
ベンダーのバイナリ、APIリファレンス、ファームウェア、ソースコード例は、再配布許可と対応範囲を記録してから公開します。

SDK配布

公開ゲート

ベンダーのバイナリ、APIリファレンス、ファームウェア、ソースコード例は、再配布許可と対応範囲を記録してから公開します。

ベースラインフィールドが空白であるか、読み取り間で変化する

デプロイメントを準備完了としてマークし、近くのバリアントからのギャップを埋めるのではなく、モデル固有の診断を要求します。

特権操作が拒否されました

読み取り専用の結果を保持し、必要な管理者のスコープを記録し、より幅広い権限で再試行しないでください。

再起動後にマッピングが消える

これをセッション専用としてマークし、元のマッピングを復元し、承認された展開プロファイルに永続性を移動します。

変更されたキーはナビゲーションや回復をブロックします

物理的な回復手順を使用して、スナップショットを復元し、ロールアウトから変更を削除します。

証拠ステータス

方法、バージョン、制約を伴う比較可能な根拠。

  1. 01

    テスト前に、モデル、地域、 Android、ファームウェア、 SDK、アプリケーション ビルド、およびアクセサリを記録します。

  2. 02

    コールド スタート、アプリの再起動、再起動後に読み取り専用機能ビューアを実行します。

  3. 03

    承認された展開ポリシーを使用してのみ特権制御を実行し、権限の境界を記録します。

  4. 04

    キーの復元、システム ナビゲーション、永続性の動作、および物理的な回復パスを確認します。

対象端末にアプリを接続して検証します。 フリートをステージングする前に、ベースラインとリカバリのレコードをアプリケーション検証リクエストに添付します。

資料

SDK・APIパターン

ベンダーのバイナリ、APIリファレンス、ファームウェア、ソースコード例は、再配布許可と対応範囲を記録してから公開します。

対象端末にアプリを接続して検証します。

機密情報を含まないアプリの業務フロー、現在の端末、連携方法を共有いただければ、最適な検証成果物の範囲を定めます。

アプリを接続して検証