Mobile/GeckoView: Difference between revisions
(Completely overhaul the page) |
m (Minor copy tweaks) |
||
Line 13: | Line 13: | ||
* '''Full-Featured''': GeckoView is designed to expose the entire power of the Web to applications, including being suitable for building web browsers. | * '''Full-Featured''': GeckoView is designed to expose the entire power of the Web to applications, including being suitable for building web browsers. | ||
* '''Self-Contained''': Because GeckoView is a standalone library that you bundle with your application, you can be confident that the code you test is the code that will actually run. | * '''Self-Contained''': Because GeckoView is a standalone library that you bundle with your application, you can be confident that the code you test is the code that will actually run. | ||
* '''Standards Compliant''': Like Firefox, GeckoView offers excellent support for modern Web standards. | * '''Standards Compliant''': Like Firefox, GeckoView offers excellent support for modern Web standards. | ||
== Get Started == | == Get Started == | ||
Line 119: | Line 119: | ||
Interested in GeckoView? We're here to help. | Interested in GeckoView? We're here to help. | ||
If you | If you have questions or need assistance, please reach out by either: | ||
* [https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20for%20Android&component=GeckoView Filing a bug] | * [https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20for%20Android&component=GeckoView Filing a bug] |
Revision as of 16:11, 10 October 2018
GeckoView is Firefox Quantum's engine, packaged as a reusable Android library.
Mozilla uses GeckoView to power Firefox Reality, Firefox Focus, and more.
GeckoView serves a similar purpose to Android's built-in WebView, but it has its own APIs and is not a drop in replacement.
Why GeckoView?
While Android offers a built-in WebView, it's not intended for building browsers, and many advanced Web APIs are disabled. Android's WebView is also a moving target: it's impossible know exactly which engine (and what version of that engine) will power a WebView on client devices.
In contrast, GeckoView is:
- Full-Featured: GeckoView is designed to expose the entire power of the Web to applications, including being suitable for building web browsers.
- Self-Contained: Because GeckoView is a standalone library that you bundle with your application, you can be confident that the code you test is the code that will actually run.
- Standards Compliant: Like Firefox, GeckoView offers excellent support for modern Web standards.
Get Started
Building a browser? Check out Android Components, our collection of ready-to-use support libraries!
Configure Gradle
You need to add or edit four stanzas inside your module's build.gradle
file.
1. Set the GeckoView version
Like Firefox, GeckoView has three release channels: Stable, Beta, and Nightly. Browse the Maven Repository to see currently available builds.
ext {
geckoviewChannel = "nightly"
geckoviewVersion = "64.0.20180927100037"
}
2. Add Mozilla's Maven repository
repositories {
maven {
url "https://maven.mozilla.org/maven2/"
}
}
3. Configure build flavors
Note: Until we resolve Bug 1485045, you must configure a separate build variant for each CPU architecture.
android {
// ...
// Note: compileOptions is only required for minSdkVersion < 24
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
flavorDimensions "abi"
productFlavors {
x86 { dimension "abi" }
x86_64 { dimension "abi" }
arm { dimension "abi" }
aarch64 { dimension "abi" }
}
}
4. Add GeckoView Implementations
dependencies {
// ...
x86Implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-x86:${geckoviewVersion}"
x86_64Implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-x86_64:${geckoviewVersion}"
armImplementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-armeabi-v7a:${geckoviewVersion}"
aarch64Implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-arm64-v8a:${geckoviewVersion}"
}
Add GeckoView to a Layout
Inside a layout .xml
file, add the following:
<org.mozilla.geckoview.GeckoView
android:id="@+id/geckoview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
Initialize GeckoView in an Activity
1. Import the GeckoView classes inside an Activity:
import org.mozilla.geckoview.GeckoRuntime;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoView;
2. In that activity's onCreate
function, add the following:
GeckoView view = findViewById(R.id.geckoview);
GeckoSession session = new GeckoSession();
GeckoRuntime runtime = GeckoRuntime.create(this);
session.open(runtime);
view.setSession(session);
session.loadUri("about:buildconfig"); // Or any other URL...
You're done!
Your application should now load and display a webpage inside of GeckoView.
To learn more about GeckoView's capabilities, review GeckoView's JavaDoc or the reference application.
Getting Help
Interested in GeckoView? We're here to help.
If you have questions or need assistance, please reach out by either:
- Filing a bug
- Talking to us in #mobile on irc.mozilla.org.
Documentation and Examples
APIs
Building / Contributing
Bugs
Products / Examples