diff --git a/apps/mobile/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/apps/mobile/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..611436a
Binary files /dev/null and b/apps/mobile/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png differ
diff --git a/apps/mobile/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/apps/mobile/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..13fa30c
Binary files /dev/null and b/apps/mobile/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png differ
diff --git a/apps/mobile/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/apps/mobile/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..ce6fcc7
Binary files /dev/null and b/apps/mobile/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png differ
diff --git a/apps/mobile/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/apps/mobile/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..c0a0345
Binary files /dev/null and b/apps/mobile/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png differ
diff --git a/apps/mobile/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/apps/mobile/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..2231dc4
Binary files /dev/null and b/apps/mobile/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/apps/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/apps/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..c79c58a
--- /dev/null
+++ b/apps/mobile/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/apps/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index db77bb4..61e4d3e 100644
Binary files a/apps/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/apps/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/apps/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 17987b7..749ddb2 100644
Binary files a/apps/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/apps/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/apps/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 09d4391..0378568 100644
Binary files a/apps/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/apps/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/apps/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index d5f1c8d..85ac75d 100644
Binary files a/apps/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/apps/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/apps/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 4d6372e..ce8136e 100644
Binary files a/apps/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/apps/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/apps/mobile/android/app/src/main/res/values/colors.xml b/apps/mobile/android/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..f6cedf4
--- /dev/null
+++ b/apps/mobile/android/app/src/main/res/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #1A73E8
+
\ No newline at end of file
diff --git a/apps/mobile/assets/brand/app-icon.png b/apps/mobile/assets/brand/app-icon.png
new file mode 100644
index 0000000..477fea0
Binary files /dev/null and b/apps/mobile/assets/brand/app-icon.png differ
diff --git a/apps/mobile/pubspec.lock b/apps/mobile/pubspec.lock
index b2082b0..89cae57 100644
--- a/apps/mobile/pubspec.lock
+++ b/apps/mobile/pubspec.lock
@@ -17,6 +17,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "13.0.0"
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: "6c5bcd986e06b94e3c40244af471750840a3d2341d1f9763a1100a14add517b4"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "4.3.0"
args:
dependency: transitive
description:
@@ -157,10 +165,10 @@ packages:
dependency: transitive
description:
name: cli_util
- sha256: "71e43f1976c3eae2d9468a5b4d6600bf8cae61508b87f27fa1799228935d48ab"
+ sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c
url: "https://pub.flutter-io.cn"
source: hosted
- version: "0.5.2"
+ version: "0.4.2"
clock:
dependency: transitive
description:
@@ -331,6 +339,14 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
+ flutter_launcher_icons:
+ dependency: "direct dev"
+ description:
+ name: flutter_launcher_icons
+ sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7"
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "0.14.4"
flutter_lints:
dependency: "direct dev"
description:
@@ -487,6 +503,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.1.2"
+ image:
+ dependency: transitive
+ description:
+ name: image
+ sha256: a1e7f4951e538a568e14b856702afc9ae1d2f4b202daced8d22c1b9cd211ce89
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "4.10.1"
image_picker:
dependency: "direct main"
description:
@@ -788,6 +812,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.3"
+ posix:
+ dependency: transitive
+ description:
+ name: posix
+ sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e
+ url: "https://pub.flutter-io.cn"
+ source: hosted
+ version: "6.5.2"
process:
dependency: transitive
description:
diff --git a/apps/mobile/pubspec.yaml b/apps/mobile/pubspec.yaml
index 4d8c7cb..1fb955f 100644
--- a/apps/mobile/pubspec.yaml
+++ b/apps/mobile/pubspec.yaml
@@ -40,6 +40,14 @@ dependencies:
gal: ^2.3.3
fluwx: ^6.0.2
+
+flutter_launcher_icons:
+ android: true
+ ios: false
+ image_path: "assets/brand/app-icon.png"
+ adaptive_icon_background: "#1A73E8"
+ adaptive_icon_foreground: "assets/brand/app-icon.png"
+
dev_dependencies:
flutter_test:
sdk: flutter
@@ -49,6 +57,7 @@ dev_dependencies:
flutter_lints: ^6.0.0
build_runner: ^2.15.1
drift_dev: ^2.35.0
+ flutter_launcher_icons: ^0.14.0
flutter:
# l10n 代码生成(arb 见 lib/l10n/,配置见 l10n.yaml)
diff --git a/docs/designs/brand/photolive-app-logo-1024-2026-09-24.png b/docs/designs/brand/photolive-app-logo-1024-2026-09-24.png
new file mode 100644
index 0000000..477fea0
Binary files /dev/null and b/docs/designs/brand/photolive-app-logo-1024-2026-09-24.png differ
diff --git a/docs/designs/brand/photolive-app-logo-2026-09-24.md b/docs/designs/brand/photolive-app-logo-2026-09-24.md
new file mode 100644
index 0000000..2d42b1e
--- /dev/null
+++ b/docs/designs/brand/photolive-app-logo-2026-09-24.md
@@ -0,0 +1,12 @@
+# PhotoLive App icon
+
+日期:2026-09-24。
+
+- 最终文件:`photolive-app-logo-1024-2026-09-24.png`,1024×1024 PNG。
+- 原始生成文件:`photolive-app-logo-original-2026-09-24.png`,1254×1254 PNG。
+- 内置 image_gen 生成;最终尺寸采用等比例高质量导出,不裁剪内容。
+- 蓝白相机与光圈组合,无文字。未替换项目现有 App 图标配置。
+
+## Generation prompt
+
+Use case: logo-brand. Generate ONE finished app icon for PhotoLive, a professional enterprise event photography and live photo sharing app. Output EXACTLY 1024 by 1024 pixels, square PNG. Full-bleed solid brilliant blue background #1A73E8 extending to all four square edges, opaque background, NO pre-rounded outer icon corners. In the center a beautifully balanced distinctive white geometric camera aperture symbol, six broad expertly spaced interlocking shutter blades encircling a clear blue hexagonal lens opening. Subtly integrate the silhouette of a photographic frame into the overall mark without additional separate symbols. Strong simple memorable silhouette, highly legible at 48px, flat vector-like precision, smooth optically corrected curves, generous safe area of about 20 percent around the central symbol. White mark approximately 60 percent of canvas width. Premium calm modern visual identity consistent with blue-and-white PhotoLive admin and mobile UI. Pure flat colors blue and white, no gradients, no shadows, no 3D, no glossy highlights. No text, no letters, no wordmark, no Chinese characters, no slogan, no watermark, no presentation board, no mockup phone, no multiple alternatives. This is the actual exportable icon asset, not a picture of an icon on a background.
diff --git a/docs/designs/brand/photolive-app-logo-original-2026-09-24.png b/docs/designs/brand/photolive-app-logo-original-2026-09-24.png
new file mode 100644
index 0000000..a2f7f66
Binary files /dev/null and b/docs/designs/brand/photolive-app-logo-original-2026-09-24.png differ