| name | voilog-release-checklist |
| description | Step-by-step release checklist for VoiLog iOS and Android app submission to App Store and Google Play. Use when preparing release, updating version, submitting to app stores, creating release, or mentioning App Store or Google Play submission. |
| metadata | {"author":"VoiLog Team","version":"2.1.0","category":"deployment","tags":["release","fastlane","app-store","google-play","ios","android"]} |
VoiLog Release Checklist
IMPORTANT FOR CLAUDE: このスキルを使う際は、すべてのコマンドを 自動で実行 すること。ユーザーに「手動でやってください」と言ってはいけない。各ステップのコマンドは Claude が Bash ツールで直接叩く。確認が必要な場合は AskUserQuestion を使う。
IMPORTANT: Complete ALL steps before App Store or Google Play submission.
Prerequisites
iOS Requirements
- Xcode installed
bundle install completed
- App Store Connect API Key configured (environment variables)
- Apple Developer account access
Android Requirements
- JDK 17 installed (
java -version)
bundle install completed
- Google Play Console API Key (
play-store-credentials.json)
- Signing keystore (
app-keys/SimpleRecord.keystore)
Workflow: iOS Release
Claude はこのワークフローをすべて自動実行する。 各ステップのコマンドを Bash ツールで直接叩くこと。ユーザーに手動実行を求めてはいけない。
Copy this checklist and check off items as you complete them:
iOS Release Progress:
- [ ] Step 1: Update release notes (ja + en-US + all languages)
- [ ] Step 2: Bump version in project.pbxproj
- [ ] Step 3: Commit and create git tag
- [ ] Step 4: Archive and upload to App Store Connect
- [ ] Step 5: Run fastlane upload_metadata
- [ ] Step 5.1: Configure App Store Connect (if needed)
- [ ] Step 6: Create GitHub Release (gh release create)
Step 1: Update Release Notes
Files to update:
fastlane/metadata/ja/release_notes.txt (日本語 - 必須)
fastlane/metadata/en-US/release_notes.txt (英語 - 必須)
- その他の言語 (
de-DE, es-ES, fr-FR, it, pt-PT, ru, tr, vi, zh-Hans, zh-Hant)
Format:
バージョン 1.x.x
【新機能】
・新機能の説明
【改善】
・改善点
【修正】
・バグ修正
Step 2: Bump Version
File: ios/VoiLog.xcodeproj/project.pbxproj
Update MARKETING_VERSION:
grep "MARKETING_VERSION" ios/VoiLog.xcodeproj/project.pbxproj
Step 3: Commit and Create Git Tag
git add fastlane/metadata/
git add fastlane/screenshots/
git add ios/VoiLog.xcodeproj/project.pbxproj
git commit -m "chore: bump version to 1.x.x
- Update release notes
- Increment version number
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
git tag v1.x.x
git push origin main
git push origin v1.x.x
Step 4: Archive and Upload to App Store Connect
Option A: Via Command Line (Recommended)
Complete workflow in one go:
cat > /tmp/ExportOptions.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>destination</key>
<string>upload</string>
<key>signingStyle</key>
<string>automatic</string>
<key>teamID</key>
<string>4YZQY4C47E</string>
</dict>
</plist>
EOF
xcodebuild -project ios/VoiLog.xcodeproj \
-scheme VoiLog \
-configuration Release \
-archivePath build/VoiLog.xcarchive \
archive && \
xcodebuild -exportArchive \
-archivePath build/VoiLog.xcarchive \
-exportOptionsPlist /tmp/ExportOptions.plist \
-exportPath build/export \
-allowProvisioningUpdates
Option B: Via Xcode (Alternative)
- Open
ios/VoiLog.xcodeproj in Xcode
- Select VoiLog scheme (NOT VoiLogDevelop)
- Product → Archive
- Distribute App → App Store Connect
- Wait for upload completion
Step 5: Run Fastlane
bundle exec fastlane upload_metadata
This command will:
- Upload metadata (app description, keywords, etc.)
- Delete old screenshots
- Upload new screenshots from
fastlane/screenshots/
- Select the latest build
- Attempt to submit for review
⚠️ IMPORTANT: If submission fails with "missing required attribute" errors, proceed to Step 5.1.
Step 5.1: Configure App Store Connect (Manual Setup)
If fastlane submission fails, manually configure these in App Store Connect:
- Go to https://appstoreconnect.apple.com
- Navigate to: マイApp → VoiLog → version 1.x.x → App情報
- Configure required attributes:
- advertising: はい (AdMob使用)
- userGeneratedContent: いいえ
- healthOrWellnessTopics: いいえ
- lootBox: いいえ
- parentalControls: いいえ
- ageAssurance: いいえ
- messagingAndChat: いいえ
- gunsOrOtherWeapons: いいえ
- Save and click 審査に提出
Note: These attributes are required by Apple but cannot be set via Fastlane API.
Step 6: Verify Submission
Check App Store Connect:
- ✅ Version number correct (1.x.x)
- ✅ Release notes visible in all languages
- ✅ Screenshots updated (6.9" display)
- ✅ Status: "Waiting for Review"
Workflow: Android Release
Android Release Progress:
- [ ] Step 1: Update release notes
- [ ] Step 2: Bump versionCode and versionName
- [ ] Step 3: Commit and create git tag
- [ ] Step 4: Build release AAB/APK
- [ ] Step 5: Upload with fastlane
- [ ] Step 6: Verify submission
Step 1: Update Release Notes
Update in Google Play Console or fastlane metadata directory:
fastlane/metadata/android/ja-JP/changelogs/[versionCode].txt
fastlane/metadata/android/en-US/changelogs/[versionCode].txt
Step 2: Bump Version
File: android/simpleRecord/app/build.gradle.kts
versionCode = 123
versionName = "1.x.x"
Step 3: Commit and Create Git Tag
git add android/simpleRecord/app/build.gradle.kts
git add fastlane/metadata/android/
git commit -m "chore(android): bump version to 1.x.x
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
git tag android-v1.x.x
git push origin main
git push origin android-v1.x.x
Step 4: Build Release
cd android/simpleRecord
./gradlew clean
./gradlew bundleRelease
./gradlew assembleRelease
Output locations:
- AAB:
app/build/outputs/bundle/release/app-release.aab
- APK:
app/build/outputs/apk/release/app-release.apk
Step 5: Upload with Fastlane
cd android/simpleRecord
bundle exec fastlane internal
bundle exec fastlane beta
bundle exec fastlane production
bundle exec fastlane upload_production
Available Fastlane Lanes:
| Lane | Description |
|---|
build | Build release AAB |
internal | Deploy to internal testing track |
beta | Deploy to closed beta track |
production | Build and deploy to production |
upload_internal | Upload existing AAB to internal testing |
upload_production | Upload existing AAB to production |
Step 6: Verify Submission
Check Google Play Console:
- ✅ Version uploaded (versionCode and versionName)
- ✅ Release notes visible
- ✅ Status: "In Review" or "Pending Publication"
Environment Variables
iOS (App Store Connect)
export APP_STORE_CONNECT_API_KEY_KEY_ID="R2Q4FFAG8D"
export APP_STORE_CONNECT_API_KEY_ISSUER_ID="your-issuer-id"
export APP_STORE_CONNECT_API_KEY_CONTENT="$(cat AuthKey_R2Q4FFAG8D.p8)"
Or configure in fastlane/Appfile and use API key file directly.
Android (Google Play)
- Place
play-store-credentials.json in project root or android/simpleRecord/
- Configure keystore credentials in
app-keys/key.properties
Common Issues & Troubleshooting
iOS Issues
Issue: Fastlane submission fails with "missing required attribute"
Error: appStoreVersions is not in valid state... missing 'userGeneratedContent', 'advertising', etc.
Solution:
These attributes must be set manually in App Store Connect (cannot be set via Fastlane):
- Go to App Store Connect web interface
- Navigate to app version → App情報
- Set all required attributes (see Step 5.1 above)
- Click 審査に提出
Issue: Archive build fails
Solution:
- Clean build folder: Product → Clean Build Folder (Shift+Cmd+K)
- Update Swift packages:
xcodebuild -resolvePackageDependencies -project ios/VoiLog.xcodeproj
- Check SwiftLint errors:
cd ios && swiftlint
- Verify Signing & Capabilities settings in Xcode
Issue: Certificate/Provisioning Profile errors
Solution:
- Use automatic signing: set
signingStyle: automatic in ExportOptions.plist
- Add
-allowProvisioningUpdates flag to xcodebuild export command
- Verify Team ID is correct:
4YZQY4C47E
Issue: Fastlane authentication fails
Solution:
- Check App Store Connect API key environment variables
- Verify
AuthKey_R2Q4FFAG8D.p8 file exists and is readable
- Check API key permissions in App Store Connect (Admin or App Manager role)
Issue: Screenshots not uploading
Solution:
- Verify screenshot dimensions (6.9" display: 1290x2796 px)
- Check file naming:
[0-4]_APP_IPHONE_69_[0-4].png
- Ensure directories exist for all languages in
fastlane/screenshots/
Android Issues
Issue: Build fails with wrong JDK version
Error: Unsupported class file major version
Solution:
java -version
export JAVA_HOME=/path/to/jdk-17
Issue: Keystore password error
Solution:
- Verify
app-keys/key.properties exists and contains correct passwords
- Check keystore file exists:
app-keys/SimpleRecord.keystore
- Test keystore:
keytool -list -keystore app-keys/SimpleRecord.keystore
Issue: Fastlane upload fails
Solution:
- Verify
play-store-credentials.json exists
- Check Google Play Console API is enabled
- Verify service account has correct permissions (Release Manager)
Issue: AAB validation fails
Solution:
- Ensure versionCode is incremented from previous release
- Check signing configuration in
build.gradle.kts
- Verify minimum SDK version matches Play Console requirements
General Issues
Issue: Git tag already exists
Solution:
git tag -d v1.x.x
git push origin :refs/tags/v1.x.x
git tag v1.x.x
git push origin v1.x.x
Issue: Bundle install fails
Solution:
gem install bundler
rm Gemfile.lock
bundle install
Post-Release Checklist
After successful submission:
Quick Reference
iOS Complete Command-Line Workflow
Claude はこれらのコマンドをすべて自動で実行する。手順を見せるだけでなく、Bash ツールで直接叩くこと。
Step 1: バージョンアップ
grep "MARKETING_VERSION" ios/VoiLog.xcodeproj/project.pbxproj | head -1
sed -i '' 's/MARKETING_VERSION = 1.3.3;/MARKETING_VERSION = 1.3.4;/g' ios/VoiLog.xcodeproj/project.pbxproj
git add ios/VoiLog.xcodeproj/project.pbxproj
git commit -m "chore(ios): bump version to 1.3.4"
git tag v1.3.4 && git push origin main && git push origin v1.3.4
Step 2: アーカイブ & アップロード
cat > /tmp/ExportOptions.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>destination</key>
<string>upload</string>
<key>signingStyle</key>
<string>automatic</string>
<key>teamID</key>
<string>4YZQY4C47E</string>
</dict>
</plist>
EOF
rm -rf build/VoiLog.xcarchive
xcodebuild -project ios/VoiLog.xcodeproj -scheme VoiLog -configuration Release \
-archivePath build/VoiLog.xcarchive archive 2>&1 | grep -E "error:|ARCHIVE SUCCEEDED|ARCHIVE FAILED"
xcodebuild -exportArchive -archivePath build/VoiLog.xcarchive \
-exportOptionsPlist /tmp/ExportOptions.plist \
-exportPath build/export -allowProvisioningUpdates 2>&1 | tail -5
Step 3: メタデータアップロード & 審査提出
bundle exec fastlane upload_metadata
Step 4: GitHub Release 作成
gh release create v1.3.4 --title "v1.3.4" --latest --notes "## iOS
- 変更内容"
注意事項:
- アーカイブビルドエラーは
2>&1 | grep "error:" で確認
upload_metadata が "build could not be added" で失敗した場合、Apple のビルド処理中。数分後に再実行
- スクリーンショット変更なしの場合は Fastfile の
skip_screenshots: true のまま使用
Android One-Liner (Full build + upload)
cd android/simpleRecord && ./gradlew clean bundleRelease && bundle exec fastlane production
References
See CLAUDE.md for:
- Full command reference
- Architecture overview
- Development guidelines
- Testing procedures