Confirmed users
3,339
edits
(→Add GeckoView to your build.gradle: Describe GV version numbers) |
(→Documentation and Examples: GeckoView Lite now requires Android 5.0 (API 21) or later.) |
||
| (27 intermediate revisions by 10 users not shown) | |||
| Line 1: | Line 1: | ||
'''GeckoView''' wraps Mozilla's [https://wikipedia.org/wiki/Gecko_(software) Gecko browser engine] in a reusable Android library for applications that wish to use Mozilla’s JavaScript, HTML layout, and rendering engines (generally referred to as SpiderMonkey and Gecko). | |||
GeckoView | Mozilla uses GeckoView to power [https://www.mozilla.org/en-US/firefox/browsers/mobile/android/ Firefox for Android], [https://blog.mozilla.org/blog/2018/09/18/firefox-reality-now-available/ Firefox Reality], [https://www.mozilla.org/firefox/mobile/#focus Firefox Focus], and other Android apps. 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: | |||
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. | |||
== About GeckoView == | |||
Mozilla provides a GeckoView package and a [https://maven.mozilla.org/?prefix=maven2/org/mozilla/geckoview/ Maven Repo] along with [https://mozilla.github.io/geckoview/javadoc/mozilla-central/org/mozilla/geckoview/package-summary.html package documentation]. GeckoView has Stable, Beta, and Nightly channels that follow the [https://wiki.mozilla.org/Release_Management/Calendar Firefox browser’s Release Calendar] which typically ships a new major version to the Stable channel every 4 weeks and the maven repository is updated accordingly. | |||
When a new version is released to the Stable channel, any relevant security fixes will be published to the [https://www.mozilla.org/en-US/security/advisories/ Mozilla Security Advisories page]. While GeckoView is not explicitly called out in the advisories, most but not strictly all vulnerabilities will affect GeckoView. Exceptions would be vulnerabilities that occur in user-facing components excluded from GeckoView (such as the address bar) or desktop-platform-specific vulnerabilities. Keeping the GeckoView dependency up-to-date is the most effective way to incorporate security fixes. | |||
== | == Getting Help == | ||
Interested in GeckoView? We're here to help! | |||
If you have questions or need assistance, please reach out to us in the [https://chat.mozilla.org/#/room/#geckoview:mozilla.org #geckoview] Matrix room. | |||
The overall Mozilla security team can be reached at security@mozilla.org. If you ship GeckoView in your application you are encouraged to let us know at that address. | |||
== 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 === | |||
GeckoView | '''1. Set the GeckoView version''' | ||
< | ''Like Firefox, GeckoView has three release channels: Stable, Beta, and Nightly. Browse the [https://maven.mozilla.org/?prefix=maven2/org/mozilla/geckoview/ Maven Repository] to see currently available builds. | ||
<syntaxhighlight lang="Groovy"> | |||
ext { | |||
geckoviewChannel = "nightly" | |||
geckoviewVersion = "70.0.20190712095934" | |||
} | |||
</syntaxhighlight> | |||
'''2. Add Mozilla's Maven repository''' | |||
<syntaxhighlight lang="Groovy"> | |||
repositories { | repositories { | ||
maven { | maven { | ||
url "https://maven.mozilla.org/maven2/" | |||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
'''3. Configure Java 8 support''' | |||
= | <syntaxhighlight lang="Groovy"> | ||
android { | |||
// ... | |||
// Note: compileOptions is only required for minSdkVersion < 24 | |||
compileOptions { | |||
sourceCompatibility JavaVersion.VERSION_1_8 | |||
targetCompatibility JavaVersion.VERSION_1_8 | |||
} | |||
} | |||
</syntaxhighlight> | |||
< | '''4. Add GeckoView Implementations''' | ||
<syntaxhighlight lang="Groovy"> | |||
dependencies { | dependencies { | ||
implementation | // ... | ||
implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}:${geckoviewVersion}" | |||
} | } | ||
</ | </syntaxhighlight> | ||
=== Add GeckoView to a Layout === | |||
Inside a layout <code>.xml</code> file, add the following: | |||
<syntaxhighlight lang="XML"> | |||
<org.mozilla.geckoview.GeckoView | |||
android:id="@+id/geckoview" | |||
android:layout_width="fill_parent" | |||
android:layout_height="fill_parent" /> | |||
</syntaxhighlight> | |||
=== Initialize GeckoView in an Activity === | |||
= | '''1. Import the GeckoView classes inside an Activity:''' | ||
<syntaxhighlight lang="Java"> | |||
import org.mozilla.geckoview.GeckoRuntime; | |||
import org.mozilla.geckoview.GeckoSession; | |||
import org.mozilla.geckoview.GeckoView; | |||
</syntaxhighlight> | |||
'''2. In that activity's <code>onCreate</code> function, add the following:''' | |||
<syntaxhighlight lang="Java"> | |||
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... | |||
</syntaxhighlight> | |||
</ | |||
You | === 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 [https://mozilla.github.io/geckoview/javadoc/mozilla-central/ JavaDoc] or the [https://searchfox.org/mozilla-central/source/mobile/android/geckoview_example reference application]. | |||
== Documentation and Examples == | |||
'''APIs''' | |||
* [https://mozilla.github.io/geckoview/javadoc/mozilla-central/ GeckoView API Documentation] (JavaDoc format) | |||
* [https://mozilla-mobile.github.io/android-components/reference/ Android Components APIs] | |||
'''Building / Contributing''' | |||
* [https://mozilla.github.io/geckoview/contributor/geckoview-quick-start GeckoView Contributor Quick Start Guide]. | |||
* [[Mobile/Get_Involved]] | |||
* [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Introduction Mozilla Developer Guide] | |||
'''Bugs''' | |||
* [https://bugzilla.mozilla.org/enter_bug.cgi?product=GeckoView&component=General File a new GeckoView bug] | |||
* [https://bugzilla.mozilla.org/buglist.cgi?product=GeckoView&component=General&resolution=---&list_id=14532935 All GeckoView Bugs] | |||
* [[Mobile/GeckoView/Bugs|GeckoView Bug Dashboard]] 🐛 | |||
'''Products / Examples''' | |||
* [https://blog.mozilla.org/futurereleases/2019/06/27/reinventing-firefox-for-android-a-preview/ Firefox Preview] ([https://github.com/mozilla-mobile/fenix GitHub]) | |||
* [https://blog.mozilla.org/blog/2018/09/18/firefox-reality-now-available/ Firefox Reality] ([https://github.com/mozillareality/firefoxreality GitHub]) | |||
* [https://www.mozilla.org/firefox/mobile/#focus Firefox Focus] ([https://github.com/mozilla-mobile/focus-android/ GitHub]) | |||
* [https://searchfox.org/mozilla-central/source/mobile/android/geckoview_example GeckoView Reference Application] | |||
'''Minimum System Requirements''' | |||
[[ | * GeckoView, Fenix, and Focus all require Android 5.0 (API 21) or later. | ||
* 32-bit ARMv7-A, 64-bit ARMv8-A (aka ARM64), 32-bit x86, or x86_64 CPU | |||
* Minimum device specs are quad-core 1.2 GHz and 2 GB RAM (like the [https://www.gsmarena.com/compare.php3?&idPhone3=8104&idPhone2=8721&idPhone1=9008 Moto G4 Play, E4, or E5]), though Mozilla's GeckoView test devices are the [https://en.wikipedia.org/wiki/Moto_G5 Moto G5] with an octa-core 1.4 GHz CPU and 2 GB RAM and the [https://en.wikipedia.org/wiki/Pixel_2 Google Pixel 2] with an octa-core 1.9 GHz CPU and 4 GB RAM. | |||