android-playstore-scan
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAndroid Play Store Scanner
Android Play Store 扫描器
ANALYSIS ONLY - Scans your Android project and generates a comprehensive Play Console setup checklist. Does NOT modify any files.
仅分析 - 扫描你的 Android 项目并生成一份全面的 Play Console 配置清单。不会修改任何文件。
Overview
概述
Purpose:
- Analyze project to detect app features and requirements
- Pre-fill Play Console setup answers based on code analysis
- Identify missing configurations (privacy policy, etc.)
- Generate actionable checklist for Play Console setup
What this skill does:
- Scans AndroidManifest.xml for permissions and features
- Analyzes build.gradle for SDKs and dependencies
- Detects Health Connect, ads, analytics
- Checks for privacy policy URL
- Generates with pre-filled answers
PLAY_CONSOLE_SETUP.md - Provides recommendations for missing items
What this skill does NOT do:
- ❌ Does not create or modify any project files
- ❌ Does not setup GitHub Actions or workflows
- ❌ Does not generate privacy policies (use )
/devtools:privacy-policy-generate - ❌ Does not configure signing or release builds
目的:
- 分析项目,检测应用功能和需求
- 根据代码分析结果预填 Play Console 配置答案
- 识别缺失的配置(隐私政策等)
- 生成可执行的 Play Console 配置清单
此 skill 的作用:
- 扫描 AndroidManifest.xml,检测权限和功能
- 分析 build.gradle,检测 SDK 和依赖项
- 检测 Health Connect、广告和分析功能
- 检查隐私政策 URL
- 生成 ,其中包含预填答案
PLAY_CONSOLE_SETUP.md - 针对缺失项提供建议
此 skill 不执行:
- ❌ 不创建或修改任何项目文件
- ❌ 不设置 GitHub Actions 或工作流
- ❌ 不生成隐私政策(使用 )
/devtools:privacy-policy-generate - ❌ 不配置签名或发布构建
Prerequisites
前置条件
- Android project with AndroidManifest.xml
- Build configuration files (build.gradle.kts)
- 包含 AndroidManifest.xml 的 Android 项目
- 构建配置文件(build.gradle.kts)
Inputs
输入
| Input | Required | Default | Description |
|---|---|---|---|
| project_path | Yes | . | Android project root |
| 输入 | 必填 | 默认值 | 描述 |
|---|---|---|---|
| project_path | 是 | . | Android 项目根目录 |
Process
流程
Step 1: Scan AndroidManifest.xml
第 1 步:扫描 AndroidManifest.xml
bash
echo "📱 Scanning AndroidManifest.xml..."bash
echo "📱 Scanning AndroidManifest.xml..."Get package name
Get package name
PACKAGE_NAME=$(grep "package=" app/src/main/AndroidManifest.xml | head -1 | sed 's/.package="([^"])".*/\1/')
echo " Package: $PACKAGE_NAME"
PACKAGE_NAME=$(grep "package=" app/src/main/AndroidManifest.xml | head -1 | sed 's/.package="([^"])".*/\1/')
echo " Package: $PACKAGE_NAME"
Get app name
Get app name
APP_NAME=$(grep 'name="app_name"' app/src/main/res/values/strings.xml 2>/dev/null | sed 's/.>([^<])<.*/\1/' || echo "Unknown")
echo " App name: $APP_NAME"
APP_NAME=$(grep 'name="app_name"' app/src/main/res/values/strings.xml 2>/dev/null | sed 's/.>([^<])<.*/\1/' || echo "Unknown")
echo " App name: $APP_NAME"
Check permissions
Check permissions
echo " Scanning permissions..."
PERMISSIONS=$(grep "<uses-permission" app/src/main/AndroidManifest.xml | sed 's/.android:name="([^"])".*/\1/')
echo " Scanning permissions..."
PERMISSIONS=$(grep "<uses-permission" app/src/main/AndroidManifest.xml | sed 's/.android:name="([^"])".*/\1/')
Detect features
Detect features
INTERNET=$(echo "$PERMISSIONS" | grep -q "INTERNET" && echo "Yes" || echo "No")
LOCATION=$(echo "$PERMISSIONS" | grep -q "LOCATION" && echo "Yes" || echo "No")
CAMERA=$(echo "$PERMISSIONS" | grep -q "CAMERA" && echo "Yes" || echo "No")
HEALTH=$(echo "$PERMISSIONS" | grep -q "health.permission" && echo "Yes" || echo "No")
echo " Internet: $INTERNET"
echo " Location: $LOCATION"
echo " Camera: $CAMERA"
echo " Health Connect: $HEALTH"
undefinedINTERNET=$(echo "$PERMISSIONS" | grep -q "INTERNET" && echo "Yes" || echo "No")
LOCATION=$(echo "$PERMISSIONS" | grep -q "LOCATION" && echo "Yes" || echo "No")
CAMERA=$(echo "$PERMISSIONS" | grep -q "CAMERA" && echo "Yes" || echo "No")
HEALTH=$(echo "$PERMISSIONS" | grep -q "health.permission" && echo "Yes" || echo "No")
echo " Internet: $INTERNET"
echo " Location: $LOCATION"
echo " Camera: $CAMERA"
echo " Health Connect: $HEALTH"
undefinedStep 2: Analyze Dependencies
第 2 步:分析依赖项
bash
echo "📦 Scanning build.gradle.kts..."bash
echo "📦 Scanning build.gradle.kts..."Check for ads
Check for ads
ADS_DETECTED="No"
if grep -q "admob" app/build.gradle.kts 2>/dev/null; then
ADS_DETECTED="Yes (AdMob)"
elif grep -q "facebook-ads" app/build.gradle.kts 2>/dev/null; then
ADS_DETECTED="Yes (Facebook Audience Network)"
fi
echo " Ads: $ADS_DETECTED"
ADS_DETECTED="No"
if grep -q "admob" app/build.gradle.kts 2>/dev/null; then
ADS_DETECTED="Yes (AdMob)"
elif grep -q "facebook-ads" app/build.gradle.kts 2>/dev/null; then
ADS_DETECTED="Yes (Facebook Audience Network)"
fi
echo " Ads: $ADS_DETECTED"
Check for analytics
Check for analytics
ANALYTICS_DETECTED=""
grep -q "firebase-analytics" app/build.gradle.kts 2>/dev/null && ANALYTICS_DETECTED="Firebase Analytics"
grep -q "google-analytics" app/build.gradle.kts 2>/dev/null && ANALYTICS_DETECTED="${ANALYTICS_DETECTED} Google Analytics"
echo " Analytics: ${ANALYTICS_DETECTED:-None}"
ANALYTICS_DETECTED=""
grep -q "firebase-analytics" app/build.gradle.kts 2>/dev/null && ANALYTICS_DETECTED="Firebase Analytics"
grep -q "google-analytics" app/build.gradle.kts 2>/dev/null && ANALYTICS_DETECTED="${ANALYTICS_DETECTED} Google Analytics"
echo " Analytics: ${ANALYTICS_DETECTED:-None}"
Check for payments
Check for payments
PAYMENTS="No"
grep -q "billing" app/build.gradle.kts 2>/dev/null && PAYMENTS="Yes (Google Play Billing)"
echo " In-app purchases: $PAYMENTS"
PAYMENTS="No"
grep -q "billing" app/build.gradle.kts 2>/dev/null && PAYMENTS="Yes (Google Play Billing)"
echo " In-app purchases: $PAYMENTS"
Check for auth
Check for auth
AUTH_DETECTED=""
grep -q "firebase-auth" app/build.gradle.kts 2>/dev/null && AUTH_DETECTED="Firebase Auth"
grep -q "play-services-auth" app/build.gradle.kts 2>/dev/null && AUTH_DETECTED="${AUTH_DETECTED} Google Sign-In"
echo " Authentication: ${AUTH_DETECTED:-None detected}"
undefinedAUTH_DETECTED=""
grep -q "firebase-auth" app/build.gradle.kts 2>/dev/null && AUTH_DETECTED="Firebase Auth"
grep -q "play-services-auth" app/build.gradle.kts 2>/dev/null && AUTH_DETECTED="${AUTH_DETECTED} Google Sign-In"
echo " Authentication: ${AUTH_DETECTED:-None detected}"
undefinedStep 3: Check Privacy Policy
第 3 步:检查隐私政策
bash
echo "🔒 Checking for privacy policy..."
PRIVACY_POLICY_URL=""bash
echo "🔒 Checking for privacy policy..."
PRIVACY_POLICY_URL=""Check common locations
Check common locations
if [ -f docs/privacy-policy.md ]; then
PRIVACY_POLICY_URL="https://$(git config remote.origin.url | sed 's/.github.com[:/](.).git/\1/')/privacy-policy"
echo " ✓ Found: docs/privacy-policy.md"
echo " Suggested URL: $PRIVACY_POLICY_URL"
elif grep -q "privacy" README.md 2>/dev/null; then
echo " ⚠️ Privacy policy mentioned in README but not found in docs/"
else
echo " ❌ Privacy policy not found"
PRIVACY_POLICY_URL="⚠️ ACTION REQUIRED"
fi
undefinedif [ -f docs/privacy-policy.md ]; then
PRIVACY_POLICY_URL="https://$(git config remote.origin.url | sed 's/.github.com[:/](.).git/\1/')/privacy-policy"
echo " ✓ Found: docs/privacy-policy.md"
echo " Suggested URL: $PRIVACY_POLICY_URL"
elif grep -q "privacy" README.md 2>/dev/null; then
echo " ⚠️ Privacy policy mentioned in README but not found in docs/"
else
echo " ❌ Privacy policy not found"
PRIVACY_POLICY_URL="⚠️ ACTION REQUIRED"
fi
undefinedStep 4: Detect Health Connect Data Types
第 4 步:检测 Health Connect 数据类型
If Health Connect is detected:
bash
if [ "$HEALTH" = "Yes" ]; then
echo "💚 Analyzing Health Connect integration..."
HEALTH_DATA_TYPES=""
grep -q "STEPS" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Steps (read/write)\n"
grep -q "HEART_RATE" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Heart rate (read)\n"
grep -q "SLEEP" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Sleep sessions (read)\n"
grep -q "EXERCISE" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Exercise sessions (read/write)\n"
echo -e " Health data types:\n$HEALTH_DATA_TYPES"
fi如果检测到 Health Connect:
bash
if [ "$HEALTH" = "Yes" ]; then
echo "💚 Analyzing Health Connect integration..."
HEALTH_DATA_TYPES=""
grep -q "STEPS" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Steps (read/write)\n"
grep -q "HEART_RATE" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Heart rate (read)\n"
grep -q "SLEEP" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Sleep sessions (read)\n"
grep -q "EXERCISE" app/src/main/AndroidManifest.xml && HEALTH_DATA_TYPES="${HEALTH_DATA_TYPES}- Exercise sessions (read/write)\n"
echo -e " Health data types:\n$HEALTH_DATA_TYPES"
fiStep 5: Estimate Content Rating
第 5 步:估算内容分级
bash
echo "🎯 Estimating content rating..."bash
echo "🎯 Estimating content rating..."Simple heuristic - actual rating requires IARC questionnaire
Simple heuristic - actual rating requires IARC questionnaire
ESTIMATED_RATING="Everyone (E)"
if grep -qi "violence|weapon|blood" app/src/main/res/values/strings.xml 2>/dev/null; then
ESTIMATED_RATING="Teen (T) - Violence detected"
elif grep -qi "gambling|casino|lottery" app/src/main/res/values/strings.xml 2>/dev/null; then
ESTIMATED_RATING="Mature (M) - Gambling detected"
fi
echo " Estimated: $ESTIMATED_RATING"
echo " Note: Complete official IARC questionnaire in Play Console"
undefinedESTIMATED_RATING="Everyone (E)"
if grep -qi "violence|weapon|blood" app/src/main/res/values/strings.xml 2>/dev/null; then
ESTIMATED_RATING="Teen (T) - Violence detected"
elif grep -qi "gambling|casino|lottery" app/src/main/res/values/strings.xml 2>/dev/null; then
ESTIMATED_RATING="Mature (M) - Gambling detected"
fi
echo " Estimated: $ESTIMATED_RATING"
echo " Note: Complete official IARC questionnaire in Play Console"
undefinedStep 6: Generate PLAY_CONSOLE_SETUP.md
第 6 步:生成 PLAY_CONSOLE_SETUP.md
Create comprehensive setup guide:
markdown
undefined创建全面的配置指南:
markdown
undefinedPlay Console Setup Guide for: {APP_NAME}
Play Console Setup Guide for: {APP_NAME}
Generated: {CURRENT_DATE}
Generated: {CURRENT_DATE}
Summary
Summary
| Property | Value |
|---|---|
| Package Name | {PACKAGE_NAME} |
| App Name | {APP_NAME} |
| Privacy Policy | {PRIVACY_POLICY_STATUS} |
| Uses Health Connect | {HEALTH_DETECTED} |
| Contains Ads | {ADS_DETECTED} |
| In-App Purchases | {IAP_DETECTED} |
| Property | Value |
|---|---|
| Package Name | {PACKAGE_NAME} |
| App Name | {APP_NAME} |
| Privacy Policy | {PRIVACY_POLICY_STATUS} |
| Uses Health Connect | {HEALTH_DETECTED} |
| Contains Ads | {ADS_DETECTED} |
| In-App Purchases | {IAP_DETECTED} |
1. Privacy Policy
1. Privacy Policy
Status: {PRIVACY_STATUS}
{IF_NOT_FOUND}
⚠️ ACTION REQUIRED: No privacy policy found
Recommended action:
/devtools:privacy-policy-generateThis will create a privacy policy at ready for GitHub Pages.
{ELSE}
✓ Privacy policy found:
docs/privacy-policy.mddocs/privacy-policy.mdSuggested URL:
{PRIVACY_URL}Next steps:
- Enable GitHub Pages (Settings → Pages → Source: docs/)
- Wait 1-2 minutes for deployment
- Verify URL is accessible
- Add URL to Play Console {END_IF}
Status: {PRIVACY_STATUS}
{IF_NOT_FOUND}
⚠️ ACTION REQUIRED: No privacy policy found
Recommended action:
/devtools:privacy-policy-generateThis will create a privacy policy at ready for GitHub Pages.
{ELSE}
✓ Privacy policy found:
docs/privacy-policy.mddocs/privacy-policy.mdSuggested URL:
{PRIVACY_URL}Next steps:
- Enable GitHub Pages (Settings → Pages → Source: docs/)
- Wait 1-2 minutes for deployment
- Verify URL is accessible
- Add URL to Play Console {END_IF}
2. App Access
2. App Access
Detected: {ACCESS_ANALYSIS}
{IF_AUTH_DETECTED}
Answer: "Yes, some functionality requires special access"
Instructions to provide:
- Test account credentials (if applicable)
- How to access restricted features {ELSE} Answer: "All functionality available without special access" {END_IF}
Detected: {ACCESS_ANALYSIS}
{IF_AUTH_DETECTED}
Answer: "Yes, some functionality requires special access"
Instructions to provide:
- Test account credentials (if applicable)
- How to access restricted features {ELSE} Answer: "All functionality available without special access" {END_IF}
3. Ads Declaration
3. Ads Declaration
Detected SDKs: {ADS_DETECTED}
{IF_ADS}
Answer: "Yes, my app contains ads"
Ad networks: {AD_NETWORKS_LIST}
{ELSE}
Answer: "No, my app does not contain ads"
{END_IF}
Detected SDKs: {ADS_DETECTED}
{IF_ADS}
Answer: "Yes, my app contains ads"
Ad networks: {AD_NETWORKS_LIST}
{ELSE}
Answer: "No, my app does not contain ads"
{END_IF}
4. Content Rating
4. Content Rating
Estimated Rating: {ESTIMATED_RATING}
Action Required:
- Go to Play Console → App content → Content rating
- Complete IARC questionnaire
- Answer questions about:
- Violence
- Sexual content
- Profanity
- Controlled substances
- Gambling
- User-generated content
Estimated Rating: {ESTIMATED_RATING}
Action Required:
- Go to Play Console → App content → Content rating
- Complete IARC questionnaire
- Answer questions about:
- Violence
- Sexual content
- Profanity
- Controlled substances
- Gambling
- User-generated content
5. Data Safety Form
5. Data Safety Form
Data Collection Detected:
| Data Type | Collected | Purpose |
|---|---|---|
| {IF_HEALTH} | ||
| Health & Fitness | Yes | Health Connect integration |
| {END_IF} | ||
| {IF_LOCATION} | ||
| Location | Yes | {LOCATION_PURPOSE} |
| {END_IF} | ||
| {IF_ANALYTICS} | ||
| App activity | Yes | Analytics ({ANALYTICS_SERVICES}) |
| {END_IF} | ||
| Device ID | {DEVICE_ID_COLLECTED} | {DEVICE_ID_PURPOSE} |
Security Practices:
| Practice | Status | Notes |
|---|---|---|
| Data encrypted in transit | {HTTPS_DETECTED} | HTTPS detected in network config |
| Data encrypted at rest | ⚠️ User to confirm | Depends on implementation |
| Users can request deletion | ⚠️ User to confirm | Add if applicable |
Recommended answers:
- Data is collected: {DATA_COLLECTED}
- Data is shared: {DATA_SHARED}
- Data collection is optional: {DATA_OPTIONAL}
{IF_HEALTH}
Data Collection Detected:
| Data Type | Collected | Purpose |
|---|---|---|
| {IF_HEALTH} | ||
| Health & Fitness | Yes | Health Connect integration |
| {END_IF} | ||
| {IF_LOCATION} | ||
| Location | Yes | {LOCATION_PURPOSE} |
| {END_IF} | ||
| {IF_ANALYTICS} | ||
| App activity | Yes | Analytics ({ANALYTICS_SERVICES}) |
| {END_IF} | ||
| Device ID | {DEVICE_ID_COLLECTED} | {DEVICE_ID_PURPOSE} |
Security Practices:
| Practice | Status | Notes |
|---|---|---|
| Data encrypted in transit | {HTTPS_DETECTED} | HTTPS detected in network config |
| Data encrypted at rest | ⚠️ User to confirm | Depends on implementation |
| Users can request deletion | ⚠️ User to confirm | Add if applicable |
Recommended answers:
- Data is collected: {DATA_COLLECTED}
- Data is shared: {DATA_SHARED}
- Data collection is optional: {DATA_OPTIONAL}
{IF_HEALTH}
6. Health App Declaration
6. Health App Declaration
⚠️ REQUIRED: Your app uses Health Connect
Health Data Types Detected:
{HEALTH_DATA_TYPES_LIST}
Action Required:
- Go to Play Console → App content → Health
- Select "Yes, my app accesses health data"
- List all health data types your app accesses
- Explain how each data type is used
- Confirm privacy policy includes health data disclosure
Privacy Policy Requirements:
- ✅ Must explain what health data is accessed
- ✅ Must explain why it's accessed
- ✅ Must explain how it's stored
- ✅ Must explain if it's shared with third parties
Verify privacy policy includes Health Data section
{END_IF}
⚠️ REQUIRED: Your app uses Health Connect
Health Data Types Detected:
{HEALTH_DATA_TYPES_LIST}
Action Required:
- Go to Play Console → App content → Health
- Select "Yes, my app accesses health data"
- List all health data types your app accesses
- Explain how each data type is used
- Confirm privacy policy includes health data disclosure
Privacy Policy Requirements:
- ✅ Must explain what health data is accessed
- ✅ Must explain why it's accessed
- ✅ Must explain how it's stored
- ✅ Must explain if it's shared with third parties
Verify privacy policy includes Health Data section
{END_IF}
7. Store Listing (Draft)
7. Store Listing (Draft)
Title: {APP_NAME}
Short Description (80 chars):
{GENERATED_SHORT_DESC}
Full Description:
{GENERATED_FULL_DESC}
⚠️ Review and customize these descriptions before submitting
Title: {APP_NAME}
Short Description (80 chars):
{GENERATED_SHORT_DESC}
Full Description:
{GENERATED_FULL_DESC}
⚠️ Review and customize these descriptions before submitting
8. First Upload Checklist
8. First Upload Checklist
Before you can use automated deployments, you must manually upload your first release:
Before you can use automated deployments, you must manually upload your first release:
Preparation
Preparation
- Run (if not done)
/devtools:android-keystore-generation - Run
/devtools:android-signing-config - Build release AAB:
./gradlew bundleRelease - Verify AAB is signed:
jarsigner -verify -verbose app/build/outputs/bundle/release/app-release.aab
- Run (if not done)
/devtools:android-keystore-generation - Run
/devtools:android-signing-config - Build release AAB:
./gradlew bundleRelease - Verify AAB is signed:
jarsigner -verify -verbose app/build/outputs/bundle/release/app-release.aab
Play Console First Upload
Play Console First Upload
- Go to Play Console → Release → Internal testing
- Click Create new release
- Upload
app-release.aab - Complete store listing (title, description, screenshots)
- Complete all required declarations above
- Review and publish to internal testing
- Go to Play Console → Release → Internal testing
- Click Create new release
- Upload
app-release.aab - Complete store listing (title, description, screenshots)
- Complete all required declarations above
- Review and publish to internal testing
Important Notes
Important Notes
⚠️ First Upload Keystore = CI Keystore
The keystore you use for the first upload becomes your upload key. You must use the same keystore in CI/CD.
After first upload:
- Note the SHA-1 fingerprint from Play Console
- Use the same production keystore for GitHub Actions
- Do NOT generate a different keystore for CI
⚠️ First Upload Keystore = CI Keystore
The keystore you use for the first upload becomes your upload key. You must use the same keystore in CI/CD.
After first upload:
- Note the SHA-1 fingerprint from Play Console
- Use the same production keystore for GitHub Actions
- Do NOT generate a different keystore for CI
Play App Signing
Play App Signing
How it works:
- First upload: Google creates the app signing key (permanent)
- Your keystore becomes the upload key (can be reset if lost)
- Google re-signs your AAB with the app signing key before distribution
No action needed - Play App Signing is automatic for new apps.
How it works:
- First upload: Google creates the app signing key (permanent)
- Your keystore becomes the upload key (can be reset if lost)
- Google re-signs your AAB with the app signing key before distribution
No action needed - Play App Signing is automatic for new apps.
9. Next Steps
9. Next Steps
After completing the checklist above:
bash
undefinedAfter completing the checklist above:
bash
undefinedSetup automated Play Store publishing
Setup automated Play Store publishing
/devtools:android-playstore-setup
This will:
- Configure Gradle Play Publisher plugin
- Create GitHub Actions workflows
- Setup release automation
---/devtools:android-playstore-setup
This will:
- Configure Gradle Play Publisher plugin
- Create GitHub Actions workflows
- Setup release automation
---10. Track Differences
10. Track Differences
Understanding Play Store release tracks:
| Track | Audience | Use Case | Review Time |
|---|---|---|---|
| Internal | Up to 100 testers | Quick testing | Instant |
| Closed (Alpha) | Invited testers | Beta testing | < 24h |
| Open (Beta) | Anyone can join | Public beta | < 24h |
| Production | All users | Full release | 1-7 days |
Recommended flow:
- Internal → Verify app works
- Beta → Wider testing (optional)
- Production → Full release
Understanding Play Store release tracks:
| Track | Audience | Use Case | Review Time |
|---|---|---|---|
| Internal | Up to 100 testers | Quick testing | Instant |
| Closed (Alpha) | Invited testers | Beta testing | < 24h |
| Open (Beta) | Anyone can join | Public beta | < 24h |
| Production | All users | Full release | 1-7 days |
Recommended flow:
- Internal → Verify app works
- Beta → Wider testing (optional)
- Production → Full release
Validation
Validation
Run validation checks:
bash
undefinedRun validation checks:
bash
undefinedValidate Play Store API connection
Validate Play Store API connection
python3 scripts/validate-playstore.py SERVICE_ACCOUNT.json {PACKAGE_NAME}
Expected: ✅ All validations passed
---python3 scripts/validate-playstore.py SERVICE_ACCOUNT.json {PACKAGE_NAME}
Expected: ✅ All validations passed
---Resources
Resources
Generated by android-playstore-scan v1.0.0
undefinedGenerated by android-playstore-scan v1.0.0
undefinedVerification
验证
MANDATORY: Run these commands:
bash
undefined必须执行: 运行以下命令:
bash
undefinedVerify setup guide created
Verify setup guide created
test -f PLAY_CONSOLE_SETUP.md && echo "✓ Setup guide created"
test -f PLAY_CONSOLE_SETUP.md && echo "✓ Setup guide created"
Verify key sections present
Verify key sections present
grep -q "Privacy Policy" PLAY_CONSOLE_SETUP.md && echo "✓ Privacy policy section"
grep -q "Data Safety" PLAY_CONSOLE_SETUP.md && echo "✓ Data safety section"
grep -q "First Upload" PLAY_CONSOLE_SETUP.md && echo "✓ First upload checklist"
**Expected output:**
- ✓ Setup guide created
- ✓ Privacy policy section
- ✓ Data safety section
- ✓ First upload checklistgrep -q "Privacy Policy" PLAY_CONSOLE_SETUP.md && echo "✓ Privacy policy section"
grep -q "Data Safety" PLAY_CONSOLE_SETUP.md && echo "✓ Data safety section"
grep -q "First Upload" PLAY_CONSOLE_SETUP.md && echo "✓ First upload checklist"
**预期输出:**
- ✓ 配置指南已创建
- ✓ 隐私政策部分
- ✓ 数据安全部分
- ✓ 首次上传清单Outputs
输出
| Output | Location | Description |
|---|---|---|
| Setup checklist | PLAY_CONSOLE_SETUP.md | Complete Play Console setup guide |
| 输出 | 位置 | 描述 |
|---|---|---|
| 配置清单 | PLAY_CONSOLE_SETUP.md | 完整的 Play Console 配置指南 |
What Happens Next
接下来会发生什么
After reviewing :
PLAY_CONSOLE_SETUP.md- Address action items (privacy policy, missing configs)
- Run setup skill:
/devtools:android-playstore-setup - This will execute the actual setup based on the checklist
审阅 后:
PLAY_CONSOLE_SETUP.md- 处理待办事项(隐私政策、缺失配置等)
- 运行配置 skill:
/devtools:android-playstore-setup - 这会根据清单执行实际配置
Detected vs. Actual
检测结果与实际情况
This skill detects:
- ✅ Declared permissions in manifest
- ✅ Dependencies in build.gradle
- ✅ Health Connect integration
- ✅ Common SDKs (ads, analytics)
This skill cannot detect:
- ❌ Runtime permission usage patterns
- ❌ Actual network calls and endpoints
- ❌ User-generated content handling
- ❌ Content rating accuracy
Always review the generated checklist and adjust based on your actual implementation.
此 skill 可检测:
- ✅ manifest 中声明的权限
- ✅ build.gradle 中的依赖项
- ✅ Health Connect 集成
- ✅ 常见 SDK(广告、分析)
此 skill 无法检测:
- ❌ 运行时权限使用模式
- ❌ 实际网络调用和端点
- ❌ 用户生成内容的处理方式
- ❌ 内容分级的准确性
务必审阅生成的清单,并根据实际实现进行调整。
Troubleshooting
故障排除
"Package name not found"
“找不到包名”
Cause: AndroidManifest.xml format issue
Fix: Verify attribute exists in tag
package<manifest>原因: AndroidManifest.xml 格式问题
修复方法: 确认 标签中存在 属性
<manifest>package"No permissions detected"
“未检测到权限”
Cause: Permissions declared in Gradle instead of manifest
Fix: Check build.gradle.kts for permission declarations
原因: 权限在 Gradle 而非 manifest 中声明
修复方法: 检查 build.gradle.kts 中是否有权限声明
"Privacy policy detection failed"
“隐私政策检测失败”
Cause: Privacy policy in non-standard location
Fix: Update scan or manually specify URL in generated checklist
原因: 隐私政策位于非标准位置
修复方法: 更新扫描逻辑,或在生成的清单中手动指定 URL
Completion Criteria
完成标准
- created
PLAY_CONSOLE_SETUP.md - All project features detected correctly
- Privacy policy status identified
- Health Connect integration detected (if applicable)
- Action items clearly marked
- Ready to proceed with actual setup
- 已创建
PLAY_CONSOLE_SETUP.md - 已正确检测所有项目功能
- 已确定隐私政策状态
- 已检测 Health Connect 集成(如适用)
- 已清晰标记待办事项
- 已准备好进行实际配置