Bootstrap

Android集成三方浏览器之X5内核

很多应用开始采用 hybrid 开发模式,最近在做有关 webrtc 视频通讯的项目,也是使用 hybrid 开发。然而由于系统 WebView 的兼容性问题(Android 4.4 以前 webview 是基于 webkit ,4.4 及以后采用 chromium)。需要使用一款兼容性较好的内核「完美支持 webrtc」。

如今可以集成的浏览器内核主要有 腾讯X5服务 英特尔的CrossWalk 火狐Firefox_Focus Chromium

这一篇主要讲解腾讯 X5 浏览器的集成,不得不说官方文档 描述的东西太少,如果遇到问题可以去 X5论坛 搜索相关问题。

腾讯 X5 内核也是基于 chromium 的,相比原生的 WebView 而言,优化了用户的浏览体验。SDK 是通过共享使用用户手机上微信、手机QQ、QQ空间等软件已经下载好的 X5 内核。SDK 很小,且集成简单只需几行代码即可。

集成

先去官网下载 SDK 后将所需的 aarso 文件导入我们的工程。

x5内核暂时不提供64位的so文件,so可只保留"armeabi"文件夹,手机运行时会向下兼容。

导入SDK

modulebuild.gradle 中添加

//sdk中只提供了armeabi的文件夹和对应so文件
ndk {
abiFilters “armeabi”, “armeabi-v7a”, “x86”, “mips”
}

//添加aar文件
repositories {
flatDir {
dirs ‘libs’
}
}

dependencies {
compile(name: ‘你的aar文件’, ext: ‘aar’)
}

初始化X5服务

//在application中初始化
@Override
public void onCreate() {
super.onCreate();

//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
QbSdk.PreInitCallback callback = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg) {
//x5內核初始化完成的回调,
// true表示x5内核加载成功,
// false表示x5内核加载失败,会自动切换到系统内核。
}

@Override
public void onCoreInitFinished() {
}
};

QbSdk.initX5Environment(getApplicationContext(), callback);
}

在布局中添加 WebView

<com.tencent.smtt.sdk.WebView
android:id=“@+id/webview”
android:layout_width=“match_parent”
android:layout_height=“match_parent” />

初始化 Webview

public class MainActivity extends AppCompatActivity {
private ProgressBar progressBar;
private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = findViewById(R.id.progressbar);
webView = findViewById(R.id.webview);
initWebView();
}

private void initWebView() {
WebSettings settings = webView.getSettings(); //和系统webview一样
settings.setJavaScriptEnabled(true); //支持Javascript 与js交互
settings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口
settings.setAllowFileAccess(true); //设置可以访问文件
settings.setSupportZoom(true); //支持缩放
settings.setBuiltInZoomControls(true); //设置内置的缩放控件
settings.setUseWideViewPort(true); //自适应屏幕
settings.setSupportMultipleWindows(true); //多窗口
settings.setDefaultTextEncodingName(“utf-8”); //设置编码格式
settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
settings.setAppCacheMaxSize(Long.MAX_VALUE);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE); //缓存模式
webView.setWebViewClient(new WebViewClient() {

@Override

文末

那么对于想坚持程序员这行的真的就一点希望都没有吗?
其实不然,在互联网的大浪淘沙之下,留下的永远是最优秀的,我们考虑的不是哪个行业差哪个行业难,就逃避掉这些,无论哪个行业,都会有他的问题,但是无论哪个行业都会有站在最顶端的那群人。我们要做的就是努力提升自己,让自己站在最顶端,学历不够那就去读,知识不够那就去学。人之所以为人,不就是有解决问题的能力吗?挡住自己的由于只有自己。
Android希望=技能+面试

  • 技能
  • 面试技巧+面试题

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ttps://bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

;