在开发的时候,公司产品需要展示HTML5页面,而android原生的WebView的开发过程总结了一下....
一句话概括:不要怀疑自己。
后来寻找引擎 crosswalk和TBS X5做为最后的选择。
crosswalk开源引擎,很赞,但是要接受20MB的肥料,想具体了解的话。
X5呢,jar包只需要300kb左右,但是共享的QQ和微信的内核,所以说要是手机没有安装QQ或者微信,X5是不可能开启的。但是这问题在国内,不存在。
好了那就开始把。
http://x5.tencent.com/tbs/index.html注册登录之后,我们需要选择开发者后台
其中APPKey 经过添加生成。
这个就是申请界面,只需要名称和包名,填好就OK。
然后通过主页下载SDK之后,接入项目当中。
首先jar放之后,AndroidManifest.xml需要application中配置
建议的是开启硬件加速:
android:hardwareAccelerated="true"
name固定写死的,value就是申请后的appKey。
AndroidManifest.xml里加入权限声明:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
接下来在 bulid.gradle 中添加NDK库
defaultConfig {
.........
ndk {
//TBS 选择要添加的对应cpu类型的.so库。
abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a'
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
........
}
官方术语:
x5暂时不提供64位so文件,为了保证64位手机能正常加载x5内核,请参照如下链接修改相关配置 https://x5.tencent.com/tbs/technical.html#/detail/sdk/1/34cf1488-7dc2-41ca-a77f-0014112bcab7
简单的来说,做到这一步,我们就可以直接使用jar包提供的webView 来使用了。
现在可以加载页面试试了
。。。。。。( 这里直说x5,其他忽略)
显示网页文字时,可通过长按选择文字的标识判断,如下水滴状选择效果是x5webview 的标志:
其实实际使用中,确实比原生的webView快了不少,同时开发呀,兼容什么的,坑少了很多。(因为最近他们内核出了个问题,结果被我怼上了,怀疑自己挺长时间的,后来发现之后,沟通也蛮愉快的......吃饭喝酒二锅头,然后KTV 献歌一首丑八怪。~ 玩笑其实没有,忙)
走到这一步不要以为就完了,其实周围都是很“凶”险的,不信站起来向窗外向下望望。
虽然在接入的时候,只是负载了300kb左右的jar包,但同时也会有相应的麻烦之处,就是它需要预加载, 否则在使用的时候第一次调用会闪屏或者卡顿很久。
所以推荐的是在Application 就预加载,虽然APP在这样干之后回比起初启动慢一点。
private void initX5() {
TbsDownloader.needDownload(this, false);
QbSdk.initX5Environment(this,cb);
Log.d("X5 ——TBS","预加载中...");
QbSdk.setDownloadWithoutWifi(true);
if (!QbSdk.isTbsCoreInited()) {
// preinit只需要调用一次,如果已经完成了初始化,那么就直接构造view
QbSdk.preInit(BuildingMaterialApp.getInstance(), null);// 设置X5初始化完成的回调接口
}
QbSdk.setTbsListener(new TbsListener() {
@Override
public void onDownloadFinish(int i) {
L.d("onDownloadFinish");
}
@Override
public void onInstallFinish(int i) {
L.d("onInstallFinish");
}
@Override
public void onDownloadProgress(int i) {
L.d("onDownloadProgress:" + i);
}
});
}
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
Log.e("0912", " onViewInitFinished is " + arg0);
}
@Override
public void onCoreInitFinished() {
}
};
这是官方文档 http://x5.tencent.com/tbs/guide/sdkInit.html
如有需要播放视频的,文档有对其详细的说明。然后就这些,后面有时间更新联合X5 的webView 开发 setting配置 client拦截 以及js交互等,以及说一些坑和处理方法。
网友评论