Создавая версию F-Droid по принципу “белой этикетки”, можно сделать ребрендинг и встроить F-Droid в ПЗУ Android. Это основное введение в то, как это можно сделать. Для этого используется “gradle flavors”, позволяющий создать ребрендированные, самостоятельно настроенные версий F-Droid.
Начиная с app/build.gradle, задайте имена пакетов и создайте flavorDimension и productFlavors:
def fullApplicationId = "com.mycompany.full"
def basicApplicationId = "com.mycompany.basic"
// да, здесь действительно нужны обе кавычки https://stackoverflow.com/a/41391841
def privilegedExtensionApplicationId = ''com.mycompany.privileged''
[snip]
android {
flavorDimensions "base", "mycompany"
productFlavors {
mycompany {
dimension "mycompany"
}
}
}
Затем gradle будет автоматически искать во всем наборе папок пользовательские версии файлов:
- Исходники Java: app/src/mycompany/java
- Файл манифеста: app/src/mycompany/AndroidManifest.xml
- Ресурсы Android: app/src/mycompany/res
- Ресурсы: app/src/mycompany/assets
Там не может быть дублирующих классов Java, но там можно управлять любыми расширениями. Для всего, что находится в res/, т.е. strings.xml или drawable ресурсов, файлы в app/src/mycompany/res будут иметь приоритет над стандартными файлами F-Droid. Например, переопределите иконку приложения, предоставив app/src/mycompany/res/drawable/ic_launcher.xml.
Чтобы указать пользовательский набор репозиториев приложений, предоставьте app/src/mycompany/res/values/default_repos.xml. Формат этого файла - массив String, с наборами по 8 элементов для каждого репозитория. Например, вот конфигурация репо Guardian Project, включенная по умолчанию, с push-запросом, всегда принимаемым клиентом:
<!-- name -->
<item>Guardian Project</item>
<!-- address -->
<item>https://guardianproject.info/fdroid/repo</item>
<!-- description -->
<item>
Официальный репозиторий приложений The Guardian
Project. Приложения в этом репозитории являются официальными
бинариями, созданными разработчиками оригинальных приложений и
подписанные тем же ключом, что и APK, которые выпускаются в
магазине Google Play.
</item>
<!-- version -->
<item>13</item>
<!-- enabled -->
<item>1</item>
<!-- priority -->
<item>10</item>
<!-- push requests: ignore, prompt, always -->
<item>всегда</item>
<!-- pubkey -->
<item>
308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e
</item>
Разновидности продукта: Basic vs Full
Сам F-Droid уже имеет две встроенные версии: basic и full. full - это
приложение, известное как F-Droid, а basic - это самая минимальная из
возможных версий приложения, которая по-прежнему обеспечивает основную
функциональность магазина приложений. Поскольку они находятся в отдельном
flavorDimension, добавленные настройки будут применяться к обоим. Выбор
варианта сборки осуществляется путем указания “Build Variant” в Android
Studio и gradle target, .например ./gradlew assembleMycompanyFullDebug
.
Настройки
При использовании gradle build flavors очень легко настроить любой из XML-файлов. Поэтому именно с этого рекомендуется начинать настройку вашей сборки F-Droid. Любой XML-файл в app/src/main/res может быть переопределен путем размещения XML с тем же именем в app/src/mycompany/res.
Удаление элементов панели действий/меню
Чтобы скрыть такие вещи, как “Swap Apps” или “Repositories”, переопределите app/src/main/res/menu/main.xml, скопировав его в app/src/mycompany/res/menu/main.xml, и удалите и/или настройте элементы там.
Предпочтения
Для пользовательской сборки, которая включает автоматические обновления по умолчанию, переопределите app/src/main/res/xml/preferences.xml. Вы можете настроить предпочтения и их значения по умолчанию в app/src/mycompany/res/xml/preferences.xml. Для полностью автоматического обновления требуется Privileged Extension. При обычном доступе обновления будут только автоматически загружаться. Пользователю по-прежнему необходимо нажимать кнопку установки на каждом из них.