Implement group-level uTLS fingerprint selection
## Summary
Adds ability to set a group-level uTLS fingerprint that overrides individual profile configurations. This feature allows centralized uTLS management for all profiles within a group.
## Changes
### 1. Database (ProxyGroup.kt)
- Added `groupUtlsFingerprint: String` field to `ProxyGroup` data class
- Updated serialization/deserialization to persist the value
### 2. UI (group_preferences.xml, GroupSettingsActivity.kt)
- Added `ListPreference` for uTLS fingerprint selection in group settings
- Uses existing `utls_entry` and `utls_value` arrays from `arrays.xml`
- Added `GROUP_UTLS_FINGERPRINT` constant to `Constants.kt`
- Added `groupUtlsFingerprint` variable to `DataStore.kt`
- Updated `init()` and `serialize()` methods in `GroupSettingsActivity`
- Setting name: "Force uTLS" (EN), "Принудительный uTLS" (RU)
- Added summary display showing currently selected value
### 3. Logic (ConfigBuilder.kt)
- In `buildChain()` function, added group retrieval for each profile
- Applied group uTLS fingerprint in 5 locations:
- StandardV2RayBean with TLS (2 locations)
- StandardV2RayBean with Reality (2 locations)
- TrustTunnelBean with HTTPS (1 location)
## Priority Logic
When building configuration, fingerprint is selected in this order:
1. Experimental override from settings (`overrideUTLSFingerprintForREALITY`/`TLS`)
2. **Group uTLS fingerprint** (if set in group settings)
3. Profile-specific fingerprint (`bean.realityFingerprint` or `bean.utlsFingerprint`)
## Benefits
- Centralized uTLS management for all profiles in a group
- Especially useful for circumventing blocks
- No need to manually edit each profile's uTLS settings
- Easy to test different fingerprints across multiple profiles
合并状态:未合并 3 条评论