Сборки с белой меткой

Создавая версию 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. При обычном доступе обновления будут только автоматически загружаться. Пользователю по-прежнему необходимо нажимать кнопку установки на каждом из них.