14 KiB
Google Play Console Setup Guide
Complete step-by-step guide for configuring Kordant in Google Play Console.
Table of Contents
- Prerequisites
- Create the App
- App Signing
- Default App Information
- Internal Testing Track
- Store Listing
- Pricing & Distribution
- Content Rating
- Data Safety Form
- Play Integrity API
- In-App Products
- Release Checklist
Prerequisites
- Google account with Play Console access
- $25 one-time developer registration fee paid
- Signed AAB (Android App Bundle) ready to upload
- App signing keystore generated (see scripts/generate-release-key.sh)
- App assets prepared (icon, screenshots, feature graphic)
- Privacy policy URL hosted and accessible
- Firebase project linked to the app
1. Create the App
- Go to Google Play Console
- Click "Create app"
- Fill in:
- App name:
Kordant - Default language:
English (United States) - App or game:
App - Free or paid:
Free
- App name:
- Click "Create app"
2. App Signing
2.1 Generate Upload Key
cd android
chmod +x scripts/generate-release-key.sh
./scripts/generate-release-key.sh
This creates:
kordant-release.keystore— The keystore file (KEEP SECURE)key.properties— Credentials for Gradle (added to.gitignore)
2.2 Configure Google Play App Signing
- Go to Setup → App integrity → App signing
- Select "Let Google manage the app signing key"
- Upload the upload certificate:
- Option A: Upload the
.keystorefile directly - Option B: Extract the certificate and upload:
Then upload
keytool -export-cert \ -keystore kordant-release.keystore \ -alias kordant-release-key \ -file upload-cert.pemupload-cert.pem
- Option A: Upload the
- Review and accept the terms
- Click "Enable"
2.3 Save the Backup Key
After enabling Google Play App Signing, Google provides a backup app signing key. Download it and store it securely — this is your last resort if the upload key is lost.
2.4 Verify Configuration
After setup, note the app signing key certificate fingerprint (SHA-256). You'll need this for:
- Firebase SHA-256 configuration (for Google Sign-In)
- Facebook App configuration
- Any other service requiring app identity verification
3. Default App Information
Go to Setup → Default app information:
Contact Details
- Email: support@kordant.com (or your contact email)
- Website: https://kordant.ai
- Privacy policy URL: https://kordant.ai/privacy (must be publicly accessible)
App Access (if applicable)
- Configure any required URL patterns for App Access API
4. Internal Testing Track
4.1 Create Internal Testing Track
- Go to Testing → Internal testing
- Click "Create new release"
- Fill in release notes
4.2 Add Testers
- Go to Testing → Internal testing → Testers
- Click "Manage testers"
- Add internal tester emails (team members with Google accounts)
- Click "Save changes"
- Testers receive an invitation email — they must accept
4.3 Upload Build
- Go to Testing → Internal testing → Create new release
- Upload the AAB:
cd android ./gradlew bundleProdRelease # AAB location: app/build/outputs/bundle/prodRelease/app-prod-release.aab - Drag and drop the AAB file
- Wait for processing (can take several minutes)
- Fill in release notes
- Click "Review release" → "Start rollout"
4.4 Verify Installation
- Each tester receives an email with the testing link
- Testers click the link and follow the enrollment flow
- Testers install the app from the internal testing listing
- Verify the app launches and functions correctly
5. Store Listing
Go to Main store listing:
5.1 App Identity
- Title:
Kordant(50 characters max) - Short description (80 characters max):
Your personal security command center. Monitor data exposures, screen spam calls, and protect your digital identity. - Full description (4000 characters max):
Kordant is your personal security command center — all-in-one protection for your digital identity. DATA EXPOSURE MONITORING DarkWatch continuously scans broker sites, data dumps, and the dark web for your personal information. Get instant alerts when your data appears online, with automated removal requests to have it taken down. SPAM CALL PROTECTION SpamShield screens incoming calls in real-time, identifying and blocking spam, robocalls, and telemarketers before they reach you. Built on a crowdsourced database of millions of known spam numbers. VOICEPRINT VERIFICATION Create a unique voice signature to verify your identity across services. VoicePrint enrollment takes seconds and works with your existing biometric authentication. PROPERTY PROTECTION HomeTitle monitors your property listings and alerts you to unauthorized postings, fake listings, or identity theft targeting your home. FAMILY SECURITY Extend protection to your entire family with shared watchlists, coordinated alerts, and a single dashboard for everyone's digital safety. KEY FEATURES: • Real-time threat scoring dashboard • Automated data removal requests • Call screening with <100ms latency • Encrypted voice enrollment • Family sharing and management • Dark web exposure monitoring • Property listing protection • Privacy-first architecture YOUR DATA STAYS YOURS: Kordant uses end-to-end encryption for all sensitive data. Your voice recordings, personal information, and security preferences are encrypted at rest and in transit. We never sell or share your data with third parties. SUBSCRIPTION PLANS: • Free: Basic monitoring and call screening • Pro: Full DarkWatch, VoicePrint, and family features • Family: Pro features for up to 6 family members Privacy Policy: https://kordant.ai/privacy Terms of Service: https://kordant.ai/terms Support: support@kordant.ai
5.2 Graphics
App Icon
- Size: 512×512 PNG
- Format: PNG (not transparent)
- Already prepared in
app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp - Convert to 512×512 PNG for upload
Feature Graphic
- Size: 1024×500 JPG or PNG (non-transparent)
- Format: This is the large banner shown in search results
- Create with branding guidelines from
design-tokens/
Screenshots
- Phone (at least 2): 16:9 or 9:16, min 320px, max 3840px
- Dashboard with threat score
- DarkWatch exposure monitoring
- SpamShield call filtering
- VoicePrint enrollment
- Alerts and notifications
- Tablet (at least 2, if supporting): Same aspect ratios
- Foldable (optional): If targeting foldable devices
5.3 Category & Rating
- Category: Tools
- Contact email: support@kordant.ai
- Privacy policy URL: https://kordant.ai/privacy
5.4 Language
- Default: English (United States)
- Additional languages can be added later via Store presence → Localization
6. Pricing & Distribution
6.1 Pricing
Go to Marketing → Pricing & distribution:
- Price: Free
- Subscription offers: Configure in Google Play Console → Monetization → Subscriptions
6.2 Distribution
- Countries/regions: Select all available or specific target markets
- Recommended: Start with US, CA, GB, AU, DE, FR, ES, IT, JP, BR
6.3 Age Rating
- Complete the content rating questionnaire (see Section 7)
7. Content Rating
Go to Setup → Content rating:
US IARC Questionnaire
Answer honestly based on app content:
| Question | Answer |
|---|---|
| In-Game Purchases | Yes (subscriptions) |
| Simulated Gambling | No |
| Alcohol, Drugs, Weapons | No |
| Animated Blood and Gore | No |
| Realistic Blood and Gore | No |
| Realistic Violence | No |
| Cartoon or Fantasy Violence | No |
| Sexual Content | No |
| Horror or Fear Themes | No |
| Profanity | No |
| Suggestive Themes | No |
| Users Interact | Yes (dark web monitoring involves user data) |
| Shares Info | Yes (app collects personal data for security monitoring) |
| Ads | No |
| Inappropriate Ads | No |
| Simulated Gambling | No |
| Medication, Recreational Drugs | No |
| Violence | No |
| Alcohol, Tobacco | No |
| Language | No |
| Sexual Content | No |
| In-App Purchases | Yes |
| PVP (Player vs Player) | No |
Expected rating: Everyone or Everyone 10+
Additional Ratings
Some countries require additional questionnaires (Germany USK, France, etc.). Complete these as prompted.
8. Data Safety Form
Go to Setup → Data safety:
Data Collected
| Data Type | Purpose | Shared? | Required? |
|---|---|---|---|
| Name | Account management | No | Yes |
| Email address | Account management, notifications | No | Yes |
| Phone number | Call screening, spam detection | No | Yes |
| Photos | VoicePrint enrollment (voice samples only) | No | Optional |
| Audio | VoicePrint enrollment and analysis | No | Optional |
| App activity | Feature usage analytics | No | Yes |
| Device ID | App integrity verification | No | Yes |
| Diagnostics | Crash reporting (Firebase Crashlytics) | Yes (Firebase) | Yes |
Data Practices
- Data encryption: Yes, in transit (TLS 1.2+) and at rest (AES-256)
- Data deletion: Users can request data deletion via Settings or support email
- Data shared with third parties: Firebase (analytics, crash reporting), Google Play (Play Integrity)
- Security practices: Certificate pinning, EncryptedSharedPreferences, biometric authentication
Privacy Policy
Must be accessible at: https://kordant.ai/privacy
9. Play Integrity API
The app already includes Play Integrity integration via PlayIntegrityManager.
Enable in Play Console
- Go to Setup → App integrity → Play Integrity API
- Ensure the API is enabled for your app
- Note: Play Integrity is automatically available for apps distributed through Google Play
Server-Side Verification
Configure your backend to verify Play Integrity tokens:
# 1. Get Google's public keys
# https://developer.android.com/google/play/integrity/verify
# 2. Verify tokens using Google's verification library
# Java: com.google.android.play:integrity:1.4.0
# Or use Google Cloud Functions for verification
Backend Integration
The PlayIntegrityManager generates tokens that should be sent to your backend:
- App requests a nonce from your server
- Server passes nonce to
PlayIntegrityManager.requestIntegrityToken(nonce) - App sends the resulting token to your server
- Server verifies the token using Google's public keys
- Server checks
ctsProfileMatchandintegrityResultfields
10. In-App Products
Go to Monetize → Products:
10.1 Subscriptions
Create subscription products:
| Product ID | Name | Price | Description |
|---|---|---|---|
pro_monthly |
Pro Monthly | $9.99/mo | Full DarkWatch, VoicePrint, family features |
pro_annual |
Pro Annual | $79.99/yr | Same as monthly, save 33% |
family_monthly |
Family Monthly | $14.99/mo | Pro for up to 6 family members |
family_annual |
Family Annual | $119.99/yr | Family plan, save 33% |
10.2 Managed Products (one-time)
| Product ID | Name | Price | Description |
|---|---|---|---|
single_scan |
Single Scan | $4.99 | One-time full security scan |
removal_pack |
Removal Pack | $9.99 | 5 automated data removal requests |
10.3 Promo Codes
- Go to Monetize → Promo codes
- Create codes for internal testing and beta testers
Release Checklist
Before submitting for review:
Build & Signing
- Release keystore generated and backed up
key.propertiesconfigured (not committed to git)- Google Play App Signing enabled
- Signed AAB built successfully (
./gradlew bundleProdRelease) - R8/ProGuard enabled and tested (no crashes from obfuscation)
- Baseline profile generated for performance
Store Listing
- App icon uploaded (512×512 PNG)
- Feature graphic uploaded (1024×500)
- Phone screenshots uploaded (2-8 images)
- Tablet screenshots uploaded (if applicable)
- Title, short description, full description complete
- Category set to "Tools"
- Contact details filled in
- Privacy policy URL accessible
Distribution
- Price set to Free
- Distribution countries selected
- Content rating questionnaire completed
- Data safety form completed
- All permissions justified in-app
Testing
- Internal testing track created
- Testers added and accepted invitation
- First build uploaded and processing
- Testers can install and run the app
- Firebase Test Lab tests passing on Pixel, Samsung, Xiaomi
Security
- Certificate pinning configured (real pins, not placeholders)
- Play Integrity API enabled
- Root detection active
- EncryptedSharedPreferences for sensitive data
- Network security config blocks cleartext traffic
Backend
- Play Integrity token verification configured
- FCM configured for push notifications
- TRPC endpoints verified against backend contract
- Token refresh working silently
Troubleshooting
"Upload key not found"
Ensure key.properties exists and has correct paths:
cd android
ls -la key.properties kordant-release.keystore
"Build failed: signingConfig not found"
The signing config is created dynamically from key.properties. Ensure the file exists and is valid.
"AAB upload rejected"
Common causes:
- Wrong target SDK (must be latest)
- Missing required permissions declarations
- App not properly signed
- Version code conflicts (must be higher than previous release)
"Internal testers can't install"
- Ensure testers accepted the invitation email
- Wait up to 30 minutes for the release to process
- Check that the AAB processed successfully in Play Console
- Testers must use a Google account that matches the invited email
"Version code already used"
Each release must have a unique, increasing versionCode. Update in build.gradle.kts:
defaultConfig {
versionCode = 2 // Increment from previous release
versionName = "1.1"
}