├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── bug_report_zh_CN.md └── workflows │ ├── debug.yml │ ├── release.yml │ ├── release_brook.yml │ ├── release_hysteria.yml │ ├── release_naive.yml │ ├── release_pingtunnel.yml │ ├── release_relaybaton.yml │ └── release_trojan_go.yml ├── .gitignore ├── .gitmodules ├── .idea ├── .gitignore ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── copyright │ ├── profiles_settings.xml │ └── sagernet.xml ├── dictionaries │ └── sekai.xml ├── inspectionProfiles │ └── Project_Default.xml ├── jarRepositories.xml ├── render.experimental.xml └── vcs.xml ├── AUTHORS ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro ├── schemas │ ├── io.nekohasekai.sagernet.database.SagerDatabase │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 14.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ └── io.nekohasekai.sagernet.database.preference.PublicDatabase │ │ └── 1.json └── src │ ├── androidTest │ └── java │ │ └── io │ │ └── nekohasekai │ │ └── sagernet │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── aidl │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ └── aidl │ │ │ ├── AppStatsList.aidl │ │ │ ├── ISagerNetService.aidl │ │ │ ├── ISagerNetServiceCallback.aidl │ │ │ └── TrafficStats.aidl │ ├── assets │ │ ├── LICENSE │ │ ├── analysis.txt │ │ └── terminal.properties │ ├── ic_launcher-playstore.png │ ├── java │ │ ├── cn │ │ │ └── hutool │ │ │ │ └── cache │ │ │ │ └── impl │ │ │ │ ├── AbstractCacheWithoutLock.java │ │ │ │ ├── LFUCacheCompact.java │ │ │ │ └── LFUCacheWithoutLock.java │ │ ├── com │ │ │ └── github │ │ │ │ └── shadowsocks │ │ │ │ ├── plugin │ │ │ │ ├── ConfigurationActivity.kt │ │ │ │ ├── HelpActivity.kt │ │ │ │ ├── HelpCallback.kt │ │ │ │ ├── InternalPlugin.kt │ │ │ │ ├── NativePlugin.kt │ │ │ │ ├── NativePluginProvider.kt │ │ │ │ ├── NoPlugin.kt │ │ │ │ ├── OptionsCapableActivity.kt │ │ │ │ ├── PathProvider.kt │ │ │ │ ├── Plugin.kt │ │ │ │ ├── PluginConfiguration.kt │ │ │ │ ├── PluginContract.kt │ │ │ │ ├── PluginList.kt │ │ │ │ ├── PluginManager.kt │ │ │ │ ├── PluginOptions.kt │ │ │ │ ├── ResolvedPlugin.kt │ │ │ │ ├── Utils.kt │ │ │ │ └── fragment │ │ │ │ │ └── AlertDialogFragment.kt │ │ │ │ └── preference │ │ │ │ ├── PluginConfigurationDialogFragment.kt │ │ │ │ ├── PluginPreference.kt │ │ │ │ └── PluginPreferenceDialogFragment.kt │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ ├── BootReceiver.kt │ │ │ ├── Constants.kt │ │ │ ├── QuickToggleShortcut.kt │ │ │ ├── SagerNet.kt │ │ │ ├── aidl │ │ │ ├── AppStats.kt │ │ │ ├── AppStatsList.kt │ │ │ └── TrafficStats.kt │ │ │ ├── bg │ │ │ ├── AbstractInstance.kt │ │ │ ├── BaseService.kt │ │ │ ├── Executable.kt │ │ │ ├── ExternalInstance.kt │ │ │ ├── GuardedProcessPool.kt │ │ │ ├── ProxyService.kt │ │ │ ├── SagerConnection.kt │ │ │ ├── ServiceNotification.kt │ │ │ ├── SubscriptionUpdater.kt │ │ │ ├── TileService.kt │ │ │ ├── VpnService.kt │ │ │ ├── proto │ │ │ │ ├── ApiInstance.kt │ │ │ │ ├── ProxyInstance.kt │ │ │ │ ├── UidDumper.kt │ │ │ │ └── V2RayInstance.kt │ │ │ └── test │ │ │ │ ├── DebugInstance.kt │ │ │ │ ├── LocalDnsInstance.kt │ │ │ │ ├── UrlTest.kt │ │ │ │ └── V2RayTestInstance.kt │ │ │ ├── database │ │ │ ├── DataStore.kt │ │ │ ├── GroupManager.kt │ │ │ ├── ParcelizeBridge.java │ │ │ ├── ProfileManager.kt │ │ │ ├── ProxyEntity.kt │ │ │ ├── ProxyGroup.kt │ │ │ ├── RuleEntity.kt │ │ │ ├── SagerDatabase.kt │ │ │ ├── StatsEntity.kt │ │ │ ├── SubscriptionBean.java │ │ │ └── preference │ │ │ │ ├── EditTextPreferenceModifiers.kt │ │ │ │ ├── KeyValuePair.kt │ │ │ │ ├── OnPreferenceDataStoreChangeListener.kt │ │ │ │ ├── PublicDatabase.kt │ │ │ │ └── RoomPreferenceDataStore.kt │ │ │ ├── fmt │ │ │ ├── AbstractBean.java │ │ │ ├── Alerts.kt │ │ │ ├── ConfigBuilder.kt │ │ │ ├── KryoConverters.java │ │ │ ├── PluginEntry.kt │ │ │ ├── Serializable.kt │ │ │ ├── TypeMap.kt │ │ │ ├── UniversalFmt.kt │ │ │ ├── brook │ │ │ │ ├── BrookBean.java │ │ │ │ └── BrookFmt.kt │ │ │ ├── gson │ │ │ │ ├── GsonConverters.java │ │ │ │ ├── Gsons.kt │ │ │ │ ├── JsonLazyAdapter.java │ │ │ │ ├── JsonLazyFactory.java │ │ │ │ ├── JsonLazyInterface.java │ │ │ │ ├── JsonOr.java │ │ │ │ ├── JsonOrAdapter.java │ │ │ │ └── JsonOrAdapterFactory.java │ │ │ ├── http │ │ │ │ ├── HttpBean.java │ │ │ │ └── HttpFmt.kt │ │ │ ├── hysteria │ │ │ │ ├── HysteriaBean.java │ │ │ │ └── HysteriaFmt.kt │ │ │ ├── internal │ │ │ │ ├── BalancerBean.java │ │ │ │ ├── ChainBean.java │ │ │ │ ├── ConfigBean.java │ │ │ │ └── InternalBean.java │ │ │ ├── naive │ │ │ │ ├── NaiveBean.java │ │ │ │ └── NaiveFmt.kt │ │ │ ├── pingtunnel │ │ │ │ ├── PingTunnelBean.java │ │ │ │ └── PingTunnelFmt.kt │ │ │ ├── relaybaton │ │ │ │ ├── RelayBatonBean.java │ │ │ │ └── RelayBatonFmt.kt │ │ │ ├── shadowsocks │ │ │ │ ├── ShadowsocksBean.java │ │ │ │ └── ShadowsocksFmt.kt │ │ │ ├── shadowsocksr │ │ │ │ ├── ShadowsocksRBean.java │ │ │ │ └── ShadowsocksRFmt.kt │ │ │ ├── socks │ │ │ │ ├── SOCKSBean.java │ │ │ │ └── SOCKSFmt.kt │ │ │ ├── ssh │ │ │ │ └── SSHBean.java │ │ │ ├── trojan │ │ │ │ ├── TrojanBean.java │ │ │ │ └── TrojanFmt.kt │ │ │ ├── trojan_go │ │ │ │ ├── TrojanGoBean.java │ │ │ │ └── TrojanGoFmt.kt │ │ │ ├── v2ray │ │ │ │ ├── StandardV2RayBean.java │ │ │ │ ├── V2RayConfig.java │ │ │ │ ├── V2RayFmt.kt │ │ │ │ ├── VLESSBean.java │ │ │ │ └── VMessBean.java │ │ │ └── wireguard │ │ │ │ ├── WireGuardBean.java │ │ │ │ └── WireGuardFmt.kt │ │ │ ├── group │ │ │ ├── GroupInterfaceAdapter.kt │ │ │ ├── GroupUpdater.kt │ │ │ ├── OpenOnlineConfigUpdater.kt │ │ │ ├── RawUpdater.kt │ │ │ └── SIP008Updater.kt │ │ │ ├── ktx │ │ │ ├── Asyncs.kt │ │ │ ├── Browsers.kt │ │ │ ├── Dialogs.kt │ │ │ ├── Dimens.kt │ │ │ ├── Formats.kt │ │ │ ├── Kryos.kt │ │ │ ├── Layouts.kt │ │ │ ├── Logs.kt │ │ │ ├── Nets.kt │ │ │ ├── Preferences.kt │ │ │ ├── Signatures.kt │ │ │ ├── UUIDs.kt │ │ │ ├── Utils.kt │ │ │ └── Validators.kt │ │ │ ├── plugin │ │ │ ├── NativePlugin.kt │ │ │ ├── Plugin.kt │ │ │ ├── PluginList.kt │ │ │ ├── PluginManager.kt │ │ │ └── ResolvedPlugin.kt │ │ │ ├── tasker │ │ │ ├── TaskerActivity.kt │ │ │ ├── TaskerBundle.kt │ │ │ └── TaskerReceiver.kt │ │ │ ├── ui │ │ │ ├── AboutFragment.kt │ │ │ ├── ActiveFragment.kt │ │ │ ├── AppListActivity.kt │ │ │ ├── AppManagerActivity.kt │ │ │ ├── AssetsActivity.kt │ │ │ ├── BackupFragment.kt │ │ │ ├── ConfigurationFragment.kt │ │ │ ├── DebugFragment.kt │ │ │ ├── GroupFragment.kt │ │ │ ├── GroupSettingsActivity.kt │ │ │ ├── LicenseActivity.kt │ │ │ ├── LogcatFragment.kt │ │ │ ├── MainActivity.kt │ │ │ ├── NamedFragment.kt │ │ │ ├── NetworkFragment.kt │ │ │ ├── ProfileSelectActivity.kt │ │ │ ├── RouteFragment.kt │ │ │ ├── RouteSettingsActivity.kt │ │ │ ├── ScannerActivity.kt │ │ │ ├── SettingsFragment.kt │ │ │ ├── SettingsPreferenceFragment.kt │ │ │ ├── StatsFragment.kt │ │ │ ├── StunActivity.kt │ │ │ ├── ThemedActivity.kt │ │ │ ├── ToolbarFragment.kt │ │ │ ├── ToolsFragment.kt │ │ │ ├── TrafficFragment.kt │ │ │ ├── VpnRequestActivity.kt │ │ │ └── profile │ │ │ │ ├── BalancerSettingsActivity.kt │ │ │ │ ├── BrookSettingsActivity.kt │ │ │ │ ├── ChainSettingsActivity.kt │ │ │ │ ├── ConfigEditActivity.kt │ │ │ │ ├── ConfigSettingsActivity.kt │ │ │ │ ├── HttpSettingsActivity.kt │ │ │ │ ├── HysteriaSettingsActivity.kt │ │ │ │ ├── NaiveSettingsActivity.kt │ │ │ │ ├── PingTunnelSettingsActivity.kt │ │ │ │ ├── ProfileSettingsActivity.kt │ │ │ │ ├── RelayBatonSettingsActivity.kt │ │ │ │ ├── SSHSettingsActivity.kt │ │ │ │ ├── ShadowsocksRSettingsActivity.kt │ │ │ │ ├── ShadowsocksSettingsActivity.kt │ │ │ │ ├── SocksSettingsActivity.kt │ │ │ │ ├── StandardV2RaySettingsActivity.kt │ │ │ │ ├── TrojanGoSettingsActivity.kt │ │ │ │ ├── TrojanSettingsActivity.kt │ │ │ │ ├── VLESSSettingsActivity.kt │ │ │ │ ├── VMessSettingsActivity.kt │ │ │ │ └── WireGuardSettingsActivity.kt │ │ │ ├── utils │ │ │ ├── Cloudflare.kt │ │ │ ├── Commandline.kt │ │ │ ├── CrashHandler.kt │ │ │ ├── DefaultNetworkListener.kt │ │ │ ├── DeviceStorageApp.kt │ │ │ ├── DirectBoot.kt │ │ │ ├── HttpsTest.kt │ │ │ ├── PackageCache.kt │ │ │ ├── Subnet.kt │ │ │ ├── Theme.kt │ │ │ └── cf │ │ │ │ ├── DeviceResponse.kt │ │ │ │ ├── RegisterRequest.kt │ │ │ │ └── UpdateDeviceRequest.kt │ │ │ └── widget │ │ │ ├── AppListPreference.kt │ │ │ ├── AutoCollapseTextView.kt │ │ │ ├── ColorPickerPreference.kt │ │ │ ├── ColorPickerPreferenceDialogFragmentCompat.kt │ │ │ ├── EditConfigPreference.kt │ │ │ ├── FabProgressBehavior.kt │ │ │ ├── GroupPreference.kt │ │ │ ├── LinkOrContentPreference.kt │ │ │ ├── LinkPreference.kt │ │ │ ├── NonBlackEditTextPreference.kt │ │ │ ├── OOCv1TokenPreference.kt │ │ │ ├── OutboundPreference.kt │ │ │ ├── QRCodeDialog.kt │ │ │ ├── ServiceButton.kt │ │ │ ├── StatsBar.kt │ │ │ ├── TaskerProfilePreference.kt │ │ │ ├── UndoSnackbarManager.kt │ │ │ ├── UserAgentPreference.kt │ │ │ └── WindowInsetsListeners.kt │ ├── play │ │ └── release-notes │ │ │ ├── en-US │ │ │ └── default.txt │ │ │ └── zh-CN │ │ │ └── default.txt │ └── res │ │ ├── color │ │ ├── chip_background.xml │ │ ├── chip_ripple_color.xml │ │ ├── chip_text_color.xml │ │ ├── navigation_icon.xml │ │ └── navigation_item.xml │ │ ├── drawable │ │ ├── baseline_arrow_back_24.xml │ │ ├── baseline_construction_24.xml │ │ ├── baseline_delete_sweep_24.xml │ │ ├── baseline_flight_takeoff_24.xml │ │ ├── baseline_public_24.xml │ │ ├── baseline_save_24.xml │ │ ├── baseline_send_24.xml │ │ ├── baseline_translate_24.xml │ │ ├── baseline_widgets_24.xml │ │ ├── baseline_wifi_lock_24.xml │ │ ├── baseline_wrap_text_24.xml │ │ ├── ic_action_copyright.xml │ │ ├── ic_action_delete.xml │ │ ├── ic_action_description.xml │ │ ├── ic_action_dns.xml │ │ ├── ic_action_done.xml │ │ ├── ic_action_lock.xml │ │ ├── ic_action_lock_open.xml │ │ ├── ic_action_note_add.xml │ │ ├── ic_action_settings.xml │ │ ├── ic_app_shortcut_background.xml │ │ ├── ic_av_playlist_add.xml │ │ ├── ic_baseline_add_road_24.xml │ │ ├── ic_baseline_airplanemode_active_24.xml │ │ ├── ic_baseline_bug_report_24.xml │ │ ├── ic_baseline_camera_24.xml │ │ ├── ic_baseline_card_giftcard_24.xml │ │ ├── ic_baseline_cast_connected_24.xml │ │ ├── ic_baseline_center_focus_weak_24.xml │ │ ├── ic_baseline_color_lens_24.xml │ │ ├── ic_baseline_compare_arrows_24.xml │ │ ├── ic_baseline_domain_24.xml │ │ ├── ic_baseline_download_24.xml │ │ ├── ic_baseline_emoji_emotions_24.xml │ │ ├── ic_baseline_fast_forward_24.xml │ │ ├── ic_baseline_fingerprint_24.xml │ │ ├── ic_baseline_flip_camera_android_24.xml │ │ ├── ic_baseline_format_align_left_24.xml │ │ ├── ic_baseline_grid_3x3_24.xml │ │ ├── ic_baseline_home_24.xml │ │ ├── ic_baseline_http_24.xml │ │ ├── ic_baseline_https_24.xml │ │ ├── ic_baseline_import_contacts_24.xml │ │ ├── ic_baseline_info_24.xml │ │ ├── ic_baseline_layers_24.xml │ │ ├── ic_baseline_legend_toggle_24.xml │ │ ├── ic_baseline_link_24.xml │ │ ├── ic_baseline_local_bar_24.xml │ │ ├── ic_baseline_lock_24.xml │ │ ├── ic_baseline_low_priority_24.xml │ │ ├── ic_baseline_manage_search_24.xml │ │ ├── ic_baseline_more_vert_24.xml │ │ ├── ic_baseline_multiline_chart_24.xml │ │ ├── ic_baseline_multiple_stop_24.xml │ │ ├── ic_baseline_nat_24.xml │ │ ├── ic_baseline_nfc_24.xml │ │ ├── ic_baseline_no_encryption_gmailerrorred_24.xml │ │ ├── ic_baseline_person_24.xml │ │ ├── ic_baseline_push_pin_24.xml │ │ ├── ic_baseline_rule_folder_24.xml │ │ ├── ic_baseline_running_with_errors_24.xml │ │ ├── ic_baseline_sanitizer_24.xml │ │ ├── ic_baseline_security_24.xml │ │ ├── ic_baseline_shutter_speed_24.xml │ │ ├── ic_baseline_speed_24.xml │ │ ├── ic_baseline_stream_24.xml │ │ ├── ic_baseline_texture_24.xml │ │ ├── ic_baseline_timelapse_24.xml │ │ ├── ic_baseline_transform_24.xml │ │ ├── ic_baseline_transgender_24.xml │ │ ├── ic_baseline_update_24.xml │ │ ├── ic_baseline_view_list_24.xml │ │ ├── ic_baseline_vpn_key_24.xml │ │ ├── ic_baseline_warning_24.xml │ │ ├── ic_baseline_wb_sunny_24.xml │ │ ├── ic_communication_phonelink_ring.xml │ │ ├── ic_device_data_usage.xml │ │ ├── ic_device_developer_mode.xml │ │ ├── ic_file_cloud_queue.xml │ │ ├── ic_file_file_upload.xml │ │ ├── ic_hardware_router.xml │ │ ├── ic_image_camera_alt.xml │ │ ├── ic_image_edit.xml │ │ ├── ic_image_looks_6.xml │ │ ├── ic_image_photo.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_maps_360.xml │ │ ├── ic_maps_directions.xml │ │ ├── ic_maps_directions_boat.xml │ │ ├── ic_navigation_apps.xml │ │ ├── ic_navigation_close.xml │ │ ├── ic_navigation_menu.xml │ │ ├── ic_notification_enhanced_encryption.xml │ │ ├── ic_qu_camera_launcher.xml │ │ ├── ic_qu_shadowsocks_foreground.xml │ │ ├── ic_qu_shadowsocks_launcher.xml │ │ ├── ic_service_active.xml │ │ ├── ic_service_busy.xml │ │ ├── ic_service_connected.xml │ │ ├── ic_service_connecting.xml │ │ ├── ic_service_idle.xml │ │ ├── ic_service_stopped.xml │ │ ├── ic_service_stopping.xml │ │ ├── ic_settings_password.xml │ │ ├── ic_social_emoji_symbols.xml │ │ ├── ic_social_share.xml │ │ └── terminal_scroll_shape.xml │ │ ├── font │ │ └── jetbrains_mono.ttf │ │ ├── layout │ │ ├── layout_about.xml │ │ ├── layout_add_entity.xml │ │ ├── layout_app_list.xml │ │ ├── layout_appbar.xml │ │ ├── layout_apps.xml │ │ ├── layout_apps_item.xml │ │ ├── layout_asset_item.xml │ │ ├── layout_assets.xml │ │ ├── layout_backup.xml │ │ ├── layout_chain_settings.xml │ │ ├── layout_config_settings.xml │ │ ├── layout_debug.xml │ │ ├── layout_edit_config.xml │ │ ├── layout_edit_group.xml │ │ ├── layout_empty.xml │ │ ├── layout_empty_route.xml │ │ ├── layout_group.xml │ │ ├── layout_group_item.xml │ │ ├── layout_group_list.xml │ │ ├── layout_icon_list_item_2.xml │ │ ├── layout_import.xml │ │ ├── layout_license.xml │ │ ├── layout_link_dialog.xml │ │ ├── layout_loading.xml │ │ ├── layout_logcat.xml │ │ ├── layout_main.xml │ │ ├── layout_network.xml │ │ ├── layout_password_dialog.xml │ │ ├── layout_profile.xml │ │ ├── layout_profile_list.xml │ │ ├── layout_progress.xml │ │ ├── layout_progress_list.xml │ │ ├── layout_route.xml │ │ ├── layout_route_item.xml │ │ ├── layout_scanner.xml │ │ ├── layout_settings_activity.xml │ │ ├── layout_stun.xml │ │ ├── layout_tools.xml │ │ ├── layout_traffic.xml │ │ ├── layout_traffic_item.xml │ │ └── layout_traffic_list.xml │ │ ├── menu │ │ ├── add_group_menu.xml │ │ ├── add_profile_menu.xml │ │ ├── add_route_menu.xml │ │ ├── app_list_menu.xml │ │ ├── group_action_menu.xml │ │ ├── import_asset_menu.xml │ │ ├── logcat_menu.xml │ │ ├── main_drawer_menu.xml │ │ ├── per_app_proxy_menu.xml │ │ ├── profile_apply_menu.xml │ │ ├── profile_config_menu.xml │ │ ├── profile_share_menu.xml │ │ ├── scanner_menu.xml │ │ ├── traffic_item_menu.xml │ │ └── traffic_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── raw-zh-rCN │ │ ├── insecure.txt │ │ ├── mkcp_no_seed.txt │ │ ├── not_encrypted.txt │ │ ├── shadowsocks_stream_cipher.txt │ │ └── shadowsocksr.txt │ │ ├── raw │ │ ├── insecure.txt │ │ ├── mkcp_no_seed.txt │ │ ├── not_encrypted.txt │ │ ├── shadowsocks_stream_cipher.txt │ │ └── shadowsocksr.txt │ │ ├── values-ar │ │ └── strings.xml │ │ ├── values-be │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-fa │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-in │ │ └── strings.xml │ │ ├── values-it │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-ko │ │ └── strings.xml │ │ ├── values-nb-rNO │ │ └── strings.xml │ │ ├── values-night │ │ └── colors.xml │ │ ├── values-nl │ │ └── strings.xml │ │ ├── values-pt-rBR │ │ └── strings.xml │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values-uk │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ ├── values │ │ ├── arrays.xml │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ic_launcher_background.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_descriptor.xml │ │ ├── balancer_preferences.xml │ │ ├── brook_preferences.xml │ │ ├── cache_paths.xml │ │ ├── config_preferences.xml │ │ ├── global_preferences.xml │ │ ├── group_preferences.xml │ │ ├── http_preferences.xml │ │ ├── hysteria_preferences.xml │ │ ├── naive_preferences.xml │ │ ├── name_preferences.xml │ │ ├── network_security_config.xml │ │ ├── pingtunnel_preferences.xml │ │ ├── relaybaton_preferences.xml │ │ ├── route_preferences.xml │ │ ├── shadowsocks_preferences.xml │ │ ├── shadowsocksr_preferences.xml │ │ ├── shortcuts.xml │ │ ├── socks_preferences.xml │ │ ├── ssh_preferences.xml │ │ ├── standard_v2ray_preferences.xml │ │ ├── tasker_preferences.xml │ │ ├── trojan_go_preferences.xml │ │ ├── trojan_preferences.xml │ │ └── wireguard_preferences.xml │ └── test │ └── java │ └── io │ └── nekohasekai │ └── sagernet │ ├── ExampleUnitTest.kt │ ├── fmt │ └── v2ray │ │ └── TestParseV2Ray.kt │ └── ktx │ └── UUIDsKtTest.kt ├── bin ├── build.sh ├── fdroid │ ├── build.sh │ ├── install_golang.sh │ ├── prebuild.sh │ ├── prebuild_plugin_golang.sh │ └── prebuild_plugin_naive.sh ├── init │ ├── action │ │ ├── library.sh │ │ └── naive.sh │ └── env.sh ├── lib │ ├── core.sh │ └── core │ │ ├── build.sh │ │ └── init.sh ├── lint.sh ├── plugin │ ├── brook.sh │ ├── brook │ │ ├── arm64-v8a.sh │ │ ├── armeabi-v7a.sh │ │ ├── build.sh │ │ ├── end.sh │ │ ├── init.sh │ │ ├── x86.sh │ │ └── x86_64.sh │ ├── hysteria.sh │ ├── hysteria │ │ ├── arm64-v8a.sh │ │ ├── armeabi-v7a.sh │ │ ├── build.sh │ │ ├── end.sh │ │ ├── init.sh │ │ ├── x86.sh │ │ └── x86_64.sh │ ├── naive.sh │ ├── naive │ │ ├── arm64-v8a.sh │ │ ├── armeabi-v7a.sh │ │ ├── build.sh │ │ ├── end.sh │ │ ├── init.sh │ │ ├── x86.sh │ │ └── x86_64.sh │ ├── pingtunnel.sh │ ├── pingtunnel │ │ ├── arm64-v8a.sh │ │ ├── armeabi-v7a.sh │ │ ├── build.sh │ │ ├── end.sh │ │ ├── init.sh │ │ ├── x86.sh │ │ └── x86_64.sh │ ├── relaybaton.sh │ ├── relaybaton │ │ ├── arm64-v8a.sh │ │ ├── armeabi-v7a.sh │ │ ├── build.sh │ │ ├── end.sh │ │ ├── init.sh │ │ ├── x86.sh │ │ └── x86_64.sh │ ├── trojan │ │ └── init.sh │ ├── trojan_go.sh │ └── trojan_go │ │ ├── arm64-v8a.sh │ │ ├── armeabi-v7a.sh │ │ ├── build.sh │ │ ├── end.sh │ │ ├── init.sh │ │ ├── x86.sh │ │ └── x86_64.sh └── update_core.sh ├── build.gradle.kts ├── buildSrc ├── build.gradle.kts └── src │ └── main │ └── kotlin │ ├── Helpers.kt │ ├── RootCAAsserts.kt │ └── V2RayAssets.kt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── include │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ ├── com.wireguard │ │ └── crypto │ │ │ ├── Curve25519.java │ │ │ ├── Ed25519.java │ │ │ ├── Key.java │ │ │ ├── KeyFormatException.java │ │ │ └── KeyPair.java │ │ └── java │ │ └── nio │ │ ├── charset │ │ └── StandardCharsets.java │ │ └── file │ │ └── Path.java ├── proto-stub │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── AndroidManifest.xml ├── proto │ └── build.gradle.kts └── stub │ ├── build.gradle.kts │ └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ ├── android │ └── net │ │ └── NetworkUtils.java │ └── sun │ └── misc │ └── Unsafe.java ├── lint.xml ├── metadata └── en-US │ ├── description.txt │ ├── images │ └── phoneScreenshots │ │ ├── 0.jpg │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── 5.jpg │ │ └── 6.jpg │ ├── name.txt │ └── summary.txt ├── plugin ├── api │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── io │ │ └── nekohasekai │ │ └── sagernet │ │ └── plugin │ │ ├── NativePluginProvider.kt │ │ ├── PathProvider.kt │ │ └── PluginContract.kt ├── brook │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ └── plugin │ │ │ └── brook │ │ │ └── BinaryProvider.kt │ │ └── res │ │ ├── drawable │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ └── ic_launcher_background.xml ├── hysteria │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ └── plugin │ │ │ └── hysteria │ │ │ └── BinaryProvider.kt │ │ └── res │ │ ├── drawable │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ └── ic_launcher_background.xml ├── naive │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ └── plugin │ │ │ └── naive │ │ │ └── BinaryProvider.kt │ │ ├── jni │ │ └── BUILD.gn │ │ └── res │ │ ├── drawable │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ └── ic_launcher_background.xml ├── pingtunnel │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ └── plugin │ │ │ └── pingtunnel │ │ │ └── BinaryProvider.kt │ │ └── res │ │ ├── drawable │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ └── ic_launcher_background.xml ├── relaybaton │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ └── plugin │ │ │ └── relaybaton │ │ │ └── BinaryProvider.kt │ │ └── res │ │ ├── drawable │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ └── ic_launcher_background.xml ├── trojan-go │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ └── io │ │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ └── plugin │ │ │ └── trojan_go │ │ │ └── BinaryProvider.kt │ │ └── res │ │ ├── drawable │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ └── ic_launcher_background.xml └── trojan │ ├── build.gradle.kts │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── cpp │ └── CMakeLists.txt │ └── java │ └── io │ └── nekohasekai │ └── sagernet │ └── plugin │ └── trojan │ └── BinaryProvider.kt ├── release.keystore ├── repositories.gradle.kts ├── run ├── sager.properties └── settings.gradle.kts /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: sagernet 2 | liberapay: nekohasekai 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /.idea/caches 4 | /.idea/libraries 5 | /.idea/modules.xml 6 | /.idea/workspace.xml 7 | /.idea/navEditor.xml 8 | /.idea/gradle.xml 9 | /.idea/misc.xml 10 | /.idea/assetWizardSettings.xml 11 | .DS_Store 12 | build/ 13 | /captures 14 | .externalNativeBuild 15 | .cxx 16 | local.properties 17 | /app/libs/ 18 | /app/src/main/assets/v2ray/ 19 | /app/src/main/assets/mozilla_included.pem 20 | /app/src/main/assets/mozilla_included.pem.sha256sum 21 | /service_account_credentials.json 22 | jniLibs/ -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/copyright/sagernet.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/dictionaries/sekai.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | acra 5 | aead 6 | alpn 7 | blackhole 8 | conns 9 | conscrypt 10 | dokodemo 11 | downlink 12 | fakedns 13 | fdroid 14 | geoip 15 | geosite 16 | grpc 17 | gson 18 | gvisor 19 | libev 20 | libnaive 21 | libtrojan 22 | loyalsoldier 23 | naiveproxy 24 | nativeproxy 25 | naïve 26 | nekohasekai 27 | obfs 28 | pingtunnel 29 | proxychains 30 | quic 31 | relaybaton 32 | rprx 33 | sagernet 34 | shadowsocks 35 | shadowsocksr 36 | snackbar 37 | thiz 38 | tproxy 39 | transproxy 40 | uplink 41 | utls 42 | vless 43 | vmess 44 | websocket 45 | wireguard 46 | xray 47 | xtls 48 | 49 | 50 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | -------------------------------------------------------------------------------- /.idea/render.experimental.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | SagerNet was originally created in late 2021, by 2 | nekohasekai . 3 | 4 | Here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- 5 | people who have submitted patches, fixed bugs, added translations, and 6 | generally made SagerNet that much better: 7 | 8 | https://github.com/SagerNet/SagerNet/graphs/contributors 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2021 by nekohasekai 2 | 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | GNU General Public License for more details. 12 | 13 | You should have received a copy of the GNU General Public License 14 | along with this program. If not, see . -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -repackageclasses '' 2 | -allowaccessmodification 3 | 4 | -keep class io.nekohasekai.sagernet.** { *;} 5 | -keep class com.v2ray.core.app.observatory.** { *; } 6 | 7 | # ini4j 8 | -keep public class org.ini4j.spi.** { (); } 9 | 10 | # SnakeYaml 11 | -keep class org.yaml.snakeyaml.** { *; } 12 | 13 | # IDK Why 14 | -keep class cn.hutool.core.convert.** { *; } 15 | 16 | -dontobfuscate 17 | -keepattributes SourceFile 18 | 19 | -dontwarn java.beans.BeanInfo 20 | -dontwarn java.beans.FeatureDescriptor 21 | -dontwarn java.beans.IntrospectionException 22 | -dontwarn java.beans.Introspector 23 | -dontwarn java.beans.PropertyDescriptor 24 | -dontwarn java.beans.Transient 25 | -dontwarn java.beans.VetoableChangeListener 26 | -dontwarn java.beans.VetoableChangeSupport 27 | -dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl 28 | -dontwarn org.bouncycastle.jce.provider.BouncyCastleProvider 29 | -dontwarn org.bouncycastle.jsse.BCSSLParameters 30 | -dontwarn org.bouncycastle.jsse.BCSSLSocket 31 | -dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider 32 | -dontwarn org.openjsse.javax.net.ssl.SSLParameters 33 | -dontwarn org.openjsse.javax.net.ssl.SSLSocket 34 | -dontwarn org.openjsse.net.ssl.OpenJSSE 35 | -dontwarn com.android.org.conscrypt.SSLParametersImpl -------------------------------------------------------------------------------- /app/src/androidTest/java/io/nekohasekai/sagernet/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("io.nekohasekai.sagernet", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/AppStatsList.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | parcelable AppStatsList; 4 | -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/ISagerNetService.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | import io.nekohasekai.sagernet.aidl.ISagerNetServiceCallback; 4 | 5 | interface ISagerNetService { 6 | int getState(); 7 | String getProfileName(); 8 | 9 | void registerCallback(in ISagerNetServiceCallback cb); 10 | void startListeningForBandwidth(in ISagerNetServiceCallback cb, long timeout); 11 | oneway void stopListeningForBandwidth(in ISagerNetServiceCallback cb); 12 | void startListeningForStats(in ISagerNetServiceCallback cb, long timeout); 13 | oneway void stopListeningForStats(in ISagerNetServiceCallback cb); 14 | oneway void unregisterCallback(in ISagerNetServiceCallback cb); 15 | oneway void protect(int fd); 16 | int urlTest(); 17 | oneway void resetTrafficStats(); 18 | boolean getTrafficStatsEnabled(); 19 | oneway void updateSystemRoots(boolean useSystem); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/ISagerNetServiceCallback.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | import io.nekohasekai.sagernet.aidl.TrafficStats; 4 | import io.nekohasekai.sagernet.aidl.AppStatsList; 5 | 6 | oneway interface ISagerNetServiceCallback { 7 | void stateChanged(int state, String profileName, String msg); 8 | void trafficUpdated(long profileId, in TrafficStats stats, boolean isCurrent); 9 | void statsUpdated(in AppStatsList statsList); 10 | void observatoryResultsUpdated(long groupId); 11 | // Traffic data has persisted to database, listener should refetch their data from database 12 | void profilePersisted(long profileId); 13 | void missingPlugin(String profileName, String pluginName); 14 | void routeAlert(int type, String routeName); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/TrafficStats.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | parcelable TrafficStats; 4 | -------------------------------------------------------------------------------- /app/src/main/assets/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2021 by nekohasekai 2 | 3 | 4 | This program is free software: you can 5 | redistribute it and/or modify it under 6 | the terms of the GNU General Public License 7 | as published by the Free Software Foundation, 8 | either version 3 of the License, 9 | or (at your option) any later version. 10 | 11 | This program is distributed in the hope 12 | that it will be useful, but WITHOUT ANY WARRANTY; 13 | without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | See the GNU General Public License for more details. 16 | 17 | You should have received a copy of the 18 | GNU General Public License along with this program. 19 | If not, see . -------------------------------------------------------------------------------- /app/src/main/assets/analysis.txt: -------------------------------------------------------------------------------- 1 | domain:appcenter.ms 2 | domain:app-measurement.com 3 | domain:firebase.io 4 | domain:crashlytics.com 5 | domain:google-analytics.com -------------------------------------------------------------------------------- /app/src/main/assets/terminal.properties: -------------------------------------------------------------------------------- 1 | # https://github.com/chriskempson/base16-xresources/blob/master/base16-google.light.256.xresources 2 | # Base16 Google 3 | # Scheme: Seth Wright (http://sethawright.com) 4 | foreground=#373b41 5 | background=#ffffff 6 | cursor=#373b41 7 | 8 | color0=#1d1f21 9 | color1=#CC342B 10 | color2=#198844 11 | color3=#FBA922 12 | color4=#3971ED 13 | color5=#A36AC7 14 | color6=#3971ED 15 | color7=#c5c8c6 16 | color8=#969896 17 | color9=#CC342B 18 | color10=#198844 19 | color11=#FBA922 20 | color12=#3971ED 21 | color13=#A36AC7 22 | color14=#3971ED 23 | color15=#ffffff 24 | 25 | color16=#F96A38 26 | color17=#3971ED 27 | color18=#282a2e 28 | color19=#373b41 29 | color20=#b4b7b4 30 | color21=#e0e0e0 31 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekohasekai/SagerNet/805c94c883bf5889808aaa28a3cd5c7e7bd58d58/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | For changelog, please check messages in the telegram update channel ( https://t.me/SagerNet ). -------------------------------------------------------------------------------- /app/src/main/play/release-notes/zh-CN/default.txt: -------------------------------------------------------------------------------- 1 | 由于字数限制, 请至 Telegram 更新频道 https://t.me/SagerNet 查看日志. -------------------------------------------------------------------------------- /app/src/main/res/color/chip_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/color/chip_ripple_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/color/chip_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/color/navigation_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/navigation_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_arrow_back_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_construction_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_delete_sweep_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_flight_takeoff_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_public_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_save_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_send_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_translate_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_widgets_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_wifi_lock_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_wrap_text_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_delete.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_description.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_dns.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_done.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_lock.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_lock_open.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_note_add.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_settings.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_app_shortcut_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_av_playlist_add.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_add_road_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 19 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_airplanemode_active_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_bug_report_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_camera_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_card_giftcard_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_cast_connected_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_center_focus_weak_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_color_lens_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_compare_arrows_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_domain_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_download_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_emoji_emotions_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_fast_forward_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_flip_camera_android_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_format_align_left_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_grid_3x3_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_home_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_http_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_https_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_import_contacts_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_info_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_layers_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_legend_toggle_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_link_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_local_bar_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_lock_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_low_priority_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_manage_search_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_more_vert_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_multiline_chart_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_multiple_stop_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_nat_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_nfc_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_no_encryption_gmailerrorred_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_person_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_push_pin_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_rule_folder_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_running_with_errors_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_sanitizer_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_security_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_shutter_speed_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_speed_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_stream_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 19 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_texture_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_timelapse_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_transform_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_transgender_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_update_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_view_list_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_vpn_key_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_warning_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_wb_sunny_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_communication_phonelink_ring.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_device_data_usage.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_device_developer_mode.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_cloud_queue.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_file_upload.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_hardware_router.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_camera_alt.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_edit.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_looks_6.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_photo.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_maps_360.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_maps_directions.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_maps_directions_boat.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigation_apps.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigation_close.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigation_menu.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notification_enhanced_encryption.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qu_camera_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qu_shadowsocks_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qu_shadowsocks_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_active.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_busy.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_connected.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_idle.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_stopping.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_social_share.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/terminal_scroll_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/font/jetbrains_mono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekohasekai/SagerNet/805c94c883bf5889808aaa28a3cd5c7e7bd58d58/app/src/main/res/font/jetbrains_mono.ttf -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_add_entity.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 14 | 15 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_appbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_config_settings.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_debug.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 |