{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiac4v5n6cal3rrafilw3rz253jpofz4ybm63ec5hc7pbf4a5p5acy",
    "uri": "at://did:plc:34cg4tn4iwemk3v5k3n3adwf/app.bsky.feed.post/3mf5jd3rhgbz2"
  },
  "path": "/t/help-needed-extracting-gradle-plugins-out-of-main-git-repo/34106#post_1",
  "publishedAt": "2026-02-18T15:12:35.000Z",
  "site": "https://forum.f-droid.org",
  "tags": [
    "@com.ghostsq.commander",
    "@com.nextcloud.cl",
    "@com.termux",
    "@com.termux",
    "@com.termux",
    "@com.termux",
    "@com.termux",
    "@com.termux",
    "@com.termux"
  ],
  "textContent": "My app, Carburoid, was using a gradle plugin i developed, which i decided to extract into a different repository to reuse it in my next project. Now i see that this has implications on F-Droid build and i am struggling to solve them.\n\nInstead of the strategy which i followed to build it locally, consisting in publish it on a Local Maven repo, i tried to add the plugin as Carburoid submodule by indicating in the settings.gradle.kts\n\n\n    kotlin\n    pluginManagement {\n        repositories {\n            mavenLocal()\n           gradlePluginPortal()\n           google()\n           mavenCentral()\n        }\n        includeBuild(\"build-logic/plugins/android-yaml-strings\")  // ← I added this\n    }\n    dependencyResolutionManagement {\n\n\nThis also works in local but in the local fdroid server i get this error:\n\n\n    **== fdroid build -vl net.canvoki.carburoid**\n    2026-02-17 19:34:07,894 WARNING: unsafe permissions on 'config.yml' (should be 0600)!\n    building file list ... done\n\n    sent 84 bytes  received 11 bytes  190.00 bytes/sec\n    total size is 5,987  speedup is 63.02\n    building file list ... done\n\n    sent 84 bytes  received 11 bytes  190.00 bytes/sec\n    total size is 5,987  speedup is 63.02\n    2026-02-17 19:34:09,022 INFO: Building version 1.4.2 (1040200) of net.canvoki.carburoid\n    2026-02-17 19:34:09,025 INFO: Getting source for revision d41d7db2e25790f932ce1016ed922b385250bbae\n    2026-02-17 19:34:11,639 INFO: Initialising submodules\n    Submodule path 'build-logic/plugins/android-yaml-strings': checked out '4e7f8fc00ed73b670a2448c5b5481eeb02e08a82'\n    2026-02-17 19:34:12,244 INFO: Creating local.properties file at build/net.canvoki.carburoid/local.properties\n    2026-02-17 19:34:12,245 INFO: Creating local.properties file at build/net.canvoki.carburoid/app/local.properties\n    2026-02-17 19:34:12,250 INFO: Cleaned build.gradle.kts of keysigning configs at build/net.canvoki.carburoid/app/build.gradle.kts\n    2026-02-17 19:34:12,253 INFO: Cleaning Gradle project...\n    ======================= {'repo_url': 'https://f-droid.org/repo', 'repo_maxage': 14, 'repo_web_base_url': 'https://f-droid.org/packages', 'repo_name': 'F-Droid', 'archive_older': 3, 'repo_keyalias': 'ciarang', 'repo_key_sha256\n    ': '43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab', 'repo_pubkey': '3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111\n    300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3\n    071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e6965\n    6b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631b\n    fa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c1\n    8057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17\n    e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e21\n    6b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe74\n    2b17ab3f55d4e6f05ef', 'gpgkey': '37D2C98789D8311948394E3E41E7044E1DBA2E89', 'gpghome': {'env': 'gpghome'}, 'keystore': {'env': 'keystore'}, 'keydname': 'CN=FDroid, OU=FDroid, O=fdroid.org, L=ORG, S=ORG, C=UK', 'keystorepass':\n    {'env': 'keystorepass'}, 'keypass': {'env': 'keypass'}, 'serverwebroot': {'env': 'serverwebroot'}, 'nonstandardwebroot': True, 'deploy_process_logs': True, 'keep_when_not_allowed': True, 'make_current_version_link': False, '\n    refresh_scanner': True, 'binary_transparency_remote': 'git@gitlab.com:fdroid/f-droid.org-transparency-log.git', 'keyaliases': {'com.ghostsq.commander.samba': '@com.ghostsq.commander', 'com.nextcloud.talk2': '@com.nextcloud.cl\n    ient', 'com.termux.api': '@com.termux', 'com.termux.boot': '@com.termux', 'com.termux.gui': '@com.termux', 'com.termux.styling': '@com.termux', 'com.termux.tasker': '@com.termux', 'com.termux.widget': '@com.termux', 'com.term\n    ux.window': '@com.termux', 'org.fdroid.fdroid.privileged': 'ciarang', 'org.fdroid.fdroid': 'ciarang'}, 'apk_signing_key_block_list': \\['a6ccc500ff0e7421200eb66a7fe174ef1b00e52ca91727070cbedf061ff76c35', 'ce7b2b47ae2b7552c8f92c\n    c29124279883041fb623a5f194a82c9bf15d492aa0', '465983f7791f2abeb43ea2cbdc7f21a8260b72bc08a55c839fc1a43bc741a81e', 'e1dbadce60dc080d15b58a014b0dcf9400e24de23fa00b287a5a982bfebda2ee', 'fae9122a8721d6e2a196d2224dffcf773c9127e2bb9\n    56cbddb40b009192ffdfd', 'c8a2e9bccf597c2fb6dc66bee293fc13f2fc47ec77bc6b2b0d52c11f51192ab8', 'abf21f9e2af1d881cc673fddcefa6ed9c269a437bd64b279cf45844cfd589126', '28bbfe4a7b97e74681dc55c2fbb6ccb8d6c74963733f6af6ae74d8c3a6e879fd\n    ', 'a40da80a59d170caa950cf15c18c454d47a39b26989d8b640ecd745ba71bf5dc'\\], 'sdk_path': '/opt/android-sdk', 'ndk_paths': {'23.2.8568313': '/opt/android-sdk/ndk/23.2.8568313'}, 'cachedir': '/home/vagrant/.cache/fdroidserver', 'jav\n    a_paths': {'17': '/usr/lib/jvm/java-17-openjdk-amd64'}, 'scan_binary': False, 'ant': 'ant', 'mvn3': 'mvn', 'gradle': '/usr/local/bin/gradlew-fdroid', 'sync_from_local_copy_dir': False, 'allow_disabled_algorithms': False, 'per\n    \\_app_repos': False, 'current_version_name_source': 'Name', 'build_server_always': False, 'smartcardoptions': \\[\\], 'char_limits': {'author': 256, 'name': 50, 'summary': 80, 'description': 4000, 'video': 256, 'whatsNew': 500}, '\n    repo_icon': 'icon.png', 'repo_description': 'This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries bui\n    lt from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid.', 'archive_name': 'My First F-Droid Archive Demo', 'archive_description': 'These are the apps that have been archived from the main repo\n    .', 'git_mirror_size_limit': 10000000000, 'scanner_signature_sources': \\['suss'\\], 'sdk_path_orig': '$ANDROID_HOME', 'jarsigner': '/usr/lib/jvm/java-17-openjdk-amd64/bin/jarsigner', 'keytool': '/usr/lib/jvm/java-17-openjdk-amd6\n    4/bin/keytool', 'apksigner': '/usr/bin/apksigner', 'cachedir_scanner': '/home/vagrant/.cache/fdroidserver/scanner', 'gradle_version_dir': '/home/vagrant/.cache/fdroidserver/gradle'}\n    =========================== \\['/usr/local/bin/gradlew-fdroid', 'clean'\\]\n    CACHEDIR set to /home/vagrant/.cache/fdroidserver\n    Update checksum from gradle-transparency-log\n    Found 8.14.4 via distributionUrl\n    Downloading missing gradle version 8.14.4\n    Using cache directory /home/vagrant/.cache/fdroidserver\n    Running /home/vagrant/.cache/fdroidserver/versions/8.14.4/bin/gradle clean\n\n    Welcome to Gradle 8.14.4!\n\n    Here are the highlights of this release:\n     - Java 24 support\n     - GraalVM Native Image toolchain selection\n     - Enhancements to test reporting\n     - Build Authoring improvements\n\n    For more details see https://docs.gradle.org/8.14.4/release-notes.html\n\n    To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.14.4/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle docume\n    ntation.\n    Daemon will be stopped at the end of the build\n    > Task :android-yaml-strings:checkKotlinGradlePluginConfigurationErrors SKIPPED\n    > Task :android-yaml-strings:pluginDescriptors\n    > Task :android-yaml-strings:processResources\n    > Task :android-yaml-strings:compileKotlin\n    > Task :android-yaml-strings:compileJava NO-SOURCE\n    > Task :android-yaml-strings:classes\n    > Task :android-yaml-strings:jar\n\n    > Configure project :shared\n    w: file:///build/build/net.canvoki.carburoid/shared/build.gradle.kts:14:9: 'targetSdk: Int?' is deprecated. Will be removed from library DSL in AGP 9.0. Use testOptions.targetSdk or/and lint.targetSdk instead\n\n    > Task :app:clean UP-TO-DATE\n\n    BUILD SUCCESSFUL in 1m 18s\n    5 actionable tasks: 4 executed, 1 up-to-date\n    2026-02-17 19:35:34,852 INFO: Scanning source for common problems...\n    2026-02-17 19:35:35,554 INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$apply$1.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$apply$2$execute$$inlined$getByType$1.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsTaskKt$extractParams$1.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$configure$1$1.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsTaskKt.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$apply$3.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$apply$3$execute$$inlined$getByType$1.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$configure$1$taskProvider$1.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsExtension.class\n    2026-02-17 19:35:35,574 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/Translatable.class\n    2026-02-17 19:35:35,575 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$configure$1$taskProvider$1$1.class\n    2026-02-17 19:35:35,575 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin.class\n    2026-02-17 19:35:35,575 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsTask.class\n    2026-02-17 19:35:35,575 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsPlugin$apply$2.class\n    2026-02-17 19:35:35,575 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/MismatchedParamException.class\n    2026-02-17 19:35:35,575 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsTask$convertYamlToAndroidXml$1.class\n    2026-02-17 19:35:35,575 ERROR: Found Java compiled class at build-logic/plugins/android-yaml-strings/build/classes/kotlin/main/net/canvoki/android/yamlstrings/YamlStringsTaskKt$parametersToXml$1.class\n    2026-02-17 19:35:35,575 ERROR: Found binary at build-logic/plugins/android-yaml-strings/build/kotlin/compileKotlin/cacheable/last-build.bin\n    2026-02-17 19:35:35,577 ERROR: Found binary at build-logic/plugins/android-yaml-strings/build/kotlin/compileKotlin/local-state/build-history.bin\n    2026-02-17 19:35:35,577 ERROR: Found binary at build-logic/plugins/android-yaml-strings/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin\n    2026-02-17 19:35:35,577 ERROR: Found Java JAR file at build-logic/plugins/android-yaml-strings/build/libs/android-yaml-strings-1.0.0.jar\n    2026-02-17 19:35:35,577 INFO: Removing gradle-wrapper.jar at build-logic/plugins/android-yaml-strings/gradle/wrapper/gradle-wrapper.jar\n    2026-02-17 19:35:35,578 ERROR: Could not build app net.canvoki.carburoid: Can't build due to 21 errors while scanning\n    building file list ... done\n\n\nIs kind of puzzling that the build generates those compiled files and then complains about them.\n\nI am sure i am not the first one to try to extract common elements, i see many apps using submodules, but because all the build logic it in their repositories, is very hard to find an example and the documentation does not help for this quite specific problem (so far i read). So what is the pattern to follow here to keep the plugin in its own repository?",
  "title": "[Help needed] Extracting gradle plugins out of main git repo"
}