# 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 <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` 重新构建项目。**