Правильный брендинг браузера хром?
Я работаю над Chromium fork. Как заменить ресурсы Chromium и пакет приложений?
- Ресурсы
Я обнаружил, что однажды 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
правильный способ добавить ресурсы вилки сейчас?
- Пакет приложений
я обнаружил 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 ответов
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
непосредственно сначала без тех изменений.