chore(android): versionCode 2, eas.json profiles, avatar PNG fix

- app.config.ts: android.versionCode 2 (was 1)
- eas.json: development/preview/production profiles, EXPO_PUBLIC_API_URL=staging,
  appVersionSource=local, autoIncrement=false
- avatars: switch DiceBear endpoint /svg -> /png — RN <Image> can't decode SVG,
  Hero-Avatars rendered transparent/blank on Android

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
chahinebrini 2026-05-11 14:00:02 +02:00
parent dd3d8c6667
commit bcc6e5cba1
4 changed files with 21 additions and 8 deletions

View File

@ -36,6 +36,7 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
android: {
package: "org.rebreak.app",
versionCode: 2,
adaptiveIcon: {
// Play-Console-Icon (rebreak_android.png) verwenden — wird durch Adaptive-Mask
// gecropped (Kreis/Squircle), evtl. Edges leicht beschnitten je nach Design.

View File

@ -1,12 +1,15 @@
{
"cli": {
"version": ">= 5.0.0",
"appVersionSource": "remote"
"appVersionSource": "local"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"env": {
"EXPO_PUBLIC_API_URL": "https://staging.rebreak.org"
},
"ios": {
"simulator": false
},
@ -16,24 +19,30 @@
},
"preview": {
"distribution": "internal",
"env": {
"EXPO_PUBLIC_API_URL": "https://staging.rebreak.org"
},
"ios": {
"resourceClass": "m-medium",
"autoIncrement": true
"autoIncrement": false
},
"android": {
"buildType": "apk",
"autoIncrement": true
"autoIncrement": false
},
"channel": "preview"
},
"production": {
"env": {
"EXPO_PUBLIC_API_URL": "https://staging.rebreak.org"
},
"ios": {
"resourceClass": "m-medium",
"autoIncrement": true
"autoIncrement": false
},
"android": {
"buildType": "app-bundle",
"autoIncrement": true
"autoIncrement": false
},
"channel": "production"
}
@ -46,7 +55,7 @@
"appleTeamId": "84BQ7MTFYK"
},
"android": {
"serviceAccountKeyPath": "<USER: lokaler Pfad zu Google-Cloud-Service-Account-JSON, z.B. ~/secrets/rebreak-play-service-account.json>",
"serviceAccountKeyPath": "<TODO: lokaler Pfad zu Google-Cloud-Service-Account-JSON, z.B. ~/secrets/rebreak-play-service-account.json>",
"track": "internal"
}
}

View File

@ -5,7 +5,9 @@ export interface HeroAvatar {
url: string;
}
const DICEBEAR_BASE = 'https://api.dicebear.com/9.x/adventurer/svg';
// PNG, not SVG — React Native's <Image> can't decode SVG (Hero-Avatars rendered
// blank/transparent on Android otherwise). DiceBear serves PNG at the /png path.
const DICEBEAR_BASE = 'https://api.dicebear.com/9.x/adventurer/png';
export const HERO_AVATARS: HeroAvatar[] = [
{ id: 'spider', name: 'Spider', color: 'border-red-500', url: `${DICEBEAR_BASE}?seed=spiderman&backgroundColor=b71c1c` },

View File

@ -1,6 +1,7 @@
import { getAvatarById, getAvatarUrl } from './avatars';
const DICEBEAR_BASE = 'https://api.dicebear.com/9.x/adventurer/svg';
// PNG, not SVG — RN <Image> can't decode SVG. DiceBear serves PNG at the /png path.
const DICEBEAR_BASE = 'https://api.dicebear.com/9.x/adventurer/png';
/**
* Resolves the `profiles.avatar` field zu einer renderbaren URL.