# 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` → `
` 标签
### 2. 🆔 包标识符 (Bundle ID)
#### **iOS 配置**
```bash
# 文件: /ios/Base.xcconfig
BASE_BUNDLE_IDENTIFIER=com.yourcompany.yourapp
# 文件: /ios/Runner/Info.plist
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
```
#### **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
CFBundleShortVersionString
1.0.0 # 版本号
CFBundleVersion
1 # 构建号
```
### 7. 🌐 网络配置
#### **域名配置** ⭐ 重要
```dart
// 文件: lib/app/common/app_config.dart
class KRDomain {
// 主域名列表 - 修改这里来更改API服务器域名
static List kr_baseDomains = [
"apicn.bearvpn.top", // 主域名1
"apibear.nsdsox.com" // 主域名2
];
// 当前使用的域名
static String kr_currentDomain = "apicn.bearvpn.top";
// 备用域名获取地址列表
static List 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 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
NSCameraUsageDescription
需要相机权限以支持拍照功能
NSMicrophoneUsageDescription
需要麦克风权限以支持语音消息功能
```
### **Android 权限配置**
```xml
```
### **macOS 权限配置**
```xml
com.apple.security.network.client
com.apple.security.network.server
```
## ⚠️ 重要注意事项
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` 重新构建项目。**