Intereting Posts
PlacePicker.getPlace () устарел Использование API Google Адресов в Android Небелые пробелы перед ошибкой первого тега Связано с представлением для перемещения внутри RelativeLayout Сложность строк GridView: как сделать высоту строки подходящей для самого высокого элемента? Как использовать unicode в ресурсе Android? Как подписать уже скомпилированный APK Android: Можно ли обновить ImageView / ImageButton с номером, чтобы показать количество новых сообщений? Работа с Android-аппаратом Назад Надуть макет с помощью ImageButton внутри фрагмента программно Как центрировать изображение по вертикали в этом RelativeLayout Реферат: сделайте снимок с использованием намерения камеры и отобразите фотографию с правильной ориентацией (работает, надеюсь, на все устройства) Попытка проверить, существует ли файл во внутреннем хранилище Графический сбой Lollipop Android. Съемка с фронтальной камеры поворачивает фотографию.

Android NDK: пользовательская сборка WebView из источника

Моя цель – создать модифицированную версию WebView (назовите ее WebViewCustom) в Android для моего личного использования в моем приложении. WebView основан на WebKit, поэтому мне нужно скомпилировать его на C с помощью NDK. Сейчас я не заинтересован участвовать в проекте Android с открытым исходным кодом, поэтому мне нужно просто скомпилировать исходный источник C WebView и использовать его в качестве настраиваемого элемента управления в приложении для Android (как SDK, так и NDK – это возможные среды Для приложения). Я думаю, что это возможно без всего того, что GIT WebKit мне неинтересно, но я не эксперт проектов Android и WebKit. Можно ли просто отредактировать и скомпилировать код WebView и поместить его в мое приложение в качестве нового элемента управления? Можете ли вы показать мне основные шаги этой задачи?

Solutions Collecting From Web of "Android NDK: пользовательская сборка WebView из источника"

Это, безусловно, возможно. Основная трудность в перестройке android.webkit из источника заключается в отсутствии правильной среды сборки. Его никогда не планировали строить за пределами целевой платформы, но несколько простых хаков вокруг источников делают это довольно легко.

Прежде всего, весь бизнес-пакет android.webkit должен быть переименован по понятным причинам, поскольку класс android.webkit.WebView уже будет доступен во время выполнения. Например, используйте sed во всех sed frameworks/base/core/java/android/webkit .

В основном вы должны захватить полное исходное дерево, инициализировать среду сборки (дополнительная информация здесь http://source.android.com/source/initializing.html ), make framework чтобы сделать внутреннюю среду выполнения доступной, создать новую платформу разработки , Замените все классы из framework.jar (после создания его в out/target/common/obj/JAVA_LIBRARIES/framework_intermediaries/classes.jar ) на платформе android.jar платформы, создайте собственный пакет webkit против этой новой платформы, которая содержит внутренности.

Ознакомьтесь с https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/ для получения дополнительной информации о том, как получить внутреннюю среду выполнения, доступную для целей разработки.

Для компиляции webkit вам также понадобятся core_intermediaries , bouncycastle_intermediaries и другие, все они доступны, когда вызывается make framework , посмотрите на ошибки при создании пакета webkit и grep out/target/common/obj/JAVA_LIBRARIES/ чтобы выяснить Какие классы содержат символы.

Однако это еще не все, пакет использует libwebcore.so который предоставляет собственные методы для пакета android.webkit ; Это должно было бы привязать все собственные привязки методов к вашему новому имени пакета (во external/webkit/WebKit/android/jni ) и быть перекомпилировано без предварительной привязки ( make libwebcore ) и упаковано вместе с вашим приложением в качестве родной библиотеки.

После того, как все будет удовлетворено, вы будете использовать свой собственный класс WebView из своего собственного пакета, а не для android.webkit . Если вы намерены полностью заменить android.webview – вам придется перекомпилировать файл framework.jar и заменить его внутри system/framework/ (требуются привилегии root).