# BearVPN 配置修改指南

## 🎯 快速开始

在开始开发之前，您需要修改以下关键配置文件以适配您的项目。

## 📋 必须修改的配置

### 1. 🏷️ 应用基本信息

#### **pubspec.yaml** - 项目基础配置
```yaml
# 位置: /pubspec.yaml
name: bearvpn                    # 修改为您的应用名称
description: A VPN application   # 修改为您的应用描述
version: 1.0.0+1                # 修改版本号
```

#### **应用显示名称**
- **iOS**: `/ios/Runner/Info.plist` → `CFBundleDisplayName`
- **macOS**: `/macos/Runner/Configs/AppInfo.xcconfig` → `PRODUCT_NAME`
- **Android**: `/android/app/src/main/res/values/strings.xml` → `app_name`
- **Web**: `/web/index.html` → `<title>` 标签

### 2. 🆔 包标识符 (Bundle ID)

#### **iOS 配置**
```bash
# 文件: /ios/Base.xcconfig
BASE_BUNDLE_IDENTIFIER=com.yourcompany.yourapp

# 文件: /ios/Runner/Info.plist
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
```

#### **macOS 配置**
```bash
# 文件: /macos/Runner/Configs/AppInfo.xcconfig
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.yourapp
```

#### **Android 配置**
```gradle
// 文件: /android/app/build.gradle
android {
    defaultConfig {
        applicationId "com.yourcompany.yourapp"
    }
}
```

### 3. 🔐 签名和证书配置

#### **iOS 签名配置**
```bash
# 文件: ios_signing_config.sh
export APPLE_ID="your-apple-id@example.com"        # 您的 Apple ID
export APPLE_PASSWORD="your-app-specific-password" # App 专用密码
export TEAM_ID="YOUR_TEAM_ID"                      # 您的团队 ID
export BUNDLE_ID="com.yourcompany.yourapp"         # 包标识符
export SIGNING_IDENTITY="Mac Developer: Your Name (YOUR_TEAM_ID)"
export DISTRIBUTION_IDENTITY="Developer ID Application: Your Name (YOUR_TEAM_ID)"
```

#### **macOS 签名配置**
```bash
# 文件: macos_signing_config.sh
export APPLE_ID="your-apple-id@example.com"        # 您的 Apple ID
export APPLE_PASSWORD="your-app-specific-password" # App 专用密码
export TEAM_ID="YOUR_TEAM_ID"                      # 您的团队 ID
export SIGNING_IDENTITY="Developer ID Application: Your Company Name (YOUR_TEAM_ID)"
```

### 4. 🎨 应用图标和资源

#### **应用图标位置**
```
assets/images/logo.svg                    # 主 Logo
ios/Runner/Assets.xcassets/AppIcon.appiconset/    # iOS 图标
macos/Runner/Assets.xcassets/AppIcon.appiconset/  # macOS 图标
android/app/src/main/res/mipmap-*/        # Android 图标
web/icons/                                # Web 图标
```

#### **图标尺寸要求**
- **iOS**: 20x20, 29x29, 40x40, 58x58, 60x60, 76x76, 80x80, 87x87, 120x120, 152x152, 167x167, 180x180, 1024x1024
- **Android**: 48x48, 72x72, 96x96, 144x144, 192x192, 512x512
- **macOS**: 16x16, 32x32, 64x64, 128x128, 256x256, 512x512, 1024x1024

### 5. 🌍 多语言配置

#### **添加新语言**
1. 在 `assets/translations/` 目录下创建新的 JSON 文件
2. 文件命名格式: `strings_[语言代码].i18n.json`
3. 在 `lib/app/utils/` 中添加语言支持

#### **修改现有翻译**
```json
// 文件: assets/translations/strings_zh.i18n.json
{
  "appName": "您的应用名称",
  "welcome": "欢迎使用",
  // ... 其他翻译
}
```

### 6. 🔧 构建配置

#### **Android 构建配置**
```gradle
// 文件: /android/app/build.gradle
android {
    compileSdk 34                     // 编译 SDK 版本
    defaultConfig {
        applicationId "com.yourcompany.yourapp"
        minSdkVersion 21              // 最低支持版本
        targetSdkVersion 34           // 目标版本
        versionCode 1                 // 版本代码
        versionName "1.0.0"           // 版本名称
    }
}
```

#### **iOS 构建配置**
```bash
# 文件: /ios/Runner/Info.plist
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>               # 版本号
<key>CFBundleVersion</key>
<string>1</string>                   # 构建号
```

### 7. 🌐 网络配置

#### **域名配置** ⭐ 重要
```dart
// 文件: lib/app/common/app_config.dart
class KRDomain {
  // 主域名列表 - 修改这里来更改API服务器域名
  static List<String> kr_baseDomains = [
    "apicn.bearvpn.top",      // 主域名1
    "apibear.nsdsox.com"      // 主域名2
  ];
  
  // 当前使用的域名
  static String kr_currentDomain = "apicn.bearvpn.top";
  
  // 备用域名获取地址列表
  static List<String> kr_backupDomainUrls = [
    "https://bear-1347601445.cos.ap-guangzhou.myqcloud.com/bear.txt",
    "https://getbr.oss-cn-shanghai.aliyuncs.com/bear.txt",
    "https://gitee.com/karelink/getbr/raw/master/README.en.md",
    "https://configfortrans.oss-cn-guangzhou.aliyuncs.com/bear/bear.txt",
  ];
  
  // 本地备用域名列表（当服务器获取的域名都不可用时使用）
  static List<String> kr_localBackupDomains = [
    "api.omntech.com",
    "api6.omntech.com", 
    "api7.omntech.com",
    "apicn.bearvpn.top",
    "apibear.nsdsox.com",
  ];
}
```

#### **API 端点配置**
```dart
// 文件: lib/app/services/api_service/api.dart
// API 路径定义，通常不需要修改
abstract class Api {
  static const String kr_isRegister = "/v1/app/auth/check";
  static const String kr_register = "/v1/app/auth/register";
  static const String kr_login = "/v1/app/auth/login";
  // ... 其他API路径
}
```

#### **VPN 服务器配置**
```dart
// 文件: lib/app/services/singbox_imp/kr_sing_box_imp.dart
// 修改服务器配置和连接参数
```

## 🚀 部署配置

### 1. **iOS App Store 部署**
```bash
# 1. 配置签名
source ios_signing_config.sh

# 2. 构建 App Store 版本
./build_ios_appstore.sh

# 3. 上传到 App Store Connect
xcrun altool --upload-app -f BearVPN.ipa -u $APPLE_ID -p $APPLE_PASSWORD
```

### 2. **macOS 公证和分发**
```bash
# 1. 配置签名
source macos_signing_config.sh

# 2. 构建和签名
./sign_and_package.sh

# 3. 公证
./notarize_only.sh

# 4. 装订票据
xcrun stapler staple BearVPN-1.0.0-macOS-Signed.dmg
```

### 3. **Android 发布**
```bash
# 1. 生成签名密钥
keytool -genkey -v -keystore android/app/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

# 2. 配置签名
# 编辑 android/key.properties
storePassword=your_store_password
keyPassword=your_key_password
keyAlias=upload
storeFile=upload-keystore.jks

# 3. 构建发布版本
flutter build apk --release
```

## 🔍 调试配置

### 1. **日志配置**
```dart
// 文件: lib/app/utils/kr_log_util.dart
class KRLogUtil {
  static const bool DEBUG = true;  // 生产环境设为 false
  // ... 日志配置
}
```

### 2. **网络调试**
```bash
# 使用调试脚本
./debug_connection.sh
./test_connection.sh
```

## 📱 平台特定配置

### **iOS 权限配置**
```xml
<!-- 文件: /ios/Runner/Info.plist -->
<key>NSCameraUsageDescription</key>
<string>需要相机权限以支持拍照功能</string>
<key>NSMicrophoneUsageDescription</key>
<string>需要麦克风权限以支持语音消息功能</string>
```

### **Android 权限配置**
```xml
<!-- 文件: /android/app/src/main/AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

### **macOS 权限配置**
```xml
<!-- 文件: /macos/Runner/DebugProfile.entitlements -->
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
```

## ⚠️ 重要注意事项

1. **敏感信息**: 所有敏感信息已替换为占位符，使用前必须修改
2. **证书管理**: 确保所有签名证书有效且未过期
3. **版本同步**: 更新版本时同步修改所有平台的版本号
4. **测试**: 在发布前在所有目标平台进行充分测试
5. **备份**: 修改配置前建议备份原始文件

## 🆘 常见问题

### Q: 如何获取 Apple Developer 证书？
A: 登录 [Apple Developer Portal](https://developer.apple.com)，在 Certificates 部分创建新的证书。

### Q: 如何获取 App 专用密码？
A: 登录 [Apple ID 管理页面](https://appleid.apple.com)，在 App-Specific Passwords 部分生成。

### Q: 如何修改应用图标？
A: 替换对应平台的图标文件，确保尺寸符合要求。

### Q: 如何添加新的语言支持？
A: 在 `assets/translations/` 目录下添加新的 JSON 文件，并在代码中添加语言支持。

---

**配置完成后，请运行 `flutter clean && flutter pub get` 重新构建项目。**
