mirror of
https://github.com/android/skills.git
synced 2026-09-14 20:07:09 +08:00
Update R8 skill (#44)
* Update links, minor fixes for R8 skill * Minor clean ups * Apply suggestion from @gemini-code-assist[bot] Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Apply suggestion from @gemini-code-assist[bot] Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Apply suggestion from @gemini-code-assist[bot] Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Update SKILL.md --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
@@ -16,15 +16,15 @@ metadata:
|
||||
- optimization
|
||||
---
|
||||
|
||||
## Step 1. Setup and Configuration Check
|
||||
## Step 1. Setup and configuration check
|
||||
|
||||
- Inspect `build.gradle`, `build.gradle.kts`, and `gradle.properties`.
|
||||
- Use [/references/CONFIGURATION.md](references/CONFIGURATION.md) to identify missing optimizations.
|
||||
- Use [references/CONFIGURATION.md](references/CONFIGURATION.md) to identify missing optimizations.
|
||||
- **AGP** : If \< 9.0, suggest migration to 9.0 for [build time improvement
|
||||
performance](references/android/topic/performance/app-optimization/enable-app-optimization.md)
|
||||
- **Full Mode** : Verify `android.enableR8.fullMode=false` is removed from gradle.properties.
|
||||
- **Full mode** : Verify `android.enableR8.fullMode=false` is removed from gradle.properties.
|
||||
|
||||
## Step 2. Analysis Path Selection
|
||||
## Step 2. Analysis path selection
|
||||
|
||||
- Inspect `build.gradle`, `build.gradle.kts`, and `gradle.properties`
|
||||
and `libs.versions.toml` to
|
||||
@@ -34,39 +34,38 @@ metadata:
|
||||
|
||||
- **If R8 \< 9.3.7-dev** : Proceed to **Path B (Heuristic)**.
|
||||
|
||||
### Path A: Quantitative Data Generation (R8 \>= 9.3.7-dev)
|
||||
### Path A: Quantitative data generation (R8 \>= 9.3.7-dev)
|
||||
|
||||
- **Check Requirements** : Python and `protobuf` package are mandatory.
|
||||
- **Generate and Analyze** : You MUST run the shell commands described in `[/references/CONFIGURATION-ANALYZER.md][7]` to generate the proto file using R8 configuration analyzer, convert it to json and analyze the result.
|
||||
- **Check requirements** : Python and `protobuf` package are mandatory.
|
||||
- **Generate and analyze** : You MUST run the shell commands described in [references/CONFIGURATION-ANALYZER.md](references/CONFIGURATION-ANALYZER.md) to generate the proto file using R8 configuration analyzer, convert it to json and analyze the result.
|
||||
- **Report**: Rely entirely on the generated file analysis.txt for scores and rule impact metrics. Proceed to Step 3.
|
||||
|
||||
### Path B: Heuristic Evaluation and Recommendation (R8 \< 9.3.7-dev)
|
||||
### Path B: Heuristic evaluation and recommendation (R8 \< 9.3.7-dev)
|
||||
|
||||
*(Use ONLY if quantitative data generation is not possible)*
|
||||
|
||||
- **Manual Evaluation** : Inspect `proguard-rules.pro`.
|
||||
- **Library Check** : Compare rules against [/references/REDUNDANT-RULES.md](references/REDUNDANT-RULES.md) .Suggest **Remove** for bundled rules.
|
||||
- **Custom Rule Check** : Use [/references/KEEP-RULES-IMPACT-HIERARCHY.md](references/KEEP-RULES-IMPACT-HIERARCHY.md) and [/references/REFLECTION-GUIDE.md](references/REFLECTION-GUIDE.md) to prioritize and evaluate. Suggest **Refine** for broad rules (e.g., package-wide).
|
||||
- **Validation** : Suggest Macrobenchmark tests using [ui automator](references/android/training/testing/other-components/ui-automator.md) for any proposed changes. Proceed to Step 3.
|
||||
- **Manual evaluation** : Inspect `proguard-rules.pro`.
|
||||
- **Library check** : Compare rules against [references/REDUNDANT-RULES.md](references/REDUNDANT-RULES.md). Suggest **Remove** for bundled rules.
|
||||
- **Custom rule check** : Use [references/KEEP-RULES-IMPACT-HIERARCHY.md](references/KEEP-RULES-IMPACT-HIERARCHY.md) and [references/REFLECTION-GUIDE.md](references/REFLECTION-GUIDE.md) to prioritize and evaluate. Suggest **Refine** for broad rules (for example, package-wide).
|
||||
- **Validation** : Suggest Macrobenchmark tests using [UI Automator](references/android/training/testing/other-components/ui-automator.md) for any proposed changes. Proceed to Step 3.
|
||||
|
||||
## Step 3. Report Generation
|
||||
## Step 3. Report generation
|
||||
|
||||
- **Format** : Follow `[/references/REPORT_FORMAT.md][8]` strictly.
|
||||
- **Format** : Follow [references/REPORT_FORMAT.md](references/REPORT_FORMAT.md) strictly.
|
||||
- **Input**: Extract metrics (Scores, Impacts, Example Classes)
|
||||
directly from generated file analysis.txt if using Path A,
|
||||
or from manual findings if using Path B.
|
||||
|
||||
- **Output** :
|
||||
Output ONLY the raw Markdown report in the chat.
|
||||
Do NOT output conversational filler (e.g., "Here is your report...").
|
||||
Do NOT output conversational filler (for example, "Here is your report...").
|
||||
Do NOT provide recommendations, next steps,
|
||||
or any other text outside of the sections defined in
|
||||
`[/references/REPORT_FORMAT.md][8]`
|
||||
[references/REPORT_FORMAT.md](references/REPORT_FORMAT.md)
|
||||
Do NOT mention the path used for analysis of the configuration
|
||||
|
||||
## Constraints
|
||||
|
||||
- **Strict Output Limit**: The final output MUST strictly be the Markdown report and nothing else.
|
||||
- **No Code Changes**: Research and suggest only; Do not modify files.
|
||||
- **No Redundancy**: Do not explain R8 benefits or reference skill internal files in the report.
|
||||
- **Focus**: Omit sections (e.g., Subsumed Rules, Configuration) if no issues or items are found.
|
||||
- **Strict output limit**: The final output MUST strictly be the Markdown report and nothing else.
|
||||
- **No code changes**: Research and suggest only; Do not modify files.
|
||||
- **No redundancy**: Do not explain R8 benefits or reference skill internal files in the report.
|
||||
- **Focus**: Omit sections (for example, Subsumed Rules, Configuration) if no issues or items are found.
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,57 @@
|
||||
# R8 Analysis Report Template
|
||||
|
||||
## 1. Configuration
|
||||
|
||||
*(Optional section for the report, omit if no relevant findings are present.)*
|
||||
|
||||
- **AGP Version**: [Current] -> Upgrade to 9.0.
|
||||
- **Full Mode**: Not enabled. Remove `android.enableR8.fullMode=false`
|
||||
from `gradle.properties`.
|
||||
|
||||
## 2. Global disable rules
|
||||
|
||||
*(Optional section for the report, omit if no relevant findings are present.)*
|
||||
|
||||
- [Rule]: Disables R8 globally. **Action**: Remove.
|
||||
|
||||
If there is -dontobfuscate, -dontoptimize or -dontshrink in the codebase,
|
||||
mention in this section
|
||||
|
||||
## 3. Optimization summary
|
||||
|
||||
- **Optimization Score**: [X]% code is available for R8 optimizations
|
||||
(e.g., inlining, merging). [100-X]% of codebase can't be optimized by R8.
|
||||
- **Shrinking Score**: [X]% of code will be optimized by R8 by removing
|
||||
unused classes, fields and methods. [100-X]% of codebase contains redundant
|
||||
classes, fields and methods that can't be removed by R8.
|
||||
- **Obfuscation Score**: [X]% of the codebase is available for R8 to obfuscate.
|
||||
|
||||
Increasing these scores increases the codebase available to R8 for optimizations.
|
||||
|
||||
## 4. Keep rules evaluation
|
||||
|
||||
### [Rule Text]
|
||||
|
||||
- **Keeps**: [X] items or [X] % of the codebase from optimization. Classes: [X], Fields: [X], Methods: [X] are prevented from optimization due to this keep rule
|
||||
- **Kept items**: [Class1], [Class2]
|
||||
- **Action**: **Remove** (Library bundles rules) OR **Refine** (Too broad, use [Surgical Rule]).
|
||||
|
||||
## 5. Subsumed keep rules
|
||||
|
||||
*(Optional section for the report, omit if no relevant findings are present.)*
|
||||
|
||||
### [Redundant rules]
|
||||
|
||||
- **Subsumed By**: [Broader Rule]
|
||||
- **Action**: **Remove**.
|
||||
|
||||
## 6. Historical analysis summary
|
||||
|
||||
*(Only include this section if a previous report existed. Summarize the changes
|
||||
in optimization scores here to track progress. For example:)*
|
||||
The previous app had scores: Optimization (XX%), Obfuscation (XX%),
|
||||
and Shrinking (XX%).
|
||||
The current app has scores: Optimization (YY%), Obfuscation (YY%),
|
||||
and Shrinking (YY%).
|
||||
**Change**: Optimization improved by ZZ%, Obfuscation improved by ZZ%,
|
||||
and Shrinking improved by ZZ%.
|
||||
Reference in New Issue
Block a user