此问题来自将扩展名(https://github.com/mozilla-services/screenshots)从Firefox桌面移植到Firefox android。
为了使问题简单易懂,似乎引导程序不起作用,我也无法弄清楚。我通过简单的网络扩展(https://github.com/mozilla/example-addon-repo.git)
总结了以下问题如何将以上扩展名转换为Firefox android的引导程序?
下面是我的尝试:
From 90bd6c2e31be3c6f7bca07f3ad5449018a36a272 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: Tue, 25 Sep 2018 18:05:33 +0800
Subject: [PATCH] pageshoting enabling
Signed-off-by: Your Name <you@example.com>
---
mobile/android/extensions/moz.build | 8 +++---
mobile/android/extensions/pageshot/bootstrap.js | 22 +++++++++++++++
mobile/android/extensions/pageshot/install.rdf | 31 ++++++++++++++++++++++
mobile/android/extensions/pageshot/moz.build | 26 ++++++++++++++++++
.../webextension/_locales/en-US/messages.json | 14 ++++++++++
.../webextension/_locales/fr/messages.json | 14 ++++++++++
.../pageshot/webextension/img/firefox-logo.svg | 1 +
.../extensions/pageshot/webextension/main.js | 10 +++++++
.../extensions/pageshot/webextension/manifest.json | 29 ++++++++++++++++++++
9 files changed, 150 insertions(+), 5 deletions(-)
create mode 100644 mobile/android/extensions/pageshot/bootstrap.js
create mode 100644 mobile/android/extensions/pageshot/install.rdf
create mode 100644 mobile/android/extensions/pageshot/moz.build
create mode 100644 mobile/android/extensions/pageshot/webextension/_locales/en-US/messages.json
create mode 100644 mobile/android/extensions/pageshot/webextension/_locales/fr/messages.json
create mode 100644 mobile/android/extensions/pageshot/webextension/img/firefox-logo.svg
create mode 100644 mobile/android/extensions/pageshot/webextension/main.js
create mode 100644 mobile/android/extensions/pageshot/webextension/manifest.json
diff --git a/mobile/android/extensions/moz.build b/mobile/android/extensions/moz.build
index 89c414a..17446d3 100644
--- a/mobile/android/extensions/moz.build
+++ b/mobile/android/extensions/moz.build
@@ -7,8 +7,6 @@
with Files('**'):
BUG_COMPONENT = ('Firefox for Android', 'General')
-# Only include the following system add-ons if building Nightly
-if CONFIG['NIGHTLY_BUILD']:
- DIRS += [
- 'gws-and-facebook-chrome-spoof',
- ]
+DIRS += [
+ 'pageshot',
+]
diff --git a/mobile/android/extensions/pageshot/bootstrap.js b/mobile/android/extensions/pageshot/bootstrap.js
new file mode 100644
index 0000000..acf1f27
--- /dev/null
+++ b/mobile/android/extensions/pageshot/bootstrap.js
@@ -0,0 +1,22 @@
+"use strict";
+/* eslint no-implicit-globals:off, no-console:off */
+/* exported startup, shutdown, install, uninstall */
+
+function startup({webExtension}) {
+ webExtension.startup().then(() => {
+ console.log("Example WebExtension started!");
+ return Promise.resolved();
+ }).catch(() => {
+ console.error("Example WebExtension startup failed!");
+ });
+}
+
+function shutdown() {
+}
+
+function install() {
+
+}
+
+function uninstall() {
+}
diff --git a/mobile/android/extensions/pageshot/install.rdf b/mobile/android/extensions/pageshot/install.rdf
new file mode 100644
index 0000000..81cf3a0
--- /dev/null
+++ b/mobile/android/extensions/pageshot/install.rdf
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>pageshot@mozilla.org</em:id>
+ <em:version>0.0.1</em:version>
+ <em:type>2</em:type>
+ <em:bootstrap>true</em:bootstrap>
+ <em:multiprocessCompatible>true</em:multiprocessCompatible>
+ <em:hasEmbeddedWebExtension>true</em:hasEmbeddedWebExtension>
+
+ <!-- Target Application this theme can install into,
+ with minimum and maximum supported versions. -->
+ <em:targetApplication>
+ <Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>48.0</em:minVersion>
+ <em:maxVersion>100.*</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <!-- Front End MetaData -->
+ <em:name>Example Add-on</em:name>
+ <em:description>Example Add-on built from the example repository.</em:description>
+ </Description>
+</RDF>
diff --git a/mobile/android/extensions/pageshot/moz.build b/mobile/android/extensions/pageshot/moz.build
new file mode 100644
index 0000000..36a05e4
--- /dev/null
+++ b/mobile/android/extensions/pageshot/moz.build
@@ -0,0 +1,26 @@
+DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+DEFINES['MOZ_APP_MAXVERSION'] = CONFIG['MOZ_APP_MAXVERSION']
+
+FINAL_TARGET_FILES.features['pageshot@mozilla.org'] += [
+ 'bootstrap.js'
+]
+
+FINAL_TARGET_FILES.features['pageshot@mozilla.org'] += [
+ 'install.rdf'
+]
+
+
+FINAL_TARGET_FILES.features['pageshot@mozilla.org']['webextension'] += [
+ 'webextension/main.js',
+ 'webextension/manifest.json'
+]
+
+FINAL_TARGET_FILES.features['pageshot@mozilla.org']['webextension']['img'] += [
+ 'webextension/img/firefox-logo.svg'
+]
+
+
+
+FINAL_TARGET_FILES.features['pageshot@mozilla.org']['webextension']['_locales']['en-US'] += [
+ 'webextension/_locales/en-US/messages.json'
+]
diff --git a/mobile/android/extensions/pageshot/webextension/_locales/en-US/messages.json b/mobile/android/extensions/pageshot/webextension/_locales/en-US/messages.json
new file mode 100644
index 0000000..7a19e94
--- /dev/null
+++ b/mobile/android/extensions/pageshot/webextension/_locales/en-US/messages.json
@@ -0,0 +1,14 @@
+{
+ "extensionName": {
+ "message": "Example Add-on",
+ "description": "Name of the extension"
+ },
+ "extensionDescription": {
+ "message": "Example Add-on built from the example repository",
+ "description": "Description of the extension."
+ },
+ "buttonTitle": {
+ "message": "Visit Mozilla",
+ "description": "Description shown on the toolbar when hovered. DO NOT localise 'Mozilla'."
+ }
+}
diff --git a/mobile/android/extensions/pageshot/webextension/_locales/fr/messages.json b/mobile/android/extensions/pageshot/webextension/_locales/fr/messages.json
new file mode 100644
index 0000000..1b2065f
--- /dev/null
+++ b/mobile/android/extensions/pageshot/webextension/_locales/fr/messages.json
@@ -0,0 +1,14 @@
+{
+ "extensionName": {
+ "message": "Exemple d'extension",
+ "description": "Name of the extension"
+ },
+ "extensionDescription": {
+ "message": "Exemple d'extension générée à partir du dépôt de test",
+ "description": "Description of the extension."
+ },
+ "buttonTitle": {
+ "message": "Visitez Mozilla",
+ "description": "Description shown on the toolbar when hovered. DO NOT localise 'Mozilla'."
+ }
+}
diff --git a/mobile/android/extensions/pageshot/webextension/img/firefox-logo.svg b/mobile/android/extensions/pageshot/webextension/img/firefox-logo.svg
new file mode 100644
index 0000000..8a1a9d2
--- /dev/null
+++ b/mobile/android/extensions/pageshot/webextension/img/firefox-logo.svg
@@ -0,0 +1 @@
\ No newline at end of file
diff --git a/mobile/android/extensions/pageshot/webextension/main.js b/mobile/android/extensions/pageshot/webextension/main.js
new file mode 100644
index 0000000..c411e72
--- /dev/null
+++ b/mobile/android/extensions/pageshot/webextension/main.js
@@ -0,0 +1,10 @@
+"use strict";
+
+/* global chrome */
+
+chrome.browserAction.onClicked.addListener(() => {
+ chrome.tabs.create({
+ active: true,
+ url: "https://www.mozilla.org"
+ });
+});
diff --git a/mobile/android/extensions/pageshot/webextension/manifest.json b/mobile/android/extensions/pageshot/webextension/manifest.json
new file mode 100644
index 0000000..dd4d4f1
--- /dev/null
+++ b/mobile/android/extensions/pageshot/webextension/manifest.json
@@ -0,0 +1,29 @@
+{
+ "applications": {
+ "gecko": {
+ "id": "pageshot@mozilla.org",
+ "strict_min_version": "48.0",
+ "strict_max_version": "100.*"
+ }
+ },
+ "background": {
+ "scripts": ["main.js"]
+ },
+ "browser_action": {
+ "browser_style": true,
+ "default_icon": "img/firefox-logo.svg",
+ "default_title": "__MSG_buttonTitle__"
+ },
+
+ "default_locale": "en-US",
+
+ "description": "__MSG_extensionDescription__",
+
+ "manifest_version": 2,
+
+ "name": "Example Add-on",
+
+ "permissions": [],
+
+ "version": "0.0.1"
+}
--
2.7.4