Mein Ziel ist es, eine modifizierte Version von WebView (nennen Sie es WebViewCustom) in Android für meine persönliche Verwendung in meiner Anwendung. WebView basiert auf WebKit, daher muss ich es in C mittels NDK kompilieren. Ich bin jetzt nicht daran interessiert, am Open-Source-Android-Projekt teilzunehmen. Daher besteht mein Bedarf darin, die ursprüngliche C-Quelle von WebView zu kompilieren und sie als benutzerdefinierte Steuerung in meiner Android-Anwendung zu verwenden (sowohl SDK als auch NDK sind mögliche Umgebungen) für die Anwendung). Ich denke, dass es ohne all die GIT WebKit-Sachen möglich ist, an denen ich nicht interessiert bin, aber ich bin kein Experte für die Android- und WebKit-Projekte. Ist es möglich, den WebView-Code einfach zu bearbeiten, zu kompilieren und als neues Steuerelement in meine Anwendung zu übernehmen? Können Sie mir die wichtigsten Schritte dieser Aufgabe zeigen?Android NDK: benutzerdefinierte WebView kompilieren von Quelle
Antwort
Dies ist sicherlich möglich. Die Hauptschwierigkeit bei der Wiederherstellung von android.webkit
aus der Quelle liegt in dem Fehlen einer korrekten Build-Umgebung. Es war nie dazu gedacht, außerhalb der Zielplattform gebaut zu werden, aber ein paar einfache Hacks um die Quellen machen es ziemlich einfach zu erreichen.
Zuerst muss das gesamte android.webkit
Paketgeschäft aus offensichtlichen Gründen umbenannt werden, da eine android.webkit.WebView
Klasse bereits zur Laufzeit verfügbar sein würde. Verwenden Sie zum Beispiel sed
auf allen frameworks/base/core/java/android/webkit
Baum.
Grundsätzlich müssen Sie den vollständigen Quellbaum greifen, initialisieren eine Build-Umgebung (Weitere Informationen hier http://source.android.com/source/initializing.html), make framework
die interne Laufzeitumgebung zur Verfügung zu stellen, erstellen Sie eine neue Entwicklungsplattform, ersetzen Sie alle Klassen von framework.jar
(nach dem Bau ist es in out/target/common/obj/JAVA_LIBRARIES/framework_intermediaries/classes.jar
) in android.jar
der Plattform, bauen Sie Ihr eigenes webkit
Paket gegen diese neue Plattform, die die Interna enthält.
Weitere Informationen zum Abrufen einer internen Laufzeit für Entwicklungszwecke finden Sie unter https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/.
Sie werden auch core_intermediaries
benötigen, bouncycastle_intermediaries
und andere, um webkit
zu kompilieren, sind diese alle zur Verfügung, wenn make framework
aufgerufen wird, sucht die Fehler bei, wenn Ihr webkit
Paket bauen und grep die out/target/common/obj/JAVA_LIBRARIES/
, um herauszufinden, welche Klassen die Symbole enthalten.
Das ist nicht alles, aber das Paket verwendet libwebcore.so
, die native Methoden zu dem android.webkit
Paket verfügbar macht; Dazu müssten alle nativen Methodenbindungen für Ihren neuen Paketnamen registriert sein (in external/webkit/WebKit/android/jni
) und ohne vorherige Verknüpfung (make libwebcore
) neu kompiliert und mit Ihrer Anwendung als native Bibliothek verpackt werden.
Nachdem alles erfüllt ist, würden Sie dann Ihre eigene WebView
Klasse aus Ihrem eigenen Paket anstelle des android.webkit
verwenden. Wenn Sie beabsichtigen, android.webview
vollständig zu ersetzen - müssen Sie einen framework.jar
neu kompilieren und es in system/framework/
(root-Berechtigungen erforderlich) ersetzen.
Hat das für jemanden von euch funktioniert? –
Falsche Informationen für jetzt. Sie müssen keine framework.jar in/system/kompilieren. Wie ich Dolphin Browser mit seinem benutzerdefinierten WebView basierend auf Android sehen, aber sie nicht System berühren. – Lazy
@Lazy Ich habe nicht gesagt, dass Sie framework.jar kompilieren müssen, um ein benutzerdefiniertes WebView zu verwenden, Sie müssen es nur tun, wenn Sie das Standard-WebView ersetzen wollen (benötigt root oder benutzerdefinierte Distribution). – soulseekah
- 1. Android NDK kompilieren gmp Bibliothek
- 2. android cross kompilieren, ndk, toolchain
- 3. Android Webview benutzerdefinierte Fehlerseite
- 4. NDK kompilieren mehrere Bibliotheken
- 5. Android NDK Standard Header Datei kompilieren Fehler
- 6. NDK r7c kompilieren Problem
- 7. benutzerdefinierte Schriftart für Webview Android
- 8. Kompilieren von C++ - Code mit Cygwin für JNI (Android NDK)
- 9. OpenSSL kompilieren von Quelle mit Cmake?
- 10. Verwendung von Android NDK
- 11. Android NDK inkrementelle Build
- 12. NDK kompilieren Warnungen auf OCR Tesseract Bibliotheken für Android
- 13. Kompilieren FFmpeg 3.1.1 für X 86 mit Android NDK
- 14. Android JSON Benutzerdefinierte ListView mit Webview
- 15. Android NDK freigegebene Bibliothek Kompilierungsprobleme können statische Bibliothek nicht kompilieren
- 16. Gibt es irgendeine Methode, libuv mit android NDK zu kompilieren?
- 17. So kompilieren Boost 1.61 für Android NDK 11
- 18. Android Studio NDK Ausgabe
- 19. „undefined reference“ Fehler kompilieren, wenn Nmap von der Quelle kompilieren
- 20. Kompilieren Qt von Quelle mit nmake installieren
- 21. Debuggen von Android NDK, unter Windows
- 22. Alte Versionen von Android NDK
- 23. Android NDK: keine Archivsymboltabelle
- 24. Maven: Keine Quelle zu kompilieren
- 25. Mit der Quelle eines anderen Moduls in Android Studio kompilieren
- 26. Erhalten von Hardware Gleitpunkt mit Android NDK
- 27. Android NDK schön Drucken
- 28. Standard-Bibliothek gehören Android NDK
- 29. Android NDK #define Probleme
- 30. Android ndk verschachtelte Module
Haben Sie das geschafft? Ich bin auch in diesem Ansatz interessant. –