Cách kết hợp các tệp 32 và 64 bit .so trong ứng dụng

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

Đầu tiên , Tôi biết rằng trong một ứng dụng không cho phép sử dụng hỗn hợp các kiến ​​trúc khác nhau của tệp .so (Phần chỉ sử dụng 32, phần khác chỉ sử dụng 64)

Vì vậy, tôi đã cố gắng để mở một quá trình mới để tự động tải 64 và 32-bit để các tập tin, nhưng System.load() ném lỗi và ứng dụng bị rơi! Làm thế nào để giải quyết vấn đề này thông qua nhiều quy trình? Hay có cách nào khác để giải quyết vấn đề này?

5 Comments
Markus 27/07/2017
Chào mừng bạn đến với SO! Vui lòng dành chút thời gian để đọc các trang trợ giúp , đặc biệt là các phần có tên "Tôi có thể hỏi chủ đề gì ở đây?""Tôi nên tránh những loại câu hỏi nào?" . Ngoài ra hãy tham quan và đọc về cách đặt câu hỏi hay . Cuối cùng, hãy tìm hiểu cách tạo Ví dụ tối thiểu, đầy đủ và có thể xác minh được . Thông tin chi tiết về lỗi sẽ giúp ích rất nhiều.
Alex Cohn 27/07/2017
Đó là một ý tưởng tuyệt vời! Nhưng bạn muốn bắt đầu loại quy trình nào? Một dịch vụ? Tôi không nghĩ rằng điều này có thể hoạt động, bởi vì hệ thống quyết định có bật chế độ 32 bit dựa trên phân tích APK của bạn hay không và JVM được thiết lập cho phù hợp.
Alex Cohn 27/07/2017
Xem stackoverflow.com/a/31879900/192373 : pm có thể buộc ABI trong khi cài đặt ứng dụng.
Carmelo M 28/07/2017
@AlexCohn Cảm ơn! Tôi đồng ý với bạn, một tiến trình con (Activity) không thể giải quyết vấn đề này。 [stackoverflow.com/a/31879900/192373] không hoạt động, bởi vì tôi muốn một phần của hàm sử dụng 32-bit .so, và một phần của chức năng sử dụng 64-bit .so , trong cùng một ứng dụng.
Carmelo M 28/07/2017
@AlexCohn Bạn có ý tưởng nào khác không? Bậc thầy

1 Answers


Alex Cohn 30/07/2017.

Vâng, tôi đã cố gắng. Trên khuôn mặt của nó, công trình này: sử dụng armeabi chia sẻ libs 'theo cách thông thường', và chạy một thực thi arm64-v8a từ Java với Runtime.exec () hoặc từ C với hệ thống () .

Bạn có thể đặt tệp thực thi trong nội dung và giải nén nó theo cách thủ công hoặc bạn có thể lừa và đổi tên nó để nó bắt đầu bằng lib và kết thúc bằng .so ; bây giờ bạn có thể đặt tập tin này trong thư mục jniLibs/armeabi .

Cách ngược lại cũng hoạt động: khởi chạy 32-bit thực thi (đừng quên -fPIE ) từ ứng dụng 64-bit.

Đảm bảo rằng các đường dẫn tìm kiếm trong thư viện không xung đột.

2 comments
Carmelo M 04/08/2017
Đó là một ý tưởng tuyệt vời !!! Dự án của tôi không giống với thao tác nền chuyển mã video, nhưng cần tải đồ họa ba chiều, thông qua SurfaceView để tương tác với cử chỉ của người dùng. Làm thế nào để đối phó với những tương tác giao diện người dùng là một vấn đề lớn, tôi hy vọng bạn có thể cho tôi một số ý tưởng, cảm ơn bạn
Alex Cohn 04/08/2017
Tôi không nghĩ rằng bạn có thể xử lý giao diện người dùng hoặc thực hiện đồ họa trực tiếp thông qua liên lạc giữa các quá trình

Related questions

Hot questions

Language

Popular Tags