Peta ketergantungan menunjukkan apa yang bisa berubah dengan sendirinya

Suatu aplikasi mungkin memuat satu perpustakaan utama yang memuat dependensi transitif. SDK pihak ketiga dapat menyertakan komponen asli yang bergantung pada ekspor atau perintah inisialisasi tertentu.

Catat nama perpustakaan, ketergantungan langsung dan transitif, muat titik masuk, waktu inisialisasi, dan pemanggil. Perubahan dalam satu SO mungkin gagal hanya ketika perpustakaan lain dimuat nanti.

  • Ketergantungan primer dan transitif
  • Perpustakaan sistem dan pihak ketiga
  • Memuat entri dan urutan inisialisasi
  • Tahap kegagalan paling awal

Pendaftaran JNI membatasi perlakuan simbol

Registrasi statis bergantung pada konvensi penamaan, sedangkan registrasi dinamis biasanya mengikat metode Java ke fungsi asli selama inisialisasi. Mereka menerapkan batasan berbeda pada visibilitas, penggantian nama, dan waktu pemuatan.

Sebelum mengubah ekspor atau representasi fungsi, identifikasi bagaimana setiap entri penting didaftarkan, apakah refleksi atau kode pihak ketiga menyebutnya, dan bagaimana Java dan kegagalan asli akan didiagnosis.

ABI adalah batas eksekusi, bukan label

arm64-v8a, armeabi-v7a, dan x86_64 menggunakan instruksi yang berbeda, keluaran tertaut, dan ketergantungan. Peluncuran build atau emulator yang berhasil untuk satu ABI tidak menetapkan arsitektur target lainnya.

Periksa ABI di APK akhir, lalu verifikasi resolusi ketergantungan, peluncuran aplikasi, panggilan JNI penting, penanganan kesalahan, dan jalur SDK pihak ketiga pada setiap arsitektur target.

  • Paket terakhir berisi target ABI
  • Setiap ketergantungan teratasi
  • Jalur kritis JNI berulang
  • Arsitektur yang tidak tercakup bersifat eksplisit

Terima kekuatan perlindungan dengan stabilitas pemuatan

Pengurangan simbol, perlakuan string, dan virtualisasi fungsi menghilangkan petunjuk yang berbeda. Tidak ada satu tindakan pun yang mewakili perlindungan asli yang lengkap, dan peluncuran aplikasi atau fungsi yang sering dijalankan memerlukan perhatian kinerja khusus.

Mulailah dengan serangkaian kecil fungsi berharga dengan masukan dan keluaran yang jelas. Perluas cakupan pada kandidat yang sama dan pertahankan versi yang dapat dipulihkan untuk setiap perubahan konfigurasi.

Terapkan panduan tersebut ke aplikasi nyata

Menyediakan tumpukan, jalur kritis, sistem target, dan kandidat saat ini sehingga Yudun dapat merekomendasikan tinjauan perlindungan dan kompatibilitas yang terfokus.