Mi objetivo es crear una versión modificada de WebView (llámalo WebViewCustom) en Android para mi uso personal en mi aplicación. WebView está basado en WebKit, así que necesito compilarlo en C por medio de NDK. Ahora no estoy interesado en participar en el proyecto de código abierto de Android, así que mi única necesidad es poder compilar la fuente C original de WebView y usarla como control personalizado en mi aplicación Android (tanto el SDK como el NDK son posibles entornos para la aplicación). Creo que es posible sin todas las cosas de GIT WebKit que no estoy interesado, pero no soy un experto en los proyectos de Android y WebKit. ¿Es posible editar y compilar el código WebView y ponerlo en mi aplicación como un nuevo control? ¿Me puede mostrar los pasos principales de esta tarea?Android NDK: compilación WebView personalizada desde la fuente
Respuesta
Esto es ciertamente posible. La principal dificultad en la reconstrucción de android.webkit
desde la fuente reside en la falta de un entorno de compilación correcto. Nunca fue pensado para ser construido fuera de la plataforma objetivo, pero un par de ataques simples alrededor de las fuentes lo hacen bastante fácil de lograr.
En primer lugar, todo el negocio de paquetes android.webkit
tiene que renombrarse por razones obvias, ya que una clase android.webkit.WebView
ya estaría disponible durante el tiempo de ejecución. Use sed
en todos los árboles frameworks/base/core/java/android/webkit
por ejemplo.
Básicamente, usted tiene que agarrar el árbol de código fuente completo, inicializar un entorno de construcción (Más información aquí http://source.android.com/source/initializing.html), make framework
para que el entorno de tiempo de ejecución interna disponible, crear una nueva plataforma de desarrollo, sustituir todas las clases de framework.jar
(después de la construcción es en out/target/common/obj/JAVA_LIBRARIES/framework_intermediaries/classes.jar
) en android.jar
de la plataforma, construya su propio paquete webkit
contra esta nueva plataforma que contiene las partes internas.
Consulte https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/ para obtener más información sobre cómo obtener un tiempo de ejecución interno disponible para fines de desarrollo.
También necesitará core_intermediaries
, bouncycastle_intermediaries
y otros con el fin de recopilar webkit
, estos son todos los disponibles cuando make framework
se invoca, mirar los errores en la construcción de su paquete webkit
y grep la out/target/common/obj/JAVA_LIBRARIES/
de averiguar qué clases contiene los símbolos.
Eso no es todo, sin embargo, el paquete usa libwebcore.so
que expone los métodos nativos al paquete android.webkit
; esto debería tener todos los enlaces de métodos nativos registrados en su nuevo nombre de paquete (en external/webkit/WebKit/android/jni
) y recompilarse sin vincular previamente (make libwebcore
) y empaquetarse con su aplicación como una biblioteca nativa.
Después de que todo esté satisfecho, entonces usaría su propia clase WebView
de su propio paquete en lugar del android.webkit
. Si tiene la intención de reemplazar por completo el android.webview
, deberá recompilar un framework.jar
y reemplazarlo dentro de system/framework/
(se requieren privilegios de administrador).
¿Funcionó esto para ustedes? –
Información falsa por ahora. No tiene que compilar un framework.jar en/system /. Como veo Dolphin Browser usando su WebView personalizado basado en Android, pero no tocan el sistema. – Lazy
@Lazy No dije que tuviera que compilar framework.jar para usar un WebView personalizado, solo tiene que hacerlo si tiene la intención de reemplazar el WebView predeterminado (necesita una distribución raíz o personalizada). – soulseekah
- 1. Cómo utilizar una fuente personalizada con WebView
- 2. Fuente personalizada en Android
- 3. Accediendo a la fuente personalizada desde Jar
- 4. fuente personalizada en android ListView
- 5. Android-ndk - script de compilación simple para ndk-build para cygwin
- 6. crtbegin_so.o faltante para android toolchain (compilación personalizada)
- 7. Android NDK incremental build
- 8. android - Cómo hacer una llamada desde webview
- 9. Android WebView JavaScript desde los recursos
- 10. Obtención de HTML fuente desde una WebView en Cocoa
- 11. Android - Cómo establecer una fuente personalizada para la aplicación entera
- 12. Llamar a la función Java desde JavaScript sobre Android WebView
- 13. Android NDK #define Problemas
- 14. biblioteca de compilación de ndk fuera del árbol de código fuente del proyecto principal
- 15. Android NDK limitaciones?
- 16. Tamaño de fuente de Android WebView en píxeles
- 17. Integración de ndk-gdb de android ndk con emacs?
- 18. Ajustar el tamaño de fuente de Android WebView
- 19. android establece una fuente personalizada para una pintura
- 20. Android WebView Protocol Handler
- 21. Desarrollo Android NDK
- 22. Android Webview navegación privada
- 23. Android NDK Debugging
- 24. android ndk multitouch?
- 25. Android NDK Mutex
- 26. Lisp y Android NDK
- 27. Android NDK Escribir archivo
- 28. Android Assets and NDK
- 29. Usar C con Android ndk
- 30. Uso de fuente personalizada en UIWebView
¿Logró que esto funcionara? También soy interesante en este enfoque. –