From fbdafcd0b01fe208a0bcc2f84f2b892edec6adfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 21 May 2021 13:12:13 +0800 Subject: [PATCH] Refine project --- .github/workflows/debug.yml | 72 ++-- .github/workflows/release.yml | 44 +-- .github/workflows/release_naive.yml | 34 +- .github/workflows/release_pingtunnel.yml | 22 +- .github/workflows/release_relaybaton.yml | 22 +- .github/workflows/release_trojan_go.yml | 22 +- .github/workflows/release_xtls.yml | 22 +- .gitmodules | 62 ++-- .idea/dictionaries/sekai.xml | 1 + .idea/gradle.xml | 34 +- .idea/misc.xml | 7 + .idea/runConfigurations.xml | 10 - .idea/vcs.xml | 32 +- app/build.gradle | 230 ------------ app/build.gradle.kts | 73 ++++ bin/init/action/shadowsocks.sh | 4 +- bin/lib/core.sh | 9 + bin/lib/shadowsocks.sh | 9 + bin/lib/shadowsocksr.sh | 9 + bin/lib/v2ray.sh | 4 + bin/{libs => lib}/v2ray/build.sh | 2 +- bin/{libs => lib}/v2ray/init.sh | 5 +- bin/libs/core.sh | 9 - bin/libs/shadowsocks.sh | 9 - bin/libs/shadowsocksr.sh | 9 - bin/libs/trojan_go.sh | 34 -- bin/libs/v2ray.sh | 4 - bin/{libs => plugin}/naive.sh | 9 +- bin/{libs => plugin}/naive/arm64-v8a.sh | 2 +- bin/{libs => plugin}/naive/armeabi-v7a.sh | 2 +- bin/{libs => plugin}/naive/build.sh | 9 +- bin/{libs => plugin}/naive/x86.sh | 2 +- bin/{libs => plugin}/naive/x86_64.sh | 2 +- bin/{libs => plugin}/pingtunnel.sh | 9 +- bin/{libs => plugin}/relaybaton.sh | 10 +- bin/plugin/trojan_go.sh | 57 +++ bin/{libs => plugin}/xtls.sh | 10 +- build.gradle | 37 -- build.gradle.kts | 42 +++ buildSrc/build.gradle.kts | 16 + buildSrc/src/main/kotlin/Helpers.kt | 346 ++++++++++++++++++ core/build.gradle | 19 - .../colorpicker}/.gitignore | 0 .../colorpicker}/build.gradle | 4 +- .../colorpicker}/src/main/AndroidManifest.xml | 0 .../colorpicker/ColorPickerDialog.java | 7 +- .../ColorPickerDialogFragment.java | 1 + .../colorpicker/ColorPickerPaletteFlex.java | 0 .../colorpicker/ColorPickerSwatch.java | 0 .../colorpicker/ColorStateDrawable.java | 0 .../colorpicker/HsvColorComparator.java | 0 .../colorpicker/OnColorSelectedListener.java | 0 .../res/drawable/color_picker_check_base.xml | 0 .../res/drawable/color_picker_check_tick.xml | 0 .../res/drawable/color_picker_checkmark.xml | 0 .../main/res/drawable/color_picker_swatch.xml | 0 .../main/res/layout/color_picker_dialog.xml | 0 .../main/res/layout/color_picker_swatch.xml | 0 .../src/main/res/values-af/strings.xml | 0 .../src/main/res/values-am/strings.xml | 0 .../src/main/res/values-ar/strings.xml | 0 .../src/main/res/values-az/strings.xml | 0 .../src/main/res/values-b+sr+Latn/strings.xml | 0 .../src/main/res/values-be/strings.xml | 0 .../src/main/res/values-bg/strings.xml | 0 .../src/main/res/values-bn/strings.xml | 0 .../src/main/res/values-bs/strings.xml | 0 .../src/main/res/values-ca/strings.xml | 0 .../src/main/res/values-cs/strings.xml | 0 .../src/main/res/values-da/strings.xml | 0 .../src/main/res/values-de/strings.xml | 0 .../src/main/res/values-el/strings.xml | 0 .../src/main/res/values-en-rAU/strings.xml | 0 .../src/main/res/values-en-rGB/strings.xml | 0 .../src/main/res/values-en-rIN/strings.xml | 0 .../src/main/res/values-es-rUS/strings.xml | 0 .../src/main/res/values-es/strings.xml | 0 .../src/main/res/values-et/strings.xml | 0 .../src/main/res/values-eu/strings.xml | 0 .../src/main/res/values-fa/strings.xml | 0 .../src/main/res/values-fi/strings.xml | 0 .../src/main/res/values-fr-rCA/strings.xml | 0 .../src/main/res/values-fr/strings.xml | 0 .../src/main/res/values-gl/strings.xml | 0 .../src/main/res/values-gu/strings.xml | 0 .../src/main/res/values-hi/strings.xml | 0 .../src/main/res/values-hr/strings.xml | 0 .../src/main/res/values-hu/strings.xml | 0 .../src/main/res/values-hy/strings.xml | 0 .../src/main/res/values-in/strings.xml | 0 .../src/main/res/values-is/strings.xml | 0 .../src/main/res/values-it/strings.xml | 0 .../src/main/res/values-iw/strings.xml | 0 .../src/main/res/values-ja/strings.xml | 0 .../src/main/res/values-ka/strings.xml | 0 .../src/main/res/values-kk/strings.xml | 0 .../src/main/res/values-km/strings.xml | 0 .../src/main/res/values-kn/strings.xml | 0 .../src/main/res/values-ko/strings.xml | 0 .../src/main/res/values-ky/strings.xml | 0 .../src/main/res/values-lo/strings.xml | 0 .../src/main/res/values-lt/strings.xml | 0 .../src/main/res/values-lv/strings.xml | 0 .../src/main/res/values-mk/strings.xml | 0 .../src/main/res/values-ml/strings.xml | 0 .../src/main/res/values-mn/strings.xml | 0 .../src/main/res/values-mr/strings.xml | 0 .../src/main/res/values-ms/strings.xml | 0 .../src/main/res/values-my/strings.xml | 0 .../src/main/res/values-nb/strings.xml | 0 .../src/main/res/values-ne/strings.xml | 0 .../src/main/res/values-nl/strings.xml | 0 .../src/main/res/values-pa/strings.xml | 0 .../src/main/res/values-pl/strings.xml | 0 .../src/main/res/values-pt-rPT/strings.xml | 0 .../src/main/res/values-pt/strings.xml | 0 .../src/main/res/values-ro/strings.xml | 0 .../src/main/res/values-ru/strings.xml | 0 .../src/main/res/values-si/strings.xml | 0 .../src/main/res/values-sk/strings.xml | 0 .../src/main/res/values-sl/strings.xml | 0 .../src/main/res/values-sq/strings.xml | 0 .../src/main/res/values-sr/strings.xml | 0 .../src/main/res/values-sv/strings.xml | 0 .../src/main/res/values-sw/strings.xml | 0 .../src/main/res/values-ta/strings.xml | 0 .../src/main/res/values-te/strings.xml | 0 .../src/main/res/values-th/strings.xml | 0 .../src/main/res/values-tl/strings.xml | 0 .../src/main/res/values-tr/strings.xml | 0 .../src/main/res/values-uk/strings.xml | 0 .../src/main/res/values-ur/strings.xml | 0 .../src/main/res/values-uz/strings.xml | 0 .../src/main/res/values-vi/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 0 .../src/main/res/values-zh-rHK/strings.xml | 0 .../src/main/res/values-zh-rTW/strings.xml | 0 .../src/main/res/values-zu/strings.xml | 0 .../src/main/res/values/attrs.xml | 0 .../src/main/res/values/colors.xml | 0 .../src/main/res/values/dimens.xml | 0 .../src/main/res/values/strings.xml | 0 .../src/main/res/values/styles.xml | 0 {flexbox => external/flexbox}/.gitignore | 0 {flexbox => external/flexbox}/build.gradle | 2 +- .../flexbox}/proguard-rules.txt | 0 .../src/androidTest/AndroidManifest.xml | 0 .../android/flexbox/FakeFlexContainer.kt | 0 .../android/flexbox/FlexboxHelperTest.kt | 0 .../flexbox/test/ConfigChangeActivity.kt | 0 .../flexbox/test/FlexboxAndroidTest.kt | 0 .../FlexboxLayoutManagerConfigChangeTest.kt | 0 .../flexbox/test/FlexboxLayoutManagerTest.kt | 0 .../flexbox/test/FlexboxTestActivity.kt | 0 .../flexbox/test/IsEqualAllowingError.kt | 0 .../flexbox/test/NestedInnerAdapter.kt | 0 .../flexbox/test/NestedOuterAdapter.kt | 0 .../android/flexbox/test/TestAdapter.kt | 0 .../flexbox/test/TestAdapterMultiViewTypes.kt | 0 .../google/android/flexbox/test/TestUtil.kt | 0 .../android/flexbox/test/TestViewHolder.kt | 0 .../src/androidTest/res/drawable/divider.xml | 0 .../res/drawable/divider_thick.xml | 0 .../res/drawable/flex_item_background.xml | 0 .../layout/activity_align_content_test.xml | 0 ...activity_align_content_test_overflowed.xml | 0 .../activity_align_items_baseline_test.xml | 0 ...vity_align_items_baseline_wrap_content.xml | 0 ...tivity_align_items_parent_padding_test.xml | 0 .../res/layout/activity_align_items_test.xml | 0 .../activity_align_self_stretch_test.xml | 0 .../activity_child_needs_remeasure_column.xml | 0 .../activity_child_needs_remeasure_row.xml | 0 ...lumn_align_items_center_margin_oneside.xml | 0 ..._row_align_items_center_margin_oneside.xml | 0 ...activity_divider_test_direction_column.xml | 0 .../activity_divider_test_direction_row.xml | 0 .../res/layout/activity_empty_children.xml | 0 ...ivity_first_item_large_horizontal_test.xml | 0 ...ctivity_first_item_large_vertical_test.xml | 0 ...first_view_gone_first_line_single_item.xml | 0 ...rst_view_gone_layout_grow_set_for_rest.xml | 0 ...t_view_gone_layout_shrink_set_for_rest.xml | 0 .../activity_flex_basis_percent_test.xml | 0 .../res/layout/activity_flex_grow_test.xml | 0 .../activity_flex_item_match_parent.xml | 0 ...lex_item_match_parent_direction_column.xml | 0 .../res/layout/activity_flex_wrap_test.xml | 0 .../layout/activity_flexbox_wrap_content.xml | 0 ...xbox_wrapped_with_horizontalscrollview.xml | 0 ...tivity_flexbox_wrapped_with_scrollview.xml | 0 .../layout/activity_justify_content_test.xml | 0 .../activity_justify_content_with_gone.xml | 0 ...ty_justify_content_with_parent_padding.xml | 0 .../res/layout/activity_maxheight_test.xml | 0 .../activity_maxheight_upper_bound_test.xml | 0 .../res/layout/activity_maxwidth_test.xml | 0 .../activity_maxwidth_upper_bound_test.xml | 0 .../activity_minheight_lower_bound_test.xml | 0 .../res/layout/activity_minheight_test.xml | 0 .../activity_minwidth_lower_bound_test.xml | 0 .../res/layout/activity_minwidth_test.xml | 0 .../res/layout/activity_order_test.xml | 0 .../res/layout/activity_simple.xml | 0 .../res/layout/activity_stretch_test.xml | 0 .../layout/activity_views_visibility_gone.xml | 0 .../activity_views_visibility_invisible.xml | 0 ...ty_gone_first_item_in_flex_line_column.xml | 0 ...ility_gone_first_item_in_flex_line_row.xml | 0 .../res/layout/activity_wrap_before_test.xml | 0 ...vity_wrap_child_margin_horizontal_test.xml | 0 ...tivity_wrap_child_margin_vertical_test.xml | 0 ...ontent_child_bottom_margin_column_grow.xml | 0 ...tent_child_bottom_margin_column_shrink.xml | 0 ...p_content_child_bottom_margin_row_grow.xml | 0 ...content_child_bottom_margin_row_shrink.xml | 0 ...ty_wrap_parent_padding_horizontal_test.xml | 0 ...vity_wrap_parent_padding_vertical_test.xml | 0 ...activity_zero_height_positive_flexgrow.xml | 0 .../activity_zero_width_positive_flexgrow.xml | 0 .../androidTest/res/layout/recyclerview.xml | 0 .../res/layout/recyclerview_reverse.xml | 0 .../res/layout/recyclerview_viewholder.xml | 0 .../layout/viewholder_inner_recyclerview.xml | 0 ...r_inner_recyclerview_wrap_horizontally.xml | 0 .../res/layout/viewholder_textview.xml | 0 .../res/layout/wrapped_recyclerview.xml | 0 .../wrapped_recyclerview_scroll_vertical.xml | 0 .../src/androidTest/res/values/strings.xml | 0 .../flexbox}/src/main/AndroidManifest.xml | 0 .../google/android/flexbox/AlignContent.java | 0 .../google/android/flexbox/AlignItems.java | 0 .../com/google/android/flexbox/AlignSelf.java | 0 .../google/android/flexbox/FlexContainer.java | 0 .../google/android/flexbox/FlexDirection.java | 0 .../com/google/android/flexbox/FlexItem.java | 0 .../com/google/android/flexbox/FlexLine.java | 0 .../com/google/android/flexbox/FlexWrap.java | 0 .../google/android/flexbox/FlexboxHelper.java | 0 .../flexbox/FlexboxItemDecoration.java | 0 .../google/android/flexbox/FlexboxLayout.java | 0 .../android/flexbox/FlexboxLayoutManager.java | 0 .../android/flexbox/JustifyContent.java | 0 .../flexbox}/src/main/res/values/attrs.xml | 0 .../preferencex-colorpicker}/.gitignore | 0 .../preferencex-colorpicker}/build.gradle | 7 +- .../src/main/AndroidManifest.xml | 0 .../colorpickerpreference_pref_swatch.xml | 0 .../layout/preference_widget_color_swatch.xml | 0 .../src/main/res/values/dimens.xml | 0 .../preferencex-ringtone}/.gitignore | 0 .../preferencex-ringtone}/build.gradle | 4 +- .../preferencex-ringtone}/proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../preferencex/RingtonePreference.java | 0 ...ingtonePreferenceDialogFragmentCompat.java | 0 .../src/main/res/drawable/ringtone_ic_add.xml | 0 .../src/main/res/layout/add_ringtone_item.xml | 0 .../src/main/res/values-af/strings.xml | 0 .../src/main/res/values-am/strings.xml | 0 .../src/main/res/values-ar/strings.xml | 0 .../src/main/res/values-az/strings.xml | 0 .../src/main/res/values-b+sr+Latn/strings.xml | 0 .../src/main/res/values-be/strings.xml | 0 .../src/main/res/values-bg/strings.xml | 0 .../src/main/res/values-bn/strings.xml | 0 .../src/main/res/values-bs/strings.xml | 0 .../src/main/res/values-ca/strings.xml | 0 .../src/main/res/values-cs/strings.xml | 0 .../src/main/res/values-da/strings.xml | 0 .../src/main/res/values-de/strings.xml | 0 .../src/main/res/values-el/strings.xml | 0 .../src/main/res/values-en-rAU/strings.xml | 0 .../src/main/res/values-en-rGB/strings.xml | 0 .../src/main/res/values-en-rIN/strings.xml | 0 .../src/main/res/values-es-rUS/strings.xml | 0 .../src/main/res/values-es/strings.xml | 0 .../src/main/res/values-et/strings.xml | 0 .../src/main/res/values-eu/strings.xml | 0 .../src/main/res/values-fa/strings.xml | 0 .../src/main/res/values-fi/strings.xml | 0 .../src/main/res/values-fr-rCA/strings.xml | 0 .../src/main/res/values-fr/strings.xml | 0 .../src/main/res/values-gl/strings.xml | 0 .../src/main/res/values-gu/strings.xml | 0 .../src/main/res/values-hi/strings.xml | 0 .../src/main/res/values-hr/strings.xml | 0 .../src/main/res/values-hu/strings.xml | 0 .../src/main/res/values-hy/strings.xml | 0 .../src/main/res/values-in/strings.xml | 0 .../src/main/res/values-is/strings.xml | 0 .../src/main/res/values-it/strings.xml | 0 .../src/main/res/values-iw/strings.xml | 0 .../src/main/res/values-ja/strings.xml | 0 .../src/main/res/values-ka/strings.xml | 0 .../src/main/res/values-kk/strings.xml | 0 .../src/main/res/values-km/strings.xml | 0 .../src/main/res/values-kn/strings.xml | 0 .../src/main/res/values-ko/strings.xml | 0 .../src/main/res/values-ky/strings.xml | 0 .../src/main/res/values-lo/strings.xml | 0 .../src/main/res/values-lt/strings.xml | 0 .../src/main/res/values-lv/strings.xml | 0 .../src/main/res/values-mk/strings.xml | 0 .../src/main/res/values-ml/strings.xml | 0 .../src/main/res/values-mn/strings.xml | 0 .../src/main/res/values-mr/strings.xml | 0 .../src/main/res/values-ms/strings.xml | 0 .../src/main/res/values-my/strings.xml | 0 .../src/main/res/values-nb/strings.xml | 0 .../src/main/res/values-ne/strings.xml | 0 .../src/main/res/values-nl/strings.xml | 0 .../src/main/res/values-pa/strings.xml | 0 .../src/main/res/values-pl/strings.xml | 0 .../src/main/res/values-pt-rBR/strings.xml | 0 .../src/main/res/values-pt-rPT/strings.xml | 0 .../src/main/res/values-pt/strings.xml | 0 .../src/main/res/values-ro/strings.xml | 0 .../src/main/res/values-ru/strings.xml | 0 .../src/main/res/values-si/strings.xml | 0 .../src/main/res/values-sk/strings.xml | 0 .../src/main/res/values-sl/strings.xml | 0 .../src/main/res/values-sq/strings.xml | 0 .../src/main/res/values-sr/strings.xml | 0 .../src/main/res/values-sv/strings.xml | 0 .../src/main/res/values-sw/strings.xml | 0 .../src/main/res/values-ta/strings.xml | 0 .../src/main/res/values-te/strings.xml | 0 .../src/main/res/values-th/strings.xml | 0 .../src/main/res/values-tl/strings.xml | 0 .../src/main/res/values-tr/strings.xml | 0 .../src/main/res/values-uk/strings.xml | 0 .../src/main/res/values-ur/strings.xml | 0 .../src/main/res/values-uz/strings.xml | 0 .../src/main/res/values-vi/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 0 .../src/main/res/values-zh-rHK/strings.xml | 0 .../src/main/res/values-zh-rTW/strings.xml | 0 .../src/main/res/values-zu/strings.xml | 0 .../src/main/res/values/attrs.xml | 0 .../src/main/res/values/strings.xml | 0 .../preferencex-simplemenu}/.gitignore | 0 .../preferencex-simplemenu}/build.gradle | 0 .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../preferencex/SimpleMenuPreference.java | 0 .../preferencex/animation/PropertyHolder.java | 0 .../preferencex/animation/RectEvaluator.java | 0 .../animation/SimpleMenuAnimation.java | 0 .../animation/SimpleMenuBoundsProperty.java | 0 .../drawable/FixedBoundsDrawable.java | 0 .../widget/SimpleMenuListAdapter.java | 0 .../widget/SimpleMenuListItemHolder.java | 0 .../widget/SimpleMenuPopupWindow.java | 0 .../res/anim/abc_shrink_fade_out_center.xml | 0 .../res/drawable/simple_menu_background.xml | 0 .../drawable/simple_menu_item_background.xml | 0 .../res/layout-v21/preference_simplemenu.xml | 0 .../main/res/layout/preference_simplemenu.xml | 0 .../src/main/res/layout/simple_menu_item.xml | 0 .../src/main/res/layout/simple_menu_list.xml | 0 .../src/main/res/values-sw600dp/dimens.xml | 0 .../src/main/res/values/attrs.xml | 0 .../src/main/res/values/colors.xml | 0 .../src/main/res/values/dimens.xml | 0 .../src/main/res/values/styles.xml | 0 .../preferencex}/.gitignore | 0 .../preferencex}/build.gradle | 0 .../preferencex}/proguard-rules.pro | 0 .../preferencex}/src/main/AndroidManifest.xml | 0 .../preference/PreferenceManagerFix.java | 0 .../AutoSummaryEditTextPreference.java | 0 .../preferencex/EditTextPreference.java | 0 .../PreferenceActivityResultListener.java | 0 .../preferencex/PreferenceCategory.java | 0 .../preferencex/PreferenceFragmentCompat.java | 0 .../PreferenceFragmentCompatMasterSwitch.java | 0 .../preferencex/SwitchPreferenceCompat.java | 0 .../layout/preference_list_master_switch.xml | 0 .../res/layout/preference_material_ext.xml | 0 .../src/main/res/values/attrs.xml | 0 .../preferencex}/src/main/res/values/ids.xml | 0 .../src/main/res/values/styles.xml | 0 library/core/build.gradle.kts | 5 + .../core}/src/main/AndroidManifest.xml | 0 .../core}/src/main/jni/Android.mk | 0 .../core}/src/main/jni/Application.mk | 0 {core => library/core}/src/main/jni/badvpn | 0 .../src/main/jni/build-shared-executable.mk | 0 .../src/main/jni/include/proxychains/config.h | 0 .../core}/src/main/jni/libancillary | 0 .../core}/src/main/jni/proxychains | 0 .../shadowsocks}/build.gradle.kts | 11 +- .../shadowsocks}/src/main/AndroidManifest.xml | 0 .../src/main/rust/linker-wrapper.py | 0 .../src/main/rust/shadowsocks-rust | 0 .../shadowsocksr}/.gitignore | 0 library/shadowsocksr/build.gradle.kts | 5 + .../src/main/AndroidManifest.xml | 0 .../shadowsocksr}/src/main/jni/Android.mk | 0 .../shadowsocksr}/src/main/jni/Application.mk | 0 .../src/main/jni/build-shared-executable.mk | 0 .../src/main/jni/include/libev/config.h | 0 .../jni/include/shadowsocks-libev/config.h | 0 .../src/main/jni/include/sodium/version.h | 0 .../shadowsocksr}/src/main/jni/libancillary | 0 .../shadowsocksr}/src/main/jni/libsodium | 0 .../shadowsocksr}/src/main/jni/mbedtls | 0 .../src/main/jni/patch/pcre/pcre_chartables.c | 0 .../shadowsocksr}/src/main/jni/pcre | 0 .../shadowsocksr}/src/main/jni/re2 | 0 .../src/main/jni/shadowsocks-libev | 0 v2ray => library/v2ray | 0 naive-plugin/build.gradle | 100 ----- naive-plugin/src/main/jni/naiveproxy | 1 - plugin/api/build.gradle.kts | 7 + plugin/{ => api}/proguard-rules.pro | 0 plugin/{ => api}/src/main/AndroidManifest.xml | 0 .../sagernet/plugin/NativePluginProvider.kt | 47 +-- .../sagernet/plugin/PathProvider.kt | 39 +- .../sagernet/plugin/PluginContract.kt | 0 plugin/build.gradle | 20 - plugin/naive/build.gradle.kts | 5 + .../naive}/src/main/AndroidManifest.xml | 8 +- .../naive/src/main/ic_launcher-playstore.png | Bin 0 -> 14207 bytes .../sagernet/plugin/naive/BinaryProvider.kt | 0 .../naive}/src/main/jni/BUILD.gn | 0 plugin/naive/src/main/jni/naiveproxy | 1 + .../res/drawable/ic_launcher_foreground.xml | 25 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1720 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3685 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1160 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2325 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2371 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5334 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3726 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 8363 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5173 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 12120 bytes .../res/values/ic_launcher_background.xml | 4 + plugin/pingtunnel/build.gradle.kts | 5 + .../pingtunnel}/src/main/AndroidManifest.xml | 4 +- .../pingtunnel}/src/main/go/pingtunnel | 0 .../src/main/ic_launcher-playstore.png | Bin 0 -> 17384 bytes .../plugin/pingtunnel/BinaryProvider.kt | 0 .../res/drawable/ic_launcher_foreground.xml | 37 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1958 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4046 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1352 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2571 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2759 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5765 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4274 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 9073 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5917 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 12987 bytes .../res/values/ic_launcher_background.xml | 4 + plugin/relaybaton/build.gradle.kts | 5 + .../relaybaton}/src/main/AndroidManifest.xml | 4 +- .../relaybaton}/src/main/go/relaybaton | 0 .../src/main/ic_launcher-playstore.png | Bin 0 -> 24359 bytes .../plugin/relaybaton/BinaryProvider.kt | 0 .../res/drawable/ic_launcher_foreground.xml | 37 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2411 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4538 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1538 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3448 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6550 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 5345 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10389 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 7549 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 14918 bytes .../res/values/ic_launcher_background.xml | 4 + plugin/trojan-go/build.gradle.kts | 5 + .../trojan-go}/src/main/AndroidManifest.xml | 8 +- .../trojan-go}/src/main/go/trojan-go | 0 .../src/main/ic_launcher-playstore.png | Bin 0 -> 18001 bytes .../plugin/trojan_go/BinaryProvider.kt | 0 .../res/drawable/ic_launcher_foreground.xml | 35 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1995 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4054 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1335 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2526 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2733 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5869 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4354 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 9122 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 6031 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 13343 bytes .../res/values/ic_launcher_background.xml | 4 + plugin/xtls/build.gradle.kts | 5 + .../xtls}/src/main/AndroidManifest.xml | 2 + .../xtls}/src/main/go/Xray-core | 0 .../xtls/src/main/ic_launcher-playstore.png | Bin 0 -> 12949 bytes .../sagernet/plugin/xtls/BinaryProvider.kt | 0 .../res/drawable/ic_launcher_foreground.xml | 23 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1660 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3651 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1132 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2296 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2375 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5315 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3539 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 8089 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4967 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 11922 bytes .../res/values/ic_launcher_background.xml | 4 + pt-plugin/build.gradle | 103 ------ rb-plugin/build.gradle | 103 ------ repositories.gradle.kts | 11 + sager.properties | 17 +- settings.gradle | 20 - settings.gradle.kts | 20 + shadowsocksr/build.gradle | 29 -- trojan-go-plugin/build.gradle | 102 ------ xtls-plugin/build.gradle | 102 ------ 527 files changed, 1192 insertions(+), 1220 deletions(-) delete mode 100644 .idea/runConfigurations.xml delete mode 100644 app/build.gradle create mode 100644 app/build.gradle.kts create mode 100755 bin/lib/core.sh create mode 100755 bin/lib/shadowsocks.sh create mode 100755 bin/lib/shadowsocksr.sh create mode 100755 bin/lib/v2ray.sh rename bin/{libs => lib}/v2ray/build.sh (91%) rename bin/{libs => lib}/v2ray/init.sh (65%) delete mode 100755 bin/libs/core.sh delete mode 100755 bin/libs/shadowsocks.sh delete mode 100755 bin/libs/shadowsocksr.sh delete mode 100755 bin/libs/trojan_go.sh delete mode 100755 bin/libs/v2ray.sh rename bin/{libs => plugin}/naive.sh (87%) rename bin/{libs => plugin}/naive/arm64-v8a.sh (85%) rename bin/{libs => plugin}/naive/armeabi-v7a.sh (85%) rename bin/{libs => plugin}/naive/build.sh (56%) rename bin/{libs => plugin}/naive/x86.sh (85%) rename bin/{libs => plugin}/naive/x86_64.sh (85%) rename bin/{libs => plugin}/pingtunnel.sh (84%) rename bin/{libs => plugin}/relaybaton.sh (88%) create mode 100755 bin/plugin/trojan_go.sh rename bin/{libs => plugin}/xtls.sh (84%) delete mode 100644 build.gradle create mode 100644 build.gradle.kts create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/kotlin/Helpers.kt delete mode 100644 core/build.gradle rename {colorpicker => external/colorpicker}/.gitignore (100%) rename {colorpicker => external/colorpicker}/build.gradle (81%) rename {colorpicker => external/colorpicker}/src/main/AndroidManifest.xml (100%) rename {colorpicker => external/colorpicker}/src/main/java/com/takisoft/colorpicker/ColorPickerDialog.java (99%) rename {colorpicker => external/colorpicker}/src/main/java/com/takisoft/colorpicker/ColorPickerDialogFragment.java (99%) rename {colorpicker => external/colorpicker}/src/main/java/com/takisoft/colorpicker/ColorPickerPaletteFlex.java (100%) rename {colorpicker => external/colorpicker}/src/main/java/com/takisoft/colorpicker/ColorPickerSwatch.java (100%) rename {colorpicker => external/colorpicker}/src/main/java/com/takisoft/colorpicker/ColorStateDrawable.java (100%) rename {colorpicker => external/colorpicker}/src/main/java/com/takisoft/colorpicker/HsvColorComparator.java (100%) rename {colorpicker => external/colorpicker}/src/main/java/com/takisoft/colorpicker/OnColorSelectedListener.java (100%) rename {colorpicker => external/colorpicker}/src/main/res/drawable/color_picker_check_base.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/drawable/color_picker_check_tick.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/drawable/color_picker_checkmark.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/drawable/color_picker_swatch.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/layout/color_picker_dialog.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/layout/color_picker_swatch.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-af/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-am/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ar/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-az/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-b+sr+Latn/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-be/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-bg/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-bn/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-bs/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ca/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-cs/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-da/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-de/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-el/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-en-rAU/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-en-rGB/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-en-rIN/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-es-rUS/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-es/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-et/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-eu/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-fa/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-fi/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-fr-rCA/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-fr/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-gl/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-gu/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-hi/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-hr/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-hu/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-hy/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-in/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-is/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-it/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-iw/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ja/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ka/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-kk/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-km/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-kn/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ko/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ky/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-lo/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-lt/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-lv/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-mk/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ml/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-mn/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-mr/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ms/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-my/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-nb/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ne/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-nl/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-pa/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-pl/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-pt-rPT/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-pt/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ro/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ru/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-si/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-sk/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-sl/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-sq/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-sr/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-sv/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-sw/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ta/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-te/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-th/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-tl/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-tr/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-uk/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-ur/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-uz/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-vi/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-zh-rCN/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-zh-rHK/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-zh-rTW/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values-zu/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values/attrs.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values/colors.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values/dimens.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values/strings.xml (100%) rename {colorpicker => external/colorpicker}/src/main/res/values/styles.xml (100%) rename {flexbox => external/flexbox}/.gitignore (100%) rename {flexbox => external/flexbox}/build.gradle (96%) rename {flexbox => external/flexbox}/proguard-rules.txt (100%) rename {flexbox => external/flexbox}/src/androidTest/AndroidManifest.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/FakeFlexContainer.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/FlexboxHelperTest.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/ConfigChangeActivity.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/FlexboxAndroidTest.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerConfigChangeTest.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerTest.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/FlexboxTestActivity.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/IsEqualAllowingError.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/NestedInnerAdapter.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/NestedOuterAdapter.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/TestAdapter.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/TestAdapterMultiViewTypes.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/TestUtil.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/java/com/google/android/flexbox/test/TestViewHolder.kt (100%) rename {flexbox => external/flexbox}/src/androidTest/res/drawable/divider.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/drawable/divider_thick.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/drawable/flex_item_background.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_align_content_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_align_content_test_overflowed.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_align_items_baseline_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_align_items_baseline_wrap_content.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_align_items_parent_padding_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_align_items_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_align_self_stretch_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_child_needs_remeasure_column.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_child_needs_remeasure_row.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_direction_column_align_items_center_margin_oneside.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_direction_row_align_items_center_margin_oneside.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_divider_test_direction_column.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_divider_test_direction_row.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_empty_children.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_first_item_large_horizontal_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_first_item_large_vertical_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_first_view_gone_first_line_single_item.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_first_view_gone_layout_grow_set_for_rest.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_first_view_gone_layout_shrink_set_for_rest.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flex_basis_percent_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flex_grow_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flex_item_match_parent.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flex_item_match_parent_direction_column.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flex_wrap_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flexbox_wrap_content.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flexbox_wrapped_with_horizontalscrollview.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_flexbox_wrapped_with_scrollview.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_justify_content_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_justify_content_with_gone.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_justify_content_with_parent_padding.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_maxheight_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_maxheight_upper_bound_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_maxwidth_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_maxwidth_upper_bound_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_minheight_lower_bound_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_minheight_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_minwidth_lower_bound_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_minwidth_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_order_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_simple.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_stretch_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_views_visibility_gone.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_views_visibility_invisible.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_column.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_row.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_before_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_child_margin_horizontal_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_child_margin_vertical_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_grow.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_shrink.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_parent_padding_horizontal_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_wrap_parent_padding_vertical_test.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_zero_height_positive_flexgrow.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/activity_zero_width_positive_flexgrow.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/recyclerview.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/recyclerview_reverse.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/recyclerview_viewholder.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/viewholder_inner_recyclerview.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/viewholder_inner_recyclerview_wrap_horizontally.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/viewholder_textview.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/wrapped_recyclerview.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/layout/wrapped_recyclerview_scroll_vertical.xml (100%) rename {flexbox => external/flexbox}/src/androidTest/res/values/strings.xml (100%) rename {flexbox => external/flexbox}/src/main/AndroidManifest.xml (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/AlignContent.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/AlignItems.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/AlignSelf.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexContainer.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexDirection.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexItem.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexLine.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexWrap.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexboxHelper.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexboxItemDecoration.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexboxLayout.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/FlexboxLayoutManager.java (100%) rename {flexbox => external/flexbox}/src/main/java/com/google/android/flexbox/JustifyContent.java (100%) rename {flexbox => external/flexbox}/src/main/res/values/attrs.xml (100%) rename {preferencex-colorpicker => external/preferencex-colorpicker}/.gitignore (100%) rename {preferencex-colorpicker => external/preferencex-colorpicker}/build.gradle (71%) rename {preferencex-colorpicker => external/preferencex-colorpicker}/src/main/AndroidManifest.xml (100%) rename {preferencex-colorpicker => external/preferencex-colorpicker}/src/main/res/drawable/colorpickerpreference_pref_swatch.xml (100%) rename {preferencex-colorpicker => external/preferencex-colorpicker}/src/main/res/layout/preference_widget_color_swatch.xml (100%) rename {preferencex-colorpicker => external/preferencex-colorpicker}/src/main/res/values/dimens.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/.gitignore (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/build.gradle (80%) rename {preferencex-ringtone => external/preferencex-ringtone}/proguard-rules.pro (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/AndroidManifest.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/java/com/takisoft/preferencex/RingtonePreference.java (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/java/com/takisoft/preferencex/RingtonePreferenceDialogFragmentCompat.java (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/drawable/ringtone_ic_add.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/layout/add_ringtone_item.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-af/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-am/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ar/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-az/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-b+sr+Latn/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-be/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-bg/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-bn/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-bs/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ca/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-cs/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-da/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-de/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-el/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-en-rAU/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-en-rGB/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-en-rIN/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-es-rUS/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-es/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-et/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-eu/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-fa/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-fi/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-fr-rCA/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-fr/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-gl/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-gu/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-hi/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-hr/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-hu/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-hy/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-in/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-is/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-it/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-iw/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ja/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ka/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-kk/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-km/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-kn/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ko/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ky/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-lo/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-lt/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-lv/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-mk/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ml/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-mn/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-mr/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ms/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-my/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-nb/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ne/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-nl/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-pa/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-pl/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-pt-rBR/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-pt-rPT/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-pt/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ro/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ru/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-si/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-sk/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-sl/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-sq/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-sr/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-sv/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-sw/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ta/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-te/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-th/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-tl/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-tr/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-uk/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-ur/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-uz/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-vi/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-zh-rCN/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-zh-rHK/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-zh-rTW/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values-zu/strings.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values/attrs.xml (100%) rename {preferencex-ringtone => external/preferencex-ringtone}/src/main/res/values/strings.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/.gitignore (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/build.gradle (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/proguard-rules.pro (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/AndroidManifest.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/SimpleMenuPreference.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/animation/PropertyHolder.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/animation/RectEvaluator.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/animation/SimpleMenuAnimation.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/animation/SimpleMenuBoundsProperty.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/drawable/FixedBoundsDrawable.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListAdapter.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListItemHolder.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/java/com/takisoft/preferencex/widget/SimpleMenuPopupWindow.java (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/anim/abc_shrink_fade_out_center.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/drawable/simple_menu_background.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/drawable/simple_menu_item_background.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/layout-v21/preference_simplemenu.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/layout/preference_simplemenu.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/layout/simple_menu_item.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/layout/simple_menu_list.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/values-sw600dp/dimens.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/values/attrs.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/values/colors.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/values/dimens.xml (100%) rename {preferencex-simplemenu => external/preferencex-simplemenu}/src/main/res/values/styles.xml (100%) rename {preferencex => external/preferencex}/.gitignore (100%) rename {preferencex => external/preferencex}/build.gradle (100%) rename {preferencex => external/preferencex}/proguard-rules.pro (100%) rename {preferencex => external/preferencex}/src/main/AndroidManifest.xml (100%) rename {preferencex => external/preferencex}/src/main/java/androidx/preference/PreferenceManagerFix.java (100%) rename {preferencex => external/preferencex}/src/main/java/com/takisoft/preferencex/AutoSummaryEditTextPreference.java (100%) rename {preferencex => external/preferencex}/src/main/java/com/takisoft/preferencex/EditTextPreference.java (100%) rename {preferencex => external/preferencex}/src/main/java/com/takisoft/preferencex/PreferenceActivityResultListener.java (100%) rename {preferencex => external/preferencex}/src/main/java/com/takisoft/preferencex/PreferenceCategory.java (100%) rename {preferencex => external/preferencex}/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompat.java (100%) rename {preferencex => external/preferencex}/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompatMasterSwitch.java (100%) rename {preferencex => external/preferencex}/src/main/java/com/takisoft/preferencex/SwitchPreferenceCompat.java (100%) rename {preferencex => external/preferencex}/src/main/res/layout/preference_list_master_switch.xml (100%) rename {preferencex => external/preferencex}/src/main/res/layout/preference_material_ext.xml (100%) rename {preferencex => external/preferencex}/src/main/res/values/attrs.xml (100%) rename {preferencex => external/preferencex}/src/main/res/values/ids.xml (100%) rename {preferencex => external/preferencex}/src/main/res/values/styles.xml (100%) create mode 100644 library/core/build.gradle.kts rename {core => library/core}/src/main/AndroidManifest.xml (100%) rename {core => library/core}/src/main/jni/Android.mk (100%) rename {core => library/core}/src/main/jni/Application.mk (100%) rename {core => library/core}/src/main/jni/badvpn (100%) rename {core => library/core}/src/main/jni/build-shared-executable.mk (100%) rename {core => library/core}/src/main/jni/include/proxychains/config.h (100%) rename {core => library/core}/src/main/jni/libancillary (100%) rename {core => library/core}/src/main/jni/proxychains (100%) rename {shadowsocks => library/shadowsocks}/build.gradle.kts (88%) rename {shadowsocks => library/shadowsocks}/src/main/AndroidManifest.xml (100%) rename {shadowsocks => library/shadowsocks}/src/main/rust/linker-wrapper.py (100%) rename {shadowsocks => library/shadowsocks}/src/main/rust/shadowsocks-rust (100%) rename {shadowsocksr => library/shadowsocksr}/.gitignore (100%) create mode 100644 library/shadowsocksr/build.gradle.kts rename {shadowsocksr => library/shadowsocksr}/src/main/AndroidManifest.xml (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/Android.mk (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/Application.mk (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/build-shared-executable.mk (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/include/libev/config.h (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/include/shadowsocks-libev/config.h (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/include/sodium/version.h (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/libancillary (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/libsodium (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/mbedtls (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/patch/pcre/pcre_chartables.c (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/pcre (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/re2 (100%) rename {shadowsocksr => library/shadowsocksr}/src/main/jni/shadowsocks-libev (100%) rename v2ray => library/v2ray (100%) delete mode 100644 naive-plugin/build.gradle delete mode 160000 naive-plugin/src/main/jni/naiveproxy create mode 100644 plugin/api/build.gradle.kts rename plugin/{ => api}/proguard-rules.pro (100%) rename plugin/{ => api}/src/main/AndroidManifest.xml (100%) rename plugin/{ => api}/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt (71%) rename plugin/{ => api}/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt (61%) rename plugin/{ => api}/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt (100%) delete mode 100644 plugin/build.gradle create mode 100644 plugin/naive/build.gradle.kts rename {naive-plugin => plugin/naive}/src/main/AndroidManifest.xml (85%) create mode 100644 plugin/naive/src/main/ic_launcher-playstore.png rename {naive-plugin => plugin/naive}/src/main/java/io/nekohasekai/sagernet/plugin/naive/BinaryProvider.kt (100%) rename {naive-plugin => plugin/naive}/src/main/jni/BUILD.gn (100%) create mode 160000 plugin/naive/src/main/jni/naiveproxy create mode 100644 plugin/naive/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 plugin/naive/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 plugin/naive/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 plugin/naive/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 plugin/naive/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 plugin/naive/src/main/res/values/ic_launcher_background.xml create mode 100644 plugin/pingtunnel/build.gradle.kts rename {pt-plugin => plugin/pingtunnel}/src/main/AndroidManifest.xml (91%) rename {pt-plugin => plugin/pingtunnel}/src/main/go/pingtunnel (100%) create mode 100644 plugin/pingtunnel/src/main/ic_launcher-playstore.png rename {pt-plugin => plugin/pingtunnel}/src/main/java/io/nekohasekai/sagernet/plugin/pingtunnel/BinaryProvider.kt (100%) create mode 100644 plugin/pingtunnel/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 plugin/pingtunnel/src/main/res/values/ic_launcher_background.xml create mode 100644 plugin/relaybaton/build.gradle.kts rename {rb-plugin => plugin/relaybaton}/src/main/AndroidManifest.xml (91%) rename {rb-plugin => plugin/relaybaton}/src/main/go/relaybaton (100%) create mode 100644 plugin/relaybaton/src/main/ic_launcher-playstore.png rename {rb-plugin => plugin/relaybaton}/src/main/java/io/nekohasekai/sagernet/plugin/relaybaton/BinaryProvider.kt (100%) create mode 100644 plugin/relaybaton/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 plugin/relaybaton/src/main/res/values/ic_launcher_background.xml create mode 100644 plugin/trojan-go/build.gradle.kts rename {trojan-go-plugin => plugin/trojan-go}/src/main/AndroidManifest.xml (83%) rename {trojan-go-plugin => plugin/trojan-go}/src/main/go/trojan-go (100%) create mode 100644 plugin/trojan-go/src/main/ic_launcher-playstore.png rename {trojan-go-plugin => plugin/trojan-go}/src/main/java/io/nekohasekai/sagernet/plugin/trojan_go/BinaryProvider.kt (100%) create mode 100644 plugin/trojan-go/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 plugin/trojan-go/src/main/res/values/ic_launcher_background.xml create mode 100644 plugin/xtls/build.gradle.kts rename {xtls-plugin => plugin/xtls}/src/main/AndroidManifest.xml (93%) rename {xtls-plugin => plugin/xtls}/src/main/go/Xray-core (100%) create mode 100644 plugin/xtls/src/main/ic_launcher-playstore.png rename {xtls-plugin => plugin/xtls}/src/main/java/io/nekohasekai/sagernet/plugin/xtls/BinaryProvider.kt (100%) create mode 100644 plugin/xtls/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 plugin/xtls/src/main/res/values/ic_launcher_background.xml delete mode 100644 pt-plugin/build.gradle delete mode 100644 rb-plugin/build.gradle create mode 100644 repositories.gradle.kts delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts delete mode 100644 shadowsocksr/build.gradle delete mode 100644 trojan-go-plugin/build.gradle delete mode 100644 xtls-plugin/build.gradle diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 2fb89442..658dd1b4 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -20,7 +20,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'core/*' > core_status + run: git submodule status 'library/core/*' > core_status - name: Core Cache id: cache uses: actions/cache@v2 @@ -39,7 +39,7 @@ jobs: run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - ./run libs core + ./run lib core v2ray: name: Native Build (V2Ray) runs-on: ubuntu-latest @@ -47,14 +47,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status v2ray > v2ray_status + run: git submodule status library/v2ray > v2ray_status - name: V2Ray Cache id: cache uses: actions/cache@v2 with: path: | app/libs/libv2ray.aar - key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }} + key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -62,7 +62,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs v2ray + run: ./run lib v2ray xtls: name: Native Build (XTLS) runs-on: ubuntu-latest @@ -70,14 +70,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'xtls-plugin/*' > xtls_status + run: git submodule status 'plugin/xtls/*' > xtls_status - name: XTLS Cache id: cache uses: actions/cache@v2 with: path: | - xtls-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} + plugin/xtls/src/main/jniLibs + key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -85,7 +85,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs xtls + run: ./run plugin xtls trojan-go: name: Native Build (Trojan-Go) runs-on: ubuntu-latest @@ -93,14 +93,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'trojan-go-plugin/*' > trojan_go_status + run: git submodule status 'plugin/trojan-go/*' > trojan_go_status - name: Trojan-Go Cache id: cache uses: actions/cache@v2 with: path: | - trojan-go-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/trojan_go.sh', 'trojan_go_status') }} + plugin/trojan-go/src/main/jniLibs + key: ${{ hashFiles('bin/lib/trojan_go.sh', 'trojan_go_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -108,7 +108,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs trojan_go + run: ./run plugin trojan_go naive: runs-on: ubuntu-latest name: Native Build (NaïveProxy) @@ -120,19 +120,19 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'naive-plugin/*' > naive_status + run: git submodule status 'plugin/naive/*' > naive_status - name: Naive Cache id: cache uses: actions/cache@v2 with: path: | - naive-plugin/src/main/jniLibs/${{ matrix.arch }} - key: naive-${{ matrix.arch }}-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + plugin/naive/src/main/jniLibs/${{ matrix.arch }} + key: naive-${{ matrix.arch }}-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }} - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: | ./run init action naive - ./run libs naive ${{ matrix.arch }} + ./run plugin naive ${{ matrix.arch }} pingtunnel: name: Native Build (PingTunnel) runs-on: ubuntu-latest @@ -140,14 +140,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'pt-plugin/*' > pt_status + run: git submodule status 'plugin/pingtunnel/*' > pt_status - name: PingTunnel Cache id: cache uses: actions/cache@v2 with: path: | - pt-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/pingtunnel.sh', 'pt_status') }} + plugin/pingtunnel/src/main/jniLibs + key: ${{ hashFiles('bin/lib/pingtunnel.sh', 'pt_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -155,7 +155,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs pingtunnel + run: ./run plugin pingtunnel relaybaton: name: Native Build (RelayBaton) runs-on: ubuntu-latest @@ -163,14 +163,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'rb-plugin/*' > rb_status + run: git submodule status 'plugin/relaybaton/*' > rb_status - name: RelayBaton Cache id: cache uses: actions/cache@v2 with: path: | - rb-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/relaybaton.sh', 'rb_status') }} + plugin/relaybaton/src/main/jniLibs + key: ${{ hashFiles('bin/lib/relaybaton.sh', 'rb_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -178,7 +178,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs relaybaton + run: ./run plugin relaybaton shadowsocks: name: Native Build (Shadowsocks) runs-on: ubuntu-latest @@ -186,14 +186,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'shadowsocks/*' > shadowsocks_status + run: git submodule status 'library/shadowsocks/*' > shadowsocks_status - name: Shadowsocks Cache id: cache uses: actions/cache@v2 with: path: | app/libs/shadowsocks-release.aar - key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }} + key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }} - name: Install Rust if: steps.cache.outputs.cache-hit != 'true' run: ./run init action shadowsocks @@ -208,7 +208,7 @@ jobs: run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - ./run libs shadowsocks + ./run lib shadowsocks shadowsocksr: name: Native Build (ShadowsocksR) runs-on: ubuntu-latest @@ -216,7 +216,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'shadowsocksr/*' > shadowsocksr_status + run: git submodule status 'library/shadowsocksr/*' > shadowsocksr_status - name: ShadowsocksR Cache id: cache uses: actions/cache@v2 @@ -235,7 +235,7 @@ jobs: run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - ./run libs shadowsocksr + ./run lib shadowsocksr build: name: Gradle Build runs-on: ubuntu-latest @@ -249,10 +249,10 @@ jobs: uses: actions/checkout@v2 - name: Fetch Status run: | - git submodule status 'core/*' > core_status - git submodule status 'shadowsocks/*' > shadowsocks_status - git submodule status 'shadowsocksr/*' > shadowsocksr_status - git submodule status v2ray > v2ray_status + git submodule status 'library/core/*' > core_status + git submodule status 'library/shadowsocks/*' > shadowsocks_status + git submodule status 'library/shadowsocksr/*' > shadowsocksr_status + git submodule status library/v2ray > v2ray_status - name: Core Cache uses: actions/cache@v2 with: @@ -264,13 +264,13 @@ jobs: with: path: | app/libs/libv2ray.aar - key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }} + key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }} - name: Shadowsocks Cache uses: actions/cache@v2 with: path: | app/libs/shadowsocks-release.aar - key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }} + key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }} - name: ShadowsocksR Cache uses: actions/cache@v2 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6777e0c3..46e162e7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'core/*' > core_status + run: git submodule status 'library/core/*' > core_status - name: Core Cache id: cache uses: actions/cache@v2 @@ -52,7 +52,7 @@ jobs: run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - ./run libs core + ./run lib core v2ray: name: Native Build (V2Ray) runs-on: ubuntu-latest @@ -61,14 +61,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status v2ray > v2ray_status + run: git submodule status library/v2ray > v2ray_status - name: V2Ray Cache id: cache uses: actions/cache@v2 with: path: | app/libs/libv2ray.aar - key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }} + key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -85,7 +85,7 @@ jobs: run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - ./run libs v2ray + ./run lib v2ray shadowsocks: name: Native Build (Shadowsocks) runs-on: ubuntu-latest @@ -94,14 +94,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'shadowsocks/*' > shadowsocks_status + run: git submodule status 'library/shadowsocks/*' > shadowsocks_status - name: Shadowsocks Cache id: cache uses: actions/cache@v2 with: path: | app/libs/shadowsocks-release.aar - key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }} + key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }} - name: Install Rust if: steps.cache.outputs.cache-hit != 'true' run: ./run init action shadowsocks @@ -116,7 +116,7 @@ jobs: run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - ./run libs shadowsocks + ./run lib shadowsocks shadowsocksr: name: Native Build (ShadowsocksR) runs-on: ubuntu-latest @@ -125,7 +125,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'shadowsocksr/*' > shadowsocksr_status + run: git submodule status 'library/shadowsocksr/*' > shadowsocksr_status - name: ShadowsocksR Cache id: cache uses: actions/cache@v2 @@ -144,7 +144,7 @@ jobs: run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - ./run libs shadowsocksr + ./run lib shadowsocksr build: name: Gradle Build runs-on: ubuntu-latest @@ -158,10 +158,10 @@ jobs: uses: actions/checkout@v2 - name: Fetch Status run: | - git submodule status 'core/*' > core_status - git submodule status 'shadowsocks/*' > shadowsocks_status - git submodule status 'shadowsocksr/*' > shadowsocksr_status - git submodule status v2ray > v2ray_status + git submodule status 'library/core/*' > core_status + git submodule status 'library/shadowsocks/*' > shadowsocks_status + git submodule status 'library/shadowsocksr/*' > shadowsocksr_status + git submodule status library/v2ray > v2ray_status - name: Core Cache uses: actions/cache@v2 with: @@ -173,13 +173,13 @@ jobs: with: path: | app/libs/libv2ray.aar - key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }} + key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }} - name: Shadowsocks Cache uses: actions/cache@v2 with: path: | app/libs/shadowsocks-release.aar - key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }} + key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }} - name: ShadowsocksR Cache uses: actions/cache@v2 with: @@ -270,10 +270,10 @@ jobs: uses: actions/checkout@v2 - name: Fetch Status run: | - git submodule status 'core/*' > core_status - git submodule status 'shadowsocks/*' > shadowsocks_status - git submodule status 'shadowsocksr/*' > shadowsocksr_status - git submodule status v2ray > v2ray_status + git submodule status 'library/core/*' > core_status + git submodule status 'library/shadowsocks/*' > shadowsocks_status + git submodule status 'library/shadowsocksr/*' > shadowsocksr_status + git submodule status library/v2ray > v2ray_status - name: Core Cache uses: actions/cache@v2 with: @@ -285,13 +285,13 @@ jobs: with: path: | app/libs/libv2ray.aar - key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }} + key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }} - name: Shadowsocks Cache uses: actions/cache@v2 with: path: | app/libs/shadowsocks-release.aar - key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }} + key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }} - name: ShadowsocksR Cache uses: actions/cache@v2 with: diff --git a/.github/workflows/release_naive.yml b/.github/workflows/release_naive.yml index 1e8d6289..9d45c10e 100644 --- a/.github/workflows/release_naive.yml +++ b/.github/workflows/release_naive.yml @@ -34,14 +34,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'naive-plugin/*' > naive_status + run: git submodule status 'plugin/naive/*' > naive_status - name: Naive Cache id: cache uses: actions/cache@v2 with: path: | - naive-plugin/src/main/jniLibs/${{ matrix.arch }} - key: naive-${{ matrix.arch }}-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + plugin/naive/src/main/jniLibs/${{ matrix.arch }} + key: naive-${{ matrix.arch }}-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }} - name: Gradle cache uses: actions/cache@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -54,7 +54,7 @@ jobs: echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties ./run init action naive - ./run libs naive ${{ matrix.arch }} + ./run plugin naive ${{ matrix.arch }} naive: needs: naive_libs name: Gradle Build (NaïveProxy) @@ -63,31 +63,31 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'naive-plugin/*' > naive_status + run: git submodule status 'plugin/naive/*' > naive_status - name: Naive Cache (armeabi-v7a) uses: actions/cache@v2 with: path: | - naive-plugin/src/main/jniLibs/armeabi-v7a - key: naive-armeabi-v7a-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + plugin/naive/src/main/jniLibs/armeabi-v7a + key: naive-armeabi-v7a-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }} - name: Naive Cache (arm64-v8a) uses: actions/cache@v2 with: path: | - naive-plugin/src/main/jniLibs/arm64-v8a - key: naive-arm64-v8a-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + plugin/naive/src/main/jniLibs/arm64-v8a + key: naive-arm64-v8a-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }} - name: Naive Cache (x86) uses: actions/cache@v2 with: path: | - naive-plugin/src/main/jniLibs/x86 - key: naive-x86-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + plugin/naive/src/main/jniLibs/x86 + key: naive-x86-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }} - name: Naive Cache (x86_64) uses: actions/cache@v2 with: path: | - naive-plugin/src/main/jniLibs/x86_64 - key: naive-x86_64-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + plugin/naive/src/main/jniLibs/x86_64 + key: naive-x86_64-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }} - name: Gradle cache uses: actions/cache@v2 with: @@ -99,7 +99,7 @@ jobs: echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" ./gradlew naive-plugin:assembleRelease - APK=$(find naive-plugin/build/outputs/apk -name '*arm64-v8a*.apk') + APK=$(find plugin/naive/build/outputs/apk -name '*arm64-v8a*.apk') APK=$(dirname $APK) echo "APK=$APK" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 @@ -164,13 +164,13 @@ jobs: # - name: Checkout # uses: actions/checkout@v2 # - name: Fetch Status -# run: git submodule status 'xtls-plugin/*' > xtls_status +# run: git submodule status 'plugin/xtls/*' > xtls_status # - name: XTLS Cache # uses: actions/cache@v2 # with: # path: | -# xtls-plugin/src/main/jniLibs -# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} +# plugin/xtls/src/main/jniLibs +# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} # - name: Release Build # run: | # echo "sdk.dir=${ANDROID_HOME}" > local.properties diff --git a/.github/workflows/release_pingtunnel.yml b/.github/workflows/release_pingtunnel.yml index ffe36e5c..f880e3ad 100644 --- a/.github/workflows/release_pingtunnel.yml +++ b/.github/workflows/release_pingtunnel.yml @@ -31,14 +31,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'pt-plugin/*' > pt_status + run: git submodule status 'plugin/pingtunnel/*' > pt_status - name: PingTunnel Cache id: cache uses: actions/cache@v2 with: path: | - pt-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/pingtunnel.sh', 'pt_status') }} + plugin/pingtunnel/src/main/jniLibs + key: ${{ hashFiles('bin/lib/pingtunnel.sh', 'pt_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -46,7 +46,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs pingtunnel + run: ./run plugin pingtunnel build: name: Gradle Build runs-on: ubuntu-latest @@ -56,13 +56,13 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'pt-plugin/*' > pt_status + run: git submodule status 'plugin/pingtunnel/*' > pt_status - name: PingTunnel Cache uses: actions/cache@v2 with: path: | - pt-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/pingtunnel.sh', 'pt_status') }} + plugin/pingtunnel/src/main/jniLibs + key: ${{ hashFiles('bin/lib/pingtunnel.sh', 'pt_status') }} - name: Gradle cache uses: actions/cache@v2 with: @@ -74,7 +74,7 @@ jobs: echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" ./gradlew pt-plugin:assembleRelease - APK=$(find pt-plugin/build/outputs/apk -name '*arm64-v8a*.apk') + APK=$(find plugin/pingtunnel/build/outputs/apk -name '*arm64-v8a*.apk') APK=$(dirname $APK) echo "APK=$APK" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 @@ -139,13 +139,13 @@ jobs: # - name: Checkout # uses: actions/checkout@v2 # - name: Fetch Status -# run: git submodule status 'xtls-plugin/*' > xtls_status +# run: git submodule status 'plugin/xtls/*' > xtls_status # - name: XTLS Cache # uses: actions/cache@v2 # with: # path: | -# xtls-plugin/src/main/jniLibs -# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} +# plugin/xtls/src/main/jniLibs +# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} # - name: Release Build # run: | # echo "sdk.dir=${ANDROID_HOME}" > local.properties diff --git a/.github/workflows/release_relaybaton.yml b/.github/workflows/release_relaybaton.yml index c64e0707..add5ad92 100644 --- a/.github/workflows/release_relaybaton.yml +++ b/.github/workflows/release_relaybaton.yml @@ -31,14 +31,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'rb-plugin/*' > rb_status + run: git submodule status 'plugin/relaybaton/*' > rb_status - name: RelayBaton Cache id: cache uses: actions/cache@v2 with: path: | - rb-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/relaybaton.sh', 'rb_status') }} + plugin/relaybaton/src/main/jniLibs + key: ${{ hashFiles('bin/lib/relaybaton.sh', 'rb_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -46,7 +46,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs relaybaton + run: ./run plugin relaybaton build: name: Gradle Build runs-on: ubuntu-latest @@ -56,13 +56,13 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'rb-plugin/*' > rb_status + run: git submodule status 'plugin/relaybaton/*' > rb_status - name: RelayBaton Cache uses: actions/cache@v2 with: path: | - rb-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/relaybaton.sh', 'rb_status') }} + plugin/relaybaton/src/main/jniLibs + key: ${{ hashFiles('bin/lib/relaybaton.sh', 'rb_status') }} - name: Gradle cache uses: actions/cache@v2 with: @@ -74,7 +74,7 @@ jobs: echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" ./gradlew rb-plugin:assembleRelease - APK=$(find rb-plugin/build/outputs/apk -name '*arm64-v8a*.apk') + APK=$(find plugin/relaybaton/build/outputs/apk -name '*arm64-v8a*.apk') APK=$(dirname $APK) echo "APK=$APK" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 @@ -139,13 +139,13 @@ jobs: # - name: Checkout # uses: actions/checkout@v2 # - name: Fetch Status -# run: git submodule status 'xtls-plugin/*' > xtls_status +# run: git submodule status 'plugin/xtls/*' > xtls_status # - name: XTLS Cache # uses: actions/cache@v2 # with: # path: | -# xtls-plugin/src/main/jniLibs -# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} +# plugin/xtls/src/main/jniLibs +# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} # - name: Release Build # run: | # echo "sdk.dir=${ANDROID_HOME}" > local.properties diff --git a/.github/workflows/release_trojan_go.yml b/.github/workflows/release_trojan_go.yml index ce89c04e..36a6d26a 100644 --- a/.github/workflows/release_trojan_go.yml +++ b/.github/workflows/release_trojan_go.yml @@ -31,14 +31,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'trojan-go-plugin/*' > trojan_go_status + run: git submodule status 'plugin/trojan-go/*' > trojan_go_status - name: Trojan-Go Cache id: cache uses: actions/cache@v2 with: path: | - trojan-go-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/trojan_go.sh', 'trojan_go_status') }} + plugin/trojan-go/src/main/jniLibs + key: ${{ hashFiles('bin/lib/trojan_go.sh', 'trojan_go_status') }} - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -46,7 +46,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs trojan_go + run: ./run plugin trojan_go build: name: Gradle Build runs-on: ubuntu-latest @@ -56,13 +56,13 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'trojan-go-plugin/*' > trojan_go_status + run: git submodule status 'plugin/trojan-go/*' > trojan_go_status - name: Trojan-Go Cache uses: actions/cache@v2 with: path: | - trojan-go-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/trojan_go.sh', 'trojan_go_status') }} + plugin/trojan-go/src/main/jniLibs + key: ${{ hashFiles('bin/lib/trojan_go.sh', 'trojan_go_status') }} - name: Gradle cache uses: actions/cache@v2 with: @@ -74,7 +74,7 @@ jobs: echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" ./gradlew trojan-go-plugin:assembleRelease - APK=$(find trojan-go-plugin/build/outputs/apk -name '*arm64-v8a*.apk') + APK=$(find plugin/trojan-go/build/outputs/apk -name '*arm64-v8a*.apk') APK=$(dirname $APK) echo "APK=$APK" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 @@ -139,13 +139,13 @@ jobs: # - name: Checkout # uses: actions/checkout@v2 # - name: Fetch Status -# run: git submodule status 'xtls-plugin/*' > xtls_status +# run: git submodule status 'plugin/xtls/*' > xtls_status # - name: XTLS Cache # uses: actions/cache@v2 # with: # path: | -# xtls-plugin/src/main/jniLibs -# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} +# plugin/xtls/src/main/jniLibs +# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} # - name: Release Build # run: | # echo "sdk.dir=${ANDROID_HOME}" > local.properties diff --git a/.github/workflows/release_xtls.yml b/.github/workflows/release_xtls.yml index 27c050c7..733c5b5c 100644 --- a/.github/workflows/release_xtls.yml +++ b/.github/workflows/release_xtls.yml @@ -31,14 +31,14 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'xtls-plugin/*' > xtls_status + run: git submodule status 'plugin/xtls/*' > xtls_status - name: XTLS Cache id: cache uses: actions/cache@v2 with: path: | - xtls-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} + plugin/xtls/src/main/jniLibs + key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} - name: Gradle cache uses: actions/cache@v2 with: @@ -51,7 +51,7 @@ jobs: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' - run: ./run libs xtls + run: ./run plugin xtls build: name: Gradle Build runs-on: ubuntu-latest @@ -61,13 +61,13 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status - run: git submodule status 'xtls-plugin/*' > xtls_status + run: git submodule status 'plugin/xtls/*' > xtls_status - name: XTLS Cache uses: actions/cache@v2 with: path: | - xtls-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} + plugin/xtls/src/main/jniLibs + key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} - name: Gradle cache uses: actions/cache@v2 with: @@ -79,7 +79,7 @@ jobs: echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" ./gradlew xtls-plugin:assembleRelease - APK=$(find xtls-plugin/build/outputs/apk -name '*arm64-v8a*.apk') + APK=$(find plugin/xtls/build/outputs/apk -name '*arm64-v8a*.apk') APK=$(dirname $APK) echo "APK=$APK" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 @@ -144,13 +144,13 @@ jobs: # - name: Checkout # uses: actions/checkout@v2 # - name: Fetch Status -# run: git submodule status 'xtls-plugin/*' > xtls_status +# run: git submodule status 'plugin/xtls/*' > xtls_status # - name: XTLS Cache # uses: actions/cache@v2 # with: # path: | -# xtls-plugin/src/main/jniLibs -# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }} +# plugin/xtls/src/main/jniLibs +# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }} # - name: Release Build # run: | # echo "sdk.dir=${ANDROID_HOME}" > local.properties diff --git a/.gitmodules b/.gitmodules index 1a67c257..ecf1283b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,48 +1,48 @@ -[submodule "core/src/main/jni/badvpn"] - path = core/src/main/jni/badvpn +[submodule "library/core/src/main/jni/badvpn"] + path = library/core/src/main/jni/badvpn url = https://github.com/shadowsocks/badvpn -[submodule "core/src/main/jni/libancillary"] - path = core/src/main/jni/libancillary +[submodule "library/core/src/main/jni/libancillary"] + path = library/core/src/main/jni/libancillary url = https://github.com/shadowsocks/libancillary -[submodule "v2ray"] - path = v2ray +[submodule "library/v2ray"] + path = library/v2ray url = https://github.com/nekohasekai/AndroidLibV2rayLite -[submodule "shadowsocks/src/main/rust/shadowsocks-rust"] - path = shadowsocks/src/main/rust/shadowsocks-rust +[submodule "library/shadowsocks/src/main/rust/shadowsocks-rust"] + path = library/shadowsocks/src/main/rust/shadowsocks-rust url = https://github.com/shadowsocks/shadowsocks-rust.git -[submodule "shadowsocksr/src/main/jni/shadowsocks-libev"] - path = shadowsocksr/src/main/jni/shadowsocks-libev +[submodule "library/shadowsocksr/src/main/jni/shadowsocks-libev"] + path = library/shadowsocksr/src/main/jni/shadowsocks-libev url = https://github.com/shadowsocksRb/shadowsocksr-libev -[submodule "shadowsocksr/src/main/jni/mbedtls"] - path = shadowsocksr/src/main/jni/mbedtls +[submodule "library/shadowsocksr/src/main/jni/mbedtls"] + path = library/shadowsocksr/src/main/jni/mbedtls url = https://github.com/ARMmbed/mbedtls -[submodule "shadowsocksr/src/main/jni/libancillary"] - path = shadowsocksr/src/main/jni/libancillary +[submodule "library/shadowsocksr/src/main/jni/libancillary"] + path = library/shadowsocksr/src/main/jni/libancillary url = https://github.com/shadowsocks/libancillary -[submodule "shadowsocksr/src/main/jni/pcre"] - path = shadowsocksr/src/main/jni/pcre +[submodule "library/shadowsocksr/src/main/jni/pcre"] + path = library/shadowsocksr/src/main/jni/pcre url = https://android.googlesource.com/platform/external/pcre -[submodule "shadowsocksr/src/main/jni/libsodium"] - path = shadowsocksr/src/main/jni/libsodium +[submodule "library/shadowsocksr/src/main/jni/libsodium"] + path = library/shadowsocksr/src/main/jni/libsodium url = https://github.com/jedisct1/libsodium -[submodule "shadowsocksr/src/main/jni/re2"] - path = shadowsocksr/src/main/jni/re2 +[submodule "library/shadowsocksr/src/main/jni/re2"] + path = library/shadowsocksr/src/main/jni/re2 url = https://github.com/google/re2 -[submodule "xtls-plugin/src/main/go/Xray-core"] - path = xtls-plugin/src/main/go/Xray-core +[submodule "plugin/xtls/src/main/go/Xray-core"] + path = plugin/xtls/src/main/go/Xray-core url = https://github.com/XTLS/Xray-core -[submodule "trojan-go-plugin/src/main/go/trojan-go"] - path = trojan-go-plugin/src/main/go/trojan-go +[submodule "plugin/trojan-go/src/main/go/trojan-go"] + path = plugin/trojan-go/src/main/go/trojan-go url = https://github.com/p4gefau1t/trojan-go [submodule "core/src/main/jni/proxychains-ng"] - path = core/src/main/jni/proxychains + path = library/core/src/main/jni/proxychains url = https://github.com/SagerNet/proxychains-ng -[submodule "naive-plugin/src/main/jni/naiveproxy"] - path = naive-plugin/src/main/jni/naiveproxy +[submodule "plugin/naive/src/main/jni/naiveproxy"] + path = plugin/naive/src/main/jni/naiveproxy url = https://github.com/klzgrad/naiveproxy -[submodule "pt-plugin/src/main/go/pingtunnel"] - path = pt-plugin/src/main/go/pingtunnel +[submodule "plugin/pingtunnel/src/main/go/pingtunnel"] + path = plugin/pingtunnel/src/main/go/pingtunnel url = https://github.com/esrrhs/pingtunnel -[submodule "rb-plugin/src/main/go/relaybaton"] - path = rb-plugin/src/main/go/relaybaton +[submodule "plugin/relaybaton/src/main/go/relaybaton"] + path = plugin/relaybaton/src/main/go/relaybaton url = https://github.com/iyouport-org/relaybaton diff --git a/.idea/dictionaries/sekai.xml b/.idea/dictionaries/sekai.xml index 0e7c2a37..5c6f6030 100644 --- a/.idea/dictionaries/sekai.xml +++ b/.idea/dictionaries/sekai.xml @@ -8,6 +8,7 @@ dokodemo downlink fakedns + fdroid geoip geosite grpc diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 52397a8b..a33621db 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,7 +4,7 @@