在Android 中学习使用使用Firefox的渲染引擎——GeckoView(一)

GeckoView是由Mozilla推出的一个基于Gecko浏览器引擎可重用的Android库。

在了解GeckoView之前我也用过其他的webview,比如原生的webView内核,腾讯X5内核的以及crosswalk内核。那么在使用过程中,如果我们只是加载一些简单的网网页的话,原生的webview已经足够我们使用了,但是在遇到一些复杂的页面,和那些对渲染要求比较的高的时候,我们的原生webview就显得很没有优势了,且不同设备可能拥有这不同版本的webview,加上原生webview禁用了很多高级webApi,所以很多时候我们不得不选其他内核的webview进行加载网等操作,这样子我们也不用过多的去考虑目标平台的差异带来的问题。

即便是Google推出了基于 Chromium blink 内核实现的 WebView,但是很多国内厂商对其进行了精简或替代,导致 WebView 内核也是碎片化问题严重,这让开发者直接使用系统浏览器内核进行开发产生了众多顾虑,不同机型适配难度也大大增加

关于X5和CrossWalk对比原生webview 的优缺点我们后面再说,今天我们只聊聊GeckoView。

为什么选择GeckoView?

Android提供了内置的WebView,但它并非旨在构建浏览器,并且许多高级Web API被禁用。Android的WebView也是一个移动的目标:不可能确切知道哪个引擎(以及该引擎的哪个版本)将在客户端设备上为WebView提供动力。

相比之下,GeckoView是:

  • 功能齐全:GeckoView旨在将Web的全部功能展示给应用程序,包括适合构建Web浏览器。
  • 自包含的:因为GeckoView是与应用程序捆绑在一起的独立库,所以您可以确信所测试的代码是将实际运行的代码。
  • 符合标准:与Firefox一样,GeckoView为现代Web标准提供了出色的支持。

我们先来看看怎么使用的吧

配置Gradle

1、设置GeckoView版本

GeckoView具有三个发布渠道:Stable(稳定版),Bate(测试版)和Nightly(通常是开发者自己维护的一个版本。白天的时候开发者们将各自的修改提交到一个中心代码库,然后在晚上做一次编译得到的版本)。浏览Maven存储库https://maven.mozilla.org/?prefix=maven2/org/mozilla/geckoview/)以查看当前可用的内部版本。我目前使用的官网上介绍的版本,大家可以自行选用自己想要的版本。

ext {
    geckoviewChannel = "nightly"
    geckoviewVersion = "70.0.20190712095934"
}

2、田间Mozilla的Maven存储库

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.mozilla.org/maven2/"
        }
    }
}

3、配置Java8支持

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.geckotest"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

4、添加GeckoView依赖实现

 implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}:${geckoviewVersion}"

布局文件中使用GeckoView

 <org.mozilla.geckoview.GeckoView
            android:id="@+id/geckoview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

在java类中添加使用

package com.example.geckotest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import org.mozilla.geckoview.GeckoRuntime;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoView;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 隐藏标题
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // 设置全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);

        GeckoView view = findViewById(R.id.geckoview);
        GeckoSession session = new GeckoSession();
        GeckoRuntime runtime = GeckoRuntime.create(this);

        session.open(runtime);
        view.setSession(session);
        session.loadUri("https://www.baidu.com");

    }
}

简单的GeckoView使用到这里就算完成了,但是我们在实际使用中肯定没有这个简单,下一篇文章我们将继续深入了解一下GeckoView

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值