android 6.0 以后 WebView改动
来源:互联网 发布:网络电视能连手机吗 编辑:程序博客网 时间:2024/06/03 23:02
android 6.0
Building the Chromium-based WebView in AOSP is no longer supported. WebView can
now be built entirely from the Chromium source code.
General instructions for building WebView from Chromium:
https://www.chromium.org/developers/how-tos/build-instructions-android-webview
------
The prebuilt libwebviewchromium.so included in these APKs is built from Chromium
release tag 44.0.2403.114. To match our build settings, set:
GYP_DEFINES="OS=android release_unwind_tables=0 buildtype=Official chrome_build_id='2e7c7a0f-c733-4b9a-9c8e-d3cf0938369b'"
in your environment before running build/gyp_chromium.
------
Due to WebView API changes in the M release, the Java code in the Chromium 2403
branch is not compatible with M. We'll be working on upstreaming the M-specific
Java changes to Chromium once the final M SDK is released.
在android 6.0 以后 针对typeface部分,可以考虑修改external/skia/src/ports/SkFontMgr_android.cpp
1、首先测试底层流程,通过添加Log 信息:
通过定义宏,引入android层log
#include <android/log.h>
#define LOG_TAG "TESTFONT"
#define ALOG(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
使用上 和log.d,log.e,log.v,log.i,log.w基本一致
2、编译ROM 装机运行。。
3、通过adb logcat 查看信息
4、增加对.so文件调试的信息。
对.so文件调试:使用arm-linux-androideabi-4.9 调试log中的具体地址信息。
由于命令过长,使用alias别名方式:
alias(中文称为“别名”)允许使用更加简短的名称来重新定义 Linux 中的 Shell 命令,从而简化命令行的输入。如果经常与 CLI 打交道,那么使用 alias 不仅会节省时间,而且也能提高效率,真是一举两得的好事。
基本用法: alias 的基本使用方法为:alias 新的命令='原命令 -选项/参数'。举例说明,alias l=‘ls -lsh' 将重新定义 ls 命令,现在只需输入 l 就可以列目录了。
获知别名: 直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。
删除别名: 要删除一个别名,可以使用 unalias 命令,如 unalias l。
这个方法只是暂时的,如果重启一次就失效了,永久生效一个命令怎么办呢?
打开 .bashrc (应该是ubuntu发行版的,其他发行版也许可以修改.bash_profile)可以看到
……
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
……
方法1 :直接在我们的 环境变量文件中添加 alias xx='xxxxx'
方法2 : .bashrc 中有一句话
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
就是说可以另外新建一个文件用于专门存放自己的alias信息
例
$ cd
$ vi .bash_aliases
在文件中输入自己想设置的命令 alias rm='rm -i' 然后保存推出
$ source .bash_aliases #让我们的环境生效
总之,要关注你所改动源码中的提示信息,一般都会很用。
5、使用.so文件调试,具体定位到代码crash的具体行数,进行下一步分析。
6 替换libskia.so以后,webview字体没有改变,方法失败。尝试分析webviewgoogle.apk。在android6.0 以后,由于都是webview发生改动,渲染工作均由google自己提供的apk提供,对vendor/google/apps/WebViewGoogle.apk进行分析,使用aapt工具,我们发现其使用了一个libwebviewchromium.so动态链接库,使用readelf对其进行解析
部分关键代码如下:
Dynamic section at offset 0x1c9ee8c contains 28 entries: 标记 类型 名称/值 0x00000003 (PLTGOT) 0x1ca6ab8 0x00000002 (PLTRELSZ) 2680 (bytes) 0x00000017 (JMPREL) 0x1f4180 0x00000014 (PLTREL) REL 0x00000011 (REL) 0x1eb90 0x00000012 (RELSZ) 1922544 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x6ffffffa (RELCOUNT) 240244 0x00000006 (SYMTAB) 0x18c 0x0000000b (SYMENT) 16 (bytes) 0x00000005 (STRTAB) 0x59dc 0x0000000a (STRSZ) 93051 (bytes) 0x00000004 (HASH) 0x1c558 0x00000001 (NEEDED) 共享库:[liblog.so] 0x00000001 (NEEDED) 共享库:[libandroid.so] 0x00000001 (NEEDED) 共享库:[libjnigraphics.so] 0x00000001 (NEEDED) 共享库:[libm.so] 0x00000001 (NEEDED) 共享库:[libc.so] 0x00000001 (NEEDED) 共享库:[libdl.so] 0x0000000e (SONAME) Library soname: [libwebviewchromium.so] 0x0000001a (FINI_ARRAY) 0x1bdd8d8 0x0000001c (FINI_ARRAYSZ) 8 (bytes) 0x00000019 (INIT_ARRAY) 0x1c9fe68 0x0000001b (INIT_ARRAYSZ) 36 (bytes) 0x00000010 (SYMBOLIC) 0x0 0x0000001e (FLAGS) SYMBOLIC BIND_NOW 0x6ffffffb (FLAGS_1) 标志: NOW 0x00000000 (NULL) 0x0重定位节 '.rel.dyn' 位于偏移量 0x1eb90 含有 240318 个条目: Offset Info Type Sym.Value Sym. Name01b61cc8 00000017 R_ARM_RELATIVE这其中只有一部分共享库,其他的渲染部分由其自己提供,所以基本上没有办法在android 6.0 以后对webview做出更多改动。
- android 6.0 以后 WebView改动
- Android 6.0改动之运行时权限
- Android 4.4 WebView重大改动:由Chromium驱动 支持HTML5和CSS新特性
- Android 6.0+以后权限问题
- WebView加载网页失败以后
- python模块学习---urllib,urlparse(3.0以后有改动)
- UIAlertView和UIActionSheet类在IOS8以后的改动
- python模块学习---urllib,urlparse(3.0以后有改动)
- Android-kernel】Android 内核改动
- android 4.4以后webView的适配,setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN)失效
- WinCE 6.0 DirectDraw改动
- Android 2.1 SDK升级改动
- Android 4.0 Manifest Permission 改动
- Android量产软件改动信息
- android常用的小改动
- Android L Settings改动介绍
- android 量产软件改动信息
- Android量产软件改动信息
- HTML学习笔记(上)
- Android Studio配置greenDao框架详解--说说那些坑
- Android开发中内存泄露与优化
- Leetcode Contains Duplicate II
- Content-Encoding与Content-Type的区别
- android 6.0 以后 WebView改动
- Quiz 6b_question#7
- ajax(一)
- Linux学习练习之实现小shell
- SpringMVC学习系列(4) 之 数据绑定-1
- 集合类Collection
- RC4密码算法实现
- Spring AOP 简介以及简单用法
- 类和成员变量