Правильный брендинг браузера хром?

Я работаю над Chromium fork. Как заменить ресурсы Chromium и пакет приложений?

  1. Ресурсы

Я обнаружил, что однажды android_branding_res_dirs gn аргумент был введен:

@@ -43,10 +43,10 @@

 # GYP: //chrome/chrome.gyp:chrome_java (resources part)
 android_resources("chrome_java_resources") {
-  resource_dirs = [
-    "java/res",
-    "java/res_default",
-  ]
+  if (!defined(android_branding_res_dirs)) {
+    android_branding_res_dirs = [ "//chrome/android/java/res_chromium" ]
+  }
+  resource_dirs = [ "java/res" ] + android_branding_res_dirs
   deps = [
     ":chrome_locale_paks",
     ":chrome_strings_grd",

но потом сломался

@@ -43,10 +43,10 @@

 # GYP: //chrome/chrome.gyp:chrome_java (resources part)
 android_resources("chrome_java_resources") {
-  if (!defined(android_branding_res_dirs)) {
-    android_branding_res_dirs = [ "//chrome/android/java/res_chromium" ]
-  }
-  resource_dirs = [ "java/res" ] + android_branding_res_dirs
+  resource_dirs = [
+    "java/res",
+    "//chrome/android/java/res_chromium",
+  ]
   deps = [
     ":chrome_locale_paks",
     ":chrome_strings_grd",

Так добавляется res_myfork каталог и замена res_chromium с res_myfork в chrome/android/BUILD.gn правильный способ добавить ресурсы вилки сейчас?

  1. Пакет приложений

я обнаружил manifest_package в chrome/android/BUILD.gn:

manifest_package = "org.chromium.chrome"

Также я могу видеть custom_package = "org.chromium.chrome":

android_resources("chrome_java_resources") {
  resource_dirs = [
    "java/res",
    "//chrome/android/java/res_chromium", // replaced to `res_myfork`
  ]
  ...

  custom_package = "org.chromium.chrome" // replaced to `org.company.myfork` by me
}

При сборке я получаю ошибки:

Поскольку я вижу, что в большинстве классов Java пространство имен ресурсов пакета жестко закодировано (например, /chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ActionItem.java):

import org.chromium.chrome.R;

Как правильно ссылаться на ресурсы? Должен ли я просто заменить такие строки в моем пространстве имен ресурсов пакета? Есть ли сценарий Python, чтобы сделать это автоматически при сборке?

Должен ли я заменить custom_package или оставить как есть?

ОБНОВЛЕНИЕ 1.

Я нашел слово "Chrome" жестко закодированным в большинстве строк, как в ./chrome/android/java/strings/android_chrome_strings.grd:

  <!-- Sign-in preference -->
  <message name="IDS_SIGN_IN_TO_CHROME" desc="Title for the button to sign in to Chrome using one's Google account. [CHAR-LIMIT=27]">
    Sign in to Chrome
  </message>

Есть ли способ настроить его (скрипт) или я должен просто изменить его? Я хотел бы избежать конфликтов при слиянии в будущем, поэтому я ищу правильный путь (или, чтобы не безболезненно) сделать это.

ОБНОВЛЕНИЕ 2.

Я вижу, как это сделал браузер Brave: https://github.com/brave/browser-android-tabs/commit/b3fa10a7b10379c8ce5cdbeb68e3c52b580292da

https://github.com/brave/browser-android-tabs/commit/956bd321871844f72d98b9666434e5aceac7da81

это действительно хороший способ?

0 ответов

В src/chrome/android/BUILD.gn

 import('package.gni')
 ...
 chrome_public_manifest_package = manifest_package
 chrome_public_test_manifest_package = test_manifest_package

Создать package.gni файл:

declare_args() {
    manifest_package = "org.chromium.chrome"
    test_manifest_package = "${manifest.package}.tests"
}

Теперь не стесняйтесь отменять это, когда gn gen .. manifest_package="com.company.fork"

PS. Кстати, попробуйте переопределитьchrome_public_manifest_package непосредственно сначала без тех изменений.

Другие вопросы по тегам