# yusellerapp **Repository Path**: mysymt/yusellerapp ## Basic Information - **Project Name**: yusellerapp - **Description**: app - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-06 - **Last Updated**: 2026-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 卖货的阿余 · Android 客户端(原生 Android / Kotlin + 传统 XML + View) 进销存系统的手机端 App,在 **MacBook Pro M4** 上用 Android Studio 编译成 APK, 先在 **荣耀 Pro 60** 上侧载测试,验证通过后安装到 **华为 P70 Pro+**。 ## 技术栈 - Kotlin + ViewBinding(传统 XML 布局,非 Compose,便于 Java 背景调试) - Retrofit2 + OkHttp3 + Gson(调后端 `/api/phone/*`) - Material Design 3 组件 - minSdk 24 / targetSdk 34 / compileSdk 34 - AGP 8.5.2 + Kotlin 1.9.24 + Gradle 8.9 ## 在 Mac 上打开与编译 1. 在 Mac 安装 **Android Studio**(含 SDK Platform 34、Build-Tools)。 2. 用 Android Studio 打开本目录 `android/`(首次打开会触发 Gradle Sync, 并自动补全 `gradle-wrapper.jar` 与 `gradlew`;需联网下载 Gradle 8.9)。 3. **改服务器地址**:编辑 `app/src/main/java/com/yuseller/app/api/ApiClient.kt` 中的 `BASE_URL`,例如: ```kotlin const val BASE_URL = "https://1.2.3.4:8443/" ``` (结尾必须带 `/`;自签 HTTPS 用 `https://IP:端口`,可信证书可用域名) 4. 菜单 **Build → Build Bundle(s) / APK(s) → Build APK(s)**, 产物在 `app/build/outputs/apk/debug/app-debug.apk`。 ## 安装到手机 - **荣耀 Pro 60(测试)**:USB 连 Mac,`adb install app-debug.apk`; 或把 APK 传到手机,设置里「允许未知来源应用」后点击安装。 - **华为 P70 Pro+(最终)**:同样 `adb install` 或侧载安装。 - 首次登录用后端默认账户 **admin / admin123**(首启无账户时由后端自动创建)。 ## 页面与接口 | 页面 | 功能 | 后端接口 | |---|---|---| | 登录 | 用户名/密码登录,存 JWT | `POST /api/auth/login` | | 商品列表 | 关键词搜索商品 | `GET /api/phone/products?keyword=` | | 开单 | 选商品 → 填数量/单价 → 提交 | `POST /api/phone/sale` | JWT 通过 OkHttp 拦截器自动附加 `Authorization: Bearer ` 头。 ## ⚠️ 安全提示(重要) - `api/UnsafeTrust.kt` 在**开发/测试期信任任意自签证书**,仅用于本地联调。 上线前请改为在 `res/raw` 放置正式 CA 证书并做正规校验 (或申请 Let's Encrypt 等可信证书,再把 `UnsafeTrust` 换成默认 SSL)。 - `res/xml/network_security_config.xml` 当前允许明文流量,生产环境应关闭。 ## 工程结构 ``` android/ ├── build.gradle.kts / settings.gradle.kts / gradle.properties ├── gradle/wrapper/gradle-wrapper.properties └── app/ ├── build.gradle.kts / proguard-rules.pro └── src/main/ ├── AndroidManifest.xml ├── java/com/yuseller/app/ │ ├── YuSellerApp.kt # Application,初始化 Prefs │ ├── api/ │ │ ├── ApiClient.kt # Retrofit + OkHttp + 拦截器 + BASE_URL │ │ ├── ApiService.kt # 接口定义 │ │ ├── models.kt # 数据类(字段全可空) │ │ └── UnsafeTrust.kt # 自签证书信任(开发期) │ ├── ui/ │ │ ├── LoginActivity.kt │ │ ├── ProductListActivity.kt │ │ ├── ProductAdapter.kt │ │ └── SaleActivity.kt │ └── util/Prefs.kt # token 本地存储 └── res/ # 布局/字符串/颜色/主题/网络安全配置 ```