网站首页 > 技术文章 正文
为什么不使用原生的webview?
最近公司的项目接入了webview,但是坑巨多无比,尤其是其内存泄露。所以我在想是否可以有第三方封装了webview。
比较Crosswalk与TBS服务
1.Crosswalk这玩意儿我没用过,据说是很流畅和强大,但是有一点是我暂时无法接受的,接入Crosswalk的话会导致APP的体积增大20M左右 ~ 所以我就放弃了,不过大家想研究的话那就自己去百度吧 !(嘿嘿,微笑脸)
2. TBS,腾讯出品,其实有点坑,本来也准备接入一下支付宝和淘宝都用的UC的内核的Webview的,但是我看了一下,需要审核,有点麻烦 ~
开始配置
- 首先需要去网站腾讯TBS浏览服务 进行注册,吐槽一点,需要验证身份证信息,坑爹的一比
- 参考一下TBS接入文档 不过里面讲解的比较啰嗦,不太清楚。
- a. 简单来讲的话就是 首先下载SDK和官方DEMO:完整版SDK和官方DEMO ,然后进行导入jar包和so文件 。jar包直接复制官方DEMO里面的,然后导入library。so文件的话直接复制Demo里面的文件夹jniLibs,到src/main/jniLibs。
- b. 不过在这里有个很坑的点是需要对so文件进行配置的,由于X5暂时不提供64位so文件,但是现在绝大部分手机都是64位的,所以为了保证64位手机能正常加载x5内核,需要进行配置。配置方法参考:64位手机无法加载x5(libmttwebview.so is 32-bit instead of 64-bit)。
defaultConfig {
applicationId "com.jzt.mytbsdemo"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//配置so文件
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
//注意:这里之所以将这以下的代码注释掉,是因为我们已经到src/main/jniLibs里面导入了so文件,如果是在libs里面导入的so文件的话,则用以下代码 !
//android studio默认so文件加载目录为:src/main/jniLibs
//如在module的build.gradle按照如下方式,自定义了so文件加载目录请确保对应目录下只有armeabi目录
// sourceSets {
// main{
// jniLibs.srcDirs = ['libs']
// }
// }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
c. OVER了,于是的话就这样将SDK配置完成了。
3.添加权限:
<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" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4 . 配置Application
public class BaseApplicatiom extends Application {
@Override
public void onCreate() {
super.onCreate();
//初始化X5内核
QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
//x5内核初始化完成回调接口,此接口回调并表示已经加载起来了x5,有可能特殊情况下x5内核加载失败,切换到系统内核。
}
@Override
public void onViewInitFinished(boolean b) {
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
Log.e("@@","加载内核是否成功:"+b);
}
});
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
//别忘了在Manifest里面配置Appliaction的名字 !
<application
android:name=".BaseApplicatiom"
- 1
- 2
- 3
5 . Application里面配置key ,name一定得设置为: QBSDKAppKey
<meta-data
android:name="QBSDKAppKey"
android:value="PpeRpHjyzL5vTlc9LuNrRmHM" />
</application>
- 1
- 2
- 3
- 4
- 其它的都和Webview一样了,不过我看官方文档说的是只要出现水滴就是成功了,其实是错误的 ! ! ! 我的好几个APP都没有用TBS,但是也是水滴的。于是我找了好久,终于找到了这个测试的方法,绝对是niubility的~ X5内核加载问题自动检测工具发布啦
啦啦啦啦。。。下班了,明天再补充吧!!!
咳咳,回来了,继续啦啦啦啦 ~
7 . 经过测试以后得到的是这个,证明已经接入成功了!:
—————————————————————————————————-
是时候放出源代码了!——> TBS不官方不坑人の源代码
—————————————————————————————————-
About QA:
无法接入成功
SDK接入问题
判断接入问题
腾讯X5内核的集成和使用
Android WebView使用总结
—————————————————————————————————-
Expand QA:
AgentWeb
Android WebView使用总结
猜你喜欢
- 2024-09-12 Android的快速开发框架 afinal(android开发框架搭建)
- 2024-09-12 Flutter插件用于在移动平台中播放视频支持iOS和Android建议收藏
- 2024-09-12 赞!编程中Facebook图片加载库Fresco的使用方法!
- 2024-09-12 构建私有化APP系统消息推送(不依赖任何云服务)
- 2024-09-12 Flutter:实现视频播放的基本步骤(flutter视频列表)
- 2024-09-12 七爪源码:如何在 Android Webview 中使用 Javascript 注入
- 2024-09-12 打造您自己的Drozer模块,测试Android应用安全
- 2024-09-12 Android之打包后无法网络请求(android打包命令)
- 2024-09-12 Webview的使用和面试常见问题(webview go)
- 2024-09-12 基于安卓操作系统的手机端软电话SDK开发包
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)