Android NDK: custom WebView compiling from source

Moim celem jest stworzenie zmodyfikowanej wersji WebView (nazwijmy ją WebViewCustom) w Androidzie do osobistego użytku w mojej aplikacji. WebView jest oparty na WebKit, więc muszę skompilować go w C za pomocą NDK. Nie jestem zainteresowany udziałem w projekcie open-source Android teraz, więc moja potrzeba jest po prostu być w stanie skompilować oryginalne źródło C WebView i używać go jako niestandardowej kontroli w mojej aplikacji na Androida (zarówno SDK, jak i NDK są możliwymi środowiskami dla aplikacji). Myślę, że tak. możliwe bez tych wszystkich rzeczy GIT WebKit mnie nie interesuje, ale nie jestem ekspertem od projektów Android i WebKit. Czy można po prostu edytować i kompilować Kod WebView i umieścić go w mojej aplikacji jako nową kontrolę? Czy możesz mi pokazać główne kroki tego zadania?

Author: P5music, 2012-05-23

1 answers

Jest to z pewnością możliwe. Główną trudnością w odbudowie android.webkit ze źródła jest brak poprawnego środowiska budowania. Nigdy nie zamierzano go budować poza docelową platformą, ale kilka prostych hacków wokół źródeł sprawia, że jest to dość łatwe do wykonania.

Po pierwsze, cały pakiet android.webkit musi zostać przemianowany z oczywistych powodów, ponieważ klasa android.webkit.WebView byłaby już dostępna podczas uruchamiania. Użyj sed na całym drzewie frameworks/base/core/java/android/webkit dla przykład.

Zasadniczo musisz pobrać pełne drzewo źródłowe, zainicjować środowisko budowania (więcej informacji tutaj http://source.android.com/source/initializing.html), make framework Aby udostępnić wewnętrzne środowisko uruchomieniowe, Utwórz nową platformę programistyczną, Zamień wszystkie klasy z framework.jar (Po zbudowaniu w out/target/common/obj/JAVA_LIBRARIES/framework_intermediaries/classes.jar) na android.jar platformy, Zbuduj własny pakiet webkit na tej nowej platformie, która zawiera wewnętrzne.

Zobacz https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/{[31] } aby uzyskać więcej informacji na temat uzyskania wewnętrznego środowiska wykonawczego dostępnego dla celów programistycznych.

Będziesz również potrzebować core_intermediaries, bouncycastle_intermediaries i inne aby skompilować webkit, wszystkie są dostępne po wywołaniu make framework, spójrz na błędy podczas budowania pakietu webkit i grep out/target/common/obj/JAVA_LIBRARIES/, aby dowiedzieć się, które klasy zawierają symbole.

To nie wszystko, jednak pakiet używa libwebcore.so, które wystawia natywne metody na pakiet android.webkit; musiałoby to mieć wszystkie natywne powiązania metod zarejestrowane na nową nazwę pakietu (w external/webkit/WebKit/android/jni) i być przekompilowane bez wstępnego linkowania (make libwebcore) i spakowane z aplikacją jako natywna biblioteka.

Gdy wszystko będzie spełnione, użyjesz własnej klasy WebView z własnego pakietu zamiast android.webkit. Jeśli zamierzasz całkowicie zastąpić android.webview - będziesz musiał przekompilować framework.jar i zastąpić it inside system/framework/ (wymagane uprawnienia roota).

 7
Author: soulseekah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-26 20:53:01