Cara mencampur file 32 dan 64-bit. Jadi dalam aplikasi

Carmelo M 09/15/2017. 1 answers, 84 views
java android android linux android-ndk android-ndk ndk-build

Pertama, saya tahu bahwa dalam sebuah aplikasi tidak memungkinkan penggunaan arsitektur yang berbeda dari file .so yang berbeda (Bagian hanya menggunakan 32, bagian lain hanya menggunakan 64)

Jadi, saya mencoba membuka proses baru untuk memuat file 64 dan 32-bit secara dinamis, tetapi System.load() membuang kesalahan dan aplikasi System.load() ! Bagaimana mengatasi masalah ini melalui banyak proses? Atau apakah ada cara lain untuk menyelesaikan ini?

5 Comments
Markus 07/27/2017
Selamat datang di SO! Mohon luangkan waktu untuk membaca halaman bantuan , terutama bagian yang bernama "Topik apa yang bisa saya tanyakan di sini?" dan "Jenis pertanyaan apa yang harus saya hindari bertanya?" . Juga silakan ikuti tur dan baca tentang cara mengajukan pertanyaan yang bagus . Terakhir, silakan pelajari cara membuat Contoh Minimal, Lengkap, dan Dapat Diverifikasi . Detail tentang kesalahan akan sangat membantu.
Alex Cohn 07/27/2017
Itu ide yang bagus! Tetapi proses anak seperti apa yang ingin Anda mulai? Sebuah layanan? Saya tidak berpikir ini bisa berfungsi, karena sistem memutuskan apakah akan mengaktifkan mode 32-bit berdasarkan analisis APK Anda, dan JVM diatur dengan benar.
Alex Cohn 07/27/2017
Lihat stackoverflow.com/a/31879900/192373 : pm dapat memaksa ABI saat menginstal aplikasi.
Carmelo M 07/28/2017
@AlexCohn Terima kasih! Saya setuju dengan Anda, proses anak (Aktivitas) tidak dapat memecahkan masalah ini。 [stackoverflow.com/a/31879900/192373] tidak berfungsi, karena saya ingin bagian dari fungsi menggunakan 32-bit .so, dan bagian dari fungsi menggunakan 64-bit .so , di aplikasi yang sama.
Carmelo M 07/28/2017
@AlexCohn Apakah Anda punya ide lain? Menguasai

1 Answers


Alex Cohn 07/30/2017.

Yah, aku memang mencoba. Di hadapannya, ini berfungsi: gunakan armeabi shared libs 'dengan cara yang biasa', dan jalankan perintah arm64-v8a dari Java dengan Runtime.exec () atau dari C dengan sistem () .

Anda dapat menempatkan aset yang dapat dieksekusi dan membukanya secara manual, atau Anda dapat menipu dan mengganti namanya sehingga dimulai dengan lib dan diakhiri dengan .so ; sekarang Anda bisa meletakkan file ini di direktori jniLibs/armeabi .

Cara sebaliknya juga berfungsi: jalankan 32-bit executable (jangan lupa -fPIE ) dari aplikasi 64-bit.

Pastikan bahwa jalur pencarian perpustakaan tidak berbenturan.

2 comments
Carmelo M 08/04/2017
Itu ide yang bagus !!! Proyek saya tidak sama dengan operasi latar belakang transcoding video, tetapi perlu memuat grafik tiga dimensi, melalui SurfaceView untuk berinteraksi dengan gerakan pengguna. Cara menghadapi interaksi UI ini adalah masalah besar, saya harap Anda bisa memberi saya beberapa ide, terima kasih
Alex Cohn 08/04/2017
Saya tidak berpikir Anda dapat menangani UI atau melakukan grafik langsung melalui komunikasi interprocess

Related questions

Hot questions

Language

Popular Tags