This is the unified source workspace for FoneClaw Android plugin APKs.
source/
api/ shared AIDL and Bundle key constants
src/
device/
file-manager/ file operations plugin
media/
youtube-downloader/ local YouTube media download plugin
templates/
simple-plugin/ copyable starter template, not included by default
Publishable plugins live under src/<category>/<plugin-name>.
Current publishable plugin:
device/file-manager(foneclaw:file-manager): internal file manager plugin. Version0.0.3requests Android All files access (MANAGE_EXTERNAL_STORAGE) and provides file CRUD, search, batch rename, delete, and HTTPS download tools.media/youtube-downloader(foneclaw:youtube-downloader): arm64-only local downloader for public YouTube videos and Shorts. It provides metadata, enqueue, status, and cancel tools and publishes completed files through Android MediaStore.
Plugin canonical names use foneclaw:<plugin-name>.
pluginIdinbuild.gradle.ktsmust match the module name, for examplefoneclaw:file-managerforsrc/device/file-manager.extensionIdinfoneclaw_extension.jsonmust use the same value.displayNameremains the user-facing label, for exampleFile Manager Plugin.- Tool names keep the
plugin_prefix, for exampleplugin_file_manager_list.
Plugin modules are signed with the public build keystore committed in this workspace:
androidclaw-plugin.jks
alias: androidclaw-plugin
storePassword/keyPassword: androidclaw-plugin123
SHA-256: E3:31:65:67:CC:A6:49:2D:B9:42:00:80:C9:4D:6E:A4:C3:31:88:67:79:70:DA:58:CE:71:7B:BF:3C:6F:3A:84
This key is intentionally public so GitHub and contributors can produce reproducible plugin APK builds. By product decision, FoneClaw host builds, including Release, trust this fingerprint as a built-in plugin trust root. Because the private key and passwords are public, anyone with this workspace can sign an APK accepted by that trust root. Production delivery must disclose this supply-chain limitation and use a dual-fingerprint transition before rotating to a private production plugin certificate.
From the FoneClaw project root:
$env:ANDROID_HOME='C:\Users\gongpm.IMYFONE\AppData\Local\Android\Sdk'
$env:ANDROID_SDK_ROOT=$env:ANDROID_HOME
.\gradlew.bat -p publish/foneclaw-android/plugin/source publishPlugin -Pplugin=device:file-managerThe task builds the selected plugin, copies the APK into
../plugins/apks, and updates ../plugins/repo.json plus
../plugins/index.min.json.
.\gradlew.bat -p publish/foneclaw-android/plugin/source publishAllPluginspublishAllPlugins scans src/<category>/<plugin-name> and does not include
anything under templates/.
- Copy
templates/simple-plugintosrc/<category>/<new-plugin>. - Update package name, plugin ID (
foneclaw:<new-plugin>), display name, version, and category. - Replace
foneclaw_extension.jsontool metadata. - Replace
SKILL.md. - Implement tool handling in the service.
- Publish with
publishPlugin -Pplugin=<category>:<new-plugin>.