Mục tiêu của tôi là tạo phiên bản WebView đã sửa đổi (gọi nó là WebViewCustom) trong Android để sử dụng cá nhân trong ứng dụng của tôi. WebView là WebKit dựa trên vì vậy tôi cần phải biên dịch nó trong C bằng NDK. Tôi không quan tâm đến việc tham gia dự án Android nguồn mở bây giờ, vì vậy nhu cầu của tôi chỉ là có thể biên dịch nguồn C của WebView gốc và sử dụng nó như một điều khiển tùy chỉnh trong ứng dụng Android của tôi (cả SDK và NDK là môi trường có thể có) cho ứng dụng). Tôi nghĩ rằng có thể không có tất cả những thứ GIT WebKit mà tôi không quan tâm, nhưng tôi không phải là chuyên gia về các dự án Android và WebKit. Có thể chỉnh sửa và biên dịch mã WebView và đặt nó trong ứng dụng của tôi như một điều khiển mới không? Bạn có thể chỉ cho tôi các bước chính của tác vụ này không?NDK của Android: biên dịch WebView tùy chỉnh từ nguồn
Trả lời
Điều này chắc chắn có thể xảy ra. Khó khăn chính trong việc xây dựng lại android.webkit
từ nguồn nằm trong việc thiếu một môi trường xây dựng chính xác. Nó không bao giờ có ý định được xây dựng bên ngoài nền tảng đích, nhưng một vài hacks đơn giản xung quanh các nguồn làm cho nó khá dễ thực hiện.
Trước hết, toàn bộ doanh nghiệp gói android.webkit
phải được đổi tên thành các lý do rõ ràng, vì lớp android.webkit.WebView
đã có sẵn trong thời gian chạy. Sử dụng sed
trên tất cả các cây frameworks/base/core/java/android/webkit
chẳng hạn. Về cơ bản, bạn phải lấy cây nguồn đầy đủ, khởi tạo môi trường xây dựng (Thêm thông tin tại đây http://source.android.com/source/initializing.html), make framework
để tạo môi trường thời gian chạy nội bộ sẵn có, tạo nền tảng phát triển mới, thay thế tất cả các lớp từ framework.jar
(sau khi xây dựng nó) ở out/target/common/obj/JAVA_LIBRARIES/framework_intermediaries/classes.jar
) vào android.jar
nền tảng, xây dựng gói webkit
của riêng bạn dựa trên nền tảng mới này có chứa nội bộ.
Check-out https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/ để biết thêm thông tin về việc một thời gian chạy nội bộ có sẵn cho các mục đích phát triển.
Bạn cũng sẽ cần core_intermediaries
, bouncycastle_intermediaries
và những người khác để biên dịch webkit
, đây là tất cả sẵn khi make framework
được gọi, nhìn vào lỗi khi xây dựng gói webkit
của bạn và grep out/target/common/obj/JAVA_LIBRARIES/
để tìm ra những lớp này chứa các biểu tượng.
Đó không phải là tất cả, tuy nhiên, gói sử dụng libwebcore.so
hiển thị các phương pháp gốc cho gói android.webkit
; điều này sẽ cần phải có tất cả các phương pháp ràng buộc bản đăng ký tên gói mới của bạn (trong external/webkit/WebKit/android/jni
) và được biên dịch lại mà không prelinking (make libwebcore
) và đóng gói với ứng dụng của bạn như một thư viện bản xứ.
Sau khi mọi thứ được thỏa mãn, bạn sẽ sử dụng lớp học WebView
của riêng mình từ gói của riêng bạn thay vì android.webkit
. Nếu bạn dự định thay thế hoàn toàn android.webview
- bạn sẽ phải biên dịch lại framework.jar
và thay thế nó bên trong system/framework/
(yêu cầu đặc quyền root).
Tác phẩm này có phù hợp với mọi người không? –
Thông tin sai lệch ngay bây giờ. Bạn không phải biên dịch một framework.jar trong/system /. Như tôi thấy Dolphin Browser sử dụng WebView tùy chỉnh của nó dựa trên Android nhưng họ không chạm vào hệ thống. – Lazy
@Lazy Tôi không nói bạn phải biên dịch framework.jar để sử dụng WebView tùy chỉnh, bạn chỉ phải thực hiện nếu bạn dự định thay thế WebView mặc định (cần phân phối gốc hoặc tùy chỉnh). – soulseekah
- 1. Biên dịch STXXL dưới Android NDK r8b
- 2. biên dịch fftw3 trong android ndk
- 3. Android: Mở một ContextMenu từ onLongPress trong WebView tùy chỉnh
- 4. Làm cách nào để biên dịch thư viện bằng mã nguồn bằng các công cụ NDK?
- 5. Xây dựng gia tăng NDK của Android
- 6. Trình xử lý NDK của Android sử dụng trình biên dịch nào?
- 7. Có phương pháp nào để biên dịch libuv với NDK của Android không?
- 8. nguồn drawable từ thuộc tính tùy chỉnh
- 9. Biên dịch SQLite tùy chỉnh cho ứng dụng iPhone
- 10. Cách biên dịch Helloworld với mã nguồn Android
- 11. Hạn chế NDK của Android?
- 12. Android NDK: Cách lấy kiến trúc trình biên dịch trong Android.mk động
- 13. Android NDK: Lỗi: phải được bật với tùy chọn trình biên dịch -std = C++ 11 hoặc -std = gnu ++ 11
- 14. Lỗi khi biên dịch mẫu JNI android: -march không hợp lệ = tùy chọn: `ARMv5TE'
- 15. SCE - Nguồn cấp dữ liệu tùy chỉnh
- 16. Biên tập tùy chỉnh Opencv
- 17. Android webview bên trong một dịch vụ?
- 18. Phát triển NDK của Android
- 19. CMake: Cách thêm quy tắc biên dịch chung tùy chỉnh?
- 20. Có thể đặt tiêu đề HTTP tùy chỉnh trong WebView
- 21. Android NDK C++ 'wstring' hỗ trợ
- 22. Android NDK - xây dựng TessTwo (Fork của Tesseract Công cụ dành cho Android) - ndk-build không
- 23. Làm cách nào để biên dịch thư viện gốc của Android với Android Studio?
- 24. Thư viện C++ tiêu đề (GLM) không biên dịch với Android-NDK
- 25. SIGILL trong mã NDK của Android
- 26. Android phông chữ tùy chỉnh từ xaViews
- 27. Android C++ NDK
- 28. Nhận các tùy chọn trình biên dịch từ tệp thực thi đã biên dịch?
- 29. Cách thêm MACRO tùy chỉnh khi sử dụng NDK?
- 30. Có trình biên dịch mã nguồn gốc của Lisp không?
Bạn có quản lý để làm việc này không? Tôi cũng rất thú vị trong cách tiếp cận này. –