Mobile/GeckoView: Difference between revisions
(File a new GeckoView bug) |
m (Fix section indentation) |
||
| Line 14: | Line 14: | ||
* '''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. | ||
== Getting Help == | == Getting Help == | ||
| Line 25: | Line 21: | ||
If you have questions or need assistance, please reach out by: | If you have questions or need assistance, please reach out by: | ||
* Talking to us in [ircs://irc.mozilla.org:6697/#mobile #mobile] on [[Irc|irc.mozilla.org]] | * Talking to us in the [ircs://irc.mozilla.org:6697/#mobile #mobile] IRC channel on [[Irc|Mozilla's IRC server "irc.mozilla.org"]] | ||
* Sending questions to the [https://mail.mozilla.org/listinfo/mobile-firefox-dev mobile-firefox-dev] mailing list | * Sending questions to the [https://mail.mozilla.org/listinfo/mobile-firefox-dev mobile-firefox-dev] mailing list | ||
== Get Started == | |||
''Building a browser? Check out [https://mozilla-mobile.github.io/android-components/ Android Components], our collection of ready-to-use support libraries!'' | |||
=== Configure Gradle === | === Configure Gradle === | ||
Revision as of 17:56, 7 February 2019
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.
Getting Help
Interested in GeckoView? We're here to help!
If you have questions or need assistance, please reach out by:
- Talking to us in the #mobile IRC channel on Mozilla's IRC server "irc.mozilla.org"
- Sending questions to the mobile-firefox-dev mailing list
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.
Documentation and Examples
APIs
Building / Contributing
Bugs
Products / Examples
Minimum System Requirements
- Android OS version 4.3 (Jelly Bean, API Level 18) or later. (For comparison, Firefox for Android supports 4.1 and later and Firefox Focus supports 5.0 and later.)
- 32-bit ARMv7-A, 64-bit ARMv8-A (aka ARM64), 32-bit x86, or x86_64 CPU
- Mozilla tests GeckoView on a Moto G5 with a 1.4 GHz CPU and 2 GB RAM, but GeckoView can run on lower hardware specs.