301 lines
8.3 KiB
Markdown
301 lines
8.3 KiB
Markdown
# 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` 重新构建项目。**
|