[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698XB1EEKQWNANYQPYT1RXW":3,"skill-same:01M698XB1EEKQWNANYQPYT1RXW":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":44,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M698XB1EEKQWNANYQPYT1RXW","filament-android-development",null,"Build, deploy, run, and benchmark Filament binaries on connected Android devices or emulators. Use this skill for compiling, pushing, and executing Android tests or benchmarks.","google\u002Ffilament","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M698W8SGYAMBEGYBK16J57R1",20746,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Ffilament_android_development\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"android","filament android development","development","android development","deploy","run","benchmark","compiling","devices","use","emulators","benchmarks","build","tests","for","2026-11-10 10:12:30",false,"---\nname: filament-android-development\ndescription: >\n  Build, deploy, run, and benchmark Filament binaries on connected Android devices or emulators.\n  Use this skill for compiling, pushing, and executing Android tests or benchmarks.\n---\n\n# Filament Android Development, Deployment, and Benchmarking\n\nThis skill details the procedures for compiling binaries for Android, installing them onto a physical device or emulator, and running tests and benchmarks.\n\n## 1. Compiling Release Build for Android\n\nAndroid binaries should almost always be built in release mode for testing and benchmarking. \nTo build the release version targeting the `arm64-v8a` architecture, and optionally enable **Perfetto** tracing (the `-P` flag, which is highly recommended during performance development):\n\n```bash\n.\u002Fbuild.sh -q arm64-v8a -Pip android release\n```\n\n---\n\n## 2. Deploying Binaries to an Android Device\n\nPush the compiled executable (test or benchmark) to a writable temporary directory (such as `\u002Fdata\u002Flocal\u002Ftmp`) on the connected Android device using `adb`:\n\n```bash\nadb push .\u002Fout\u002Fcmake-android-release-aarch64\u002F{path-to-executable} \u002Fdata\u002Flocal\u002Ftmp\n```\n\n*Replace `{path-to-executable}` with the actual relative path to your compiled binary under `out\u002Fcmake-android-release-aarch64\u002F`.*\n\n---\n\n## 3. Executing Binaries on an Android Device\n\nRun the pushed binary inside the Android device's shell. \nYou must set `LD_LIBRARY_PATH` to the directory containing the pushed binary so that the dynamic linker can locate target proprietary shared libraries:\n\n```bash\nadb shell LD_LIBRARY_PATH=\u002Fdata\u002Flocal\u002Ftmp \u002Fdata\u002Flocal\u002Ftmp\u002F{executable}\n```\n\n---\n\n## 4. Running a Performance Benchmark on Device\n\nWhen running performance benchmarks on Android devices, always conform to the following formatting rules:\n1. Output counters as a table (`--benchmark_counters_tabular`)\n2. Keep colors enabled (`--benchmark_color=true`)\n3. Set an appropriate, readable time unit matching the performance characteristics of the measured workload (typically `ms` or `us`, rarely `ns`):\n\n```bash\nadb shell LD_LIBRARY_PATH=\u002Fdata\u002Flocal\u002Ftmp \u002Fdata\u002Flocal\u002Ftmp\u002F{executable} --benchmark_counters_tabular --benchmark_color=true --benchmark_time_unit=ms\n```\n","# Filament Android Development, Deployment, and Benchmarking\n\nThis skill details the procedures for compiling binaries for Android, installing them onto a physical device or emulator, and running tests and benchmarks.\n\n## 1. Compiling Release Build for Android\n\nAndroid binaries should almost always be built in release mode for testing and benchmarking. \nTo build the release version targeting the `arm64-v8a` architecture, and optionally enable **Perfetto** tracing (the `-P` flag, which is highly recommended during performance development):\n\n```bash\n.\u002Fbuild.sh -q arm64-v8a -Pip android release\n```\n\n---\n\n## 2. Deploying Binaries to an Android Device\n\nPush the compiled executable (test or benchmark) to a writable temporary directory (such as `\u002Fdata\u002Flocal\u002Ftmp`) on the connected Android device using `adb`:\n\n```bash\nadb push .\u002Fout\u002Fcmake-android-release-aarch64\u002F{path-to-executable} \u002Fdata\u002Flocal\u002Ftmp\n```\n\n*Replace `{path-to-executable}` with the actual relative path to your compiled binary under `out\u002Fcmake-android-release-aarch64\u002F`.*\n\n---\n\n## 3. Executing Binaries on an Android Device\n\nRun the pushed binary inside the Android device's shell. \nYou must set `LD_LIBRARY_PATH` to the directory containing the pushed binary so that the dynamic linker can locate target proprietary shared libraries:\n\n```bash\nadb shell LD_LIBRARY_PATH=\u002Fdata\u002Flocal\u002Ftmp \u002Fdata\u002Flocal\u002Ftmp\u002F{executable}\n```\n\n---\n\n## 4. Running a Performance Benchmark on Device\n\nWhen running performance benchmarks on Android devices, always conform to the following formatting rules:\n1. Output counters as a table (`--benchmark_counters_tabular`)\n2. Keep colors enabled (`--benchmark_color=true`)\n3. Set an appropriate, readable time unit matching the performance characteristics of the measured workload (typically `ms` or `us`, rarely `ns`):\n\n```bash\nadb shell LD_LIBRARY_PATH=\u002Fdata\u002Flocal\u002Ftmp \u002Fdata\u002Flocal\u002Ftmp\u002F{executable} --benchmark_counters_tabular --benchmark_color=true --benchmark_time_unit=ms\n```\n",{"name":5,"description":7},"main","fd9ec7ff9510df148011c5326bcb50d4bfb811ca","skills\u002Ffilament_android_development",2304,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament","https:\u002F\u002Fgoogle.github.io\u002Ffilament\u002F","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-14 03:00:47",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add google\u002Ffilament --skill filament-android-development",{"tool":55,"command":56},"bunx","bunx skills add google\u002Ffilament --skill filament-android-development",{"tool":58,"command":59},"pnpm","pnpm dlx skills add google\u002Ffilament --skill filament-android-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Ffilament_android_development\u002FSKILL.md",true,[],[64,85,100,116,135,151],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":34},"01M698XTTZP1MWPYW9EVV7DF2Q","filament-math","Enforce correct mathematical primitives and naming conventions in Filament code. Use this skill when performing coordinate transformations, vector math, or projection setups.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Ftools\u002Fai\u002Fagents\u002Fskills\u002Ffilament_math\u002FSKILL.md",[],[71,72,73,74,75,76,77,28,78,79,80,81,82,83,84],"filament math","math","when","code","vector","correct","primitives","coordinate","enforce","conventions","Mathematical","naming","naming conventions","performing",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":34},"01M698XRXR5Q463GQ03RDBD9FR","filament-lifetime","Enforce correct Filament object creation and destruction lifecycles. Use this skill when initializing rendering pipelines or allocating\u002Fdeallocating GPU buffers and entities.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Ftools\u002Fai\u002Fagents\u002Fskills\u002Ffilament_lifetime\u002FSKILL.md",[],[92,28,93,94,79,95,76,96,97,98,73,99],"filament lifetime","rendering","creation","pipelines","gpu","destruction","object","entities",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":34},"01M698XQ0E9RE6RDFYKS2PF1S1","cherry-pick","Cherry-pick a commit onto another branch and open the PR. Use when the user asks to cherry-pick or backport a commit or PR to a release branch.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fthird_party\u002Fdawn\u002Fthird_party\u002Fdirectx-shader-compiler\u002Fsrc\u002F.github\u002Fskills\u002Fcherry-pick\u002FSKILL.md",[],[107,108,109,110,73,111,28,112,113,114,115],"pick","cherry pick","branch","open","user","backport","commit","pr","release",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":34},"01M698XN2P44Y956SJRD7CPB22","verification-protocols","Standard verification pipeline to execute after modifying C++ source or header files. Use this skill to format includes, build the engine, and run core tests.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fverification_protocols\u002FSKILL.md",[],[123,124,125,126,24,127,128,129,130,28,131,31,132,32,133,134],"protocols","verification","verification protocols","core","pipeline","format","engine","execute","files","c++","source","standard",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":34},"01M698XK6J428QZM1WGVWW50JE","preprocessor-guard-hygiene","Enforce preprocessor guard rules and macro-dependent inclusion hygiene in C++. Use this skill when modifying conditional imports or preprocessor directives.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fpreprocessor_guard_hygiene\u002FSKILL.md",[],[142,143,144,145,73,146,147,148,149,132,79,28,150],"hygiene","guard","preprocessor guard hygiene","Rules","directives","conditional","imports","inclusion","macro",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":34},"01M698XHA1J01F915DKYHXZ18C","header-self-containment","Enforce strict header self-containment so that every header file compiles independently. Use this skill when creating or modifying C++ header files.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fheader_self_containment\u002FSKILL.md",[],[158,159,160,73,132,79,131,28,161],"header self containment","containment","self","file"]