diff --git a/V2rayNG/app/build.gradle b/V2rayNG/app/build.gradle
index 1f5dbeb85..b1cd20d38 100644
--- a/V2rayNG/app/build.gradle
+++ b/V2rayNG/app/build.gradle
@@ -76,21 +76,21 @@ dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
// Androidx ktx
- implementation 'android.arch.lifecycle:extensions:1.1.1'
- implementation 'android.arch.lifecycle:livedata:1.1.1'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
+ implementation 'androidx.lifecycle:lifecycle-livedata:2.0.0'
// Android support library
- implementation "com.android.support:support-v4:$supportLibVersion"
- implementation "com.android.support:appcompat-v7:$supportLibVersion"
- implementation "com.android.support:design:$supportLibVersion"
- implementation "com.android.support:cardview-v7:$supportLibVersion"
- implementation "com.android.support:preference-v7:$supportLibVersion"
- implementation "com.android.support:recyclerview-v7:$supportLibVersion"
- implementation "com.android.support:multidex:1.0.3"
- implementation 'com.android.support.constraint:constraint-layout:2.0.1'
+ implementation "androidx.legacy:legacy-support-v4:$supportLibVersion"
+ implementation "androidx.appcompat:appcompat:$supportLibVersion"
+ implementation "com.google.android.material:material:$supportLibVersion"
+ implementation "androidx.cardview:cardview:$supportLibVersion"
+ implementation "androidx.preference:preference:$supportLibVersion"
+ implementation "androidx.recyclerview:recyclerview:$supportLibVersion"
+ implementation 'androidx.multidex:multidex:2.0.0'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// DSL
- implementation 'com.tencent:mmkv-static:1.0.19'
+ implementation 'com.tencent:mmkv-static:1.2.7'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'io.reactivex:rxjava:1.3.4'
implementation 'io.reactivex:rxandroid:1.2.1'
@@ -99,6 +99,8 @@ dependencies {
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation 'com.github.jorgecastilloprz:fabprogresscircle:1.01@aar'
implementation 'me.drakeet.support:toastcompat:1.1.0'
+ implementation 'com.blacksquircle.ui:editorkit:2.0.0'
+ implementation 'com.blacksquircle.ui:language-json:2.0.0'
implementation(name: 'libv2ray', ext: 'aar')
//implementation(name: 'tun2socks', ext: 'aar')
diff --git a/V2rayNG/app/src/main/AndroidManifest.xml b/V2rayNG/app/src/main/AndroidManifest.xml
index 543343ae0..898497374 100644
--- a/V2rayNG/app/src/main/AndroidManifest.xml
+++ b/V2rayNG/app/src/main/AndroidManifest.xml
@@ -28,6 +28,8 @@
+
+
Unit) {
builder.setCursor(cursor, { dialog, which -> f(which) }, labelColumn)
}
-}
\ No newline at end of file
+}
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt
index 61acaafb4..cf44bfa2f 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt
@@ -10,8 +10,8 @@ import android.content.Intent
import android.content.IntentFilter
import android.graphics.Color
import android.os.Build
-import android.support.annotation.RequiresApi
-import android.support.v4.app.NotificationCompat
+import androidx.annotation.RequiresApi
+import androidx.core.app.NotificationCompat
import android.util.Log
import com.tencent.mmkv.MMKV
import com.v2ray.ang.AppConfig
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
index 0a21a3130..586c5c00d 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
@@ -8,7 +8,7 @@ import android.net.*
import android.os.Build
import android.os.ParcelFileDescriptor
import android.os.StrictMode
-import android.support.annotation.RequiresApi
+import androidx.annotation.RequiresApi
import android.util.Log
import com.tencent.mmkv.MMKV
import com.v2ray.ang.AppConfig
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt
index 8ea4d87c0..3f11b6493 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt
@@ -1,6 +1,6 @@
package com.v2ray.ang.ui
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
import android.view.MenuItem
abstract class BaseActivity : AppCompatActivity() {
@@ -11,4 +11,4 @@ abstract class BaseActivity : AppCompatActivity() {
}
else -> super.onOptionsItemSelected(item)
}
-}
\ No newline at end of file
+}
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt
index e4d34e3f0..f90b3e79d 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt
@@ -1,9 +1,9 @@
package com.v2ray.ang.ui
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentManager
-import android.support.v4.app.FragmentStatePagerAdapter
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.fragment.app.FragmentStatePagerAdapter
class FragmentAdapter(fm: FragmentManager, private val mFragments: List, private val mTitles: List) : FragmentStatePagerAdapter(fm) {
@@ -18,4 +18,4 @@ class FragmentAdapter(fm: FragmentManager, private val mFragments: List
-
-
-
-
-
-
-
-
-
+
-
+
-
\ No newline at end of file
+
diff --git a/V2rayNG/app/src/main/res/layout/activity_main.xml b/V2rayNG/app/src/main/res/layout/activity_main.xml
index 8da29fc7b..972af7c1c 100644
--- a/V2rayNG/app/src/main/res/layout/activity_main.xml
+++ b/V2rayNG/app/src/main/res/layout/activity_main.xml
@@ -1,5 +1,5 @@
-
-
-
-
+
-
@@ -44,7 +44,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
-
-
+
-
-
+
-
+
diff --git a/V2rayNG/app/src/main/res/layout/activity_routing_settings.xml b/V2rayNG/app/src/main/res/layout/activity_routing_settings.xml
index 15d7d8041..1c99fc958 100644
--- a/V2rayNG/app/src/main/res/layout/activity_routing_settings.xml
+++ b/V2rayNG/app/src/main/res/layout/activity_routing_settings.xml
@@ -4,14 +4,14 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
-
-
-
\ No newline at end of file
+
diff --git a/V2rayNG/app/src/main/res/layout/activity_server_custom_config.xml b/V2rayNG/app/src/main/res/layout/activity_server_custom_config.xml
index 7924443ca..4f0a5e680 100644
--- a/V2rayNG/app/src/main/res/layout/activity_server_custom_config.xml
+++ b/V2rayNG/app/src/main/res/layout/activity_server_custom_config.xml
@@ -8,14 +8,13 @@
+ android:orientation="vertical">
+ android:layout_margin="@dimen/layout_margin_spacing">
+ android:orientation="vertical"
+ android:layout_margin="@dimen/layout_margin_spacing">
-
+
-
\ No newline at end of file
+
diff --git a/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml b/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml
index 033da71fc..5e3133624 100644
--- a/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml
+++ b/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml
@@ -8,15 +8,15 @@
android:fitsSystemWindows="true"
tools:context=".ui.MainActivity">
-
-
-
-
\ No newline at end of file
+
+
diff --git a/V2rayNG/app/src/main/res/layout/activity_tasker.xml b/V2rayNG/app/src/main/res/layout/activity_tasker.xml
index f2661896b..8994d8410 100644
--- a/V2rayNG/app/src/main/res/layout/activity_tasker.xml
+++ b/V2rayNG/app/src/main/res/layout/activity_tasker.xml
@@ -10,7 +10,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/bypass_list_header_height">
-
-
-
\ No newline at end of file
+
diff --git a/V2rayNG/app/src/main/res/layout/item_recycler_bypass_list.xml b/V2rayNG/app/src/main/res/layout/item_recycler_bypass_list.xml
index bde3c01de..d705e5eb2 100644
--- a/V2rayNG/app/src/main/res/layout/item_recycler_bypass_list.xml
+++ b/V2rayNG/app/src/main/res/layout/item_recycler_bypass_list.xml
@@ -7,7 +7,7 @@
android:clickable="true"
android:focusable="true">
-
-
-
-
-
\ No newline at end of file
+
diff --git a/V2rayNG/app/src/main/res/layout/item_recycler_main.xml b/V2rayNG/app/src/main/res/layout/item_recycler_main.xml
index 778b7e153..a0855c407 100644
--- a/V2rayNG/app/src/main/res/layout/item_recycler_main.xml
+++ b/V2rayNG/app/src/main/res/layout/item_recycler_main.xml
@@ -7,7 +7,7 @@
android:layout_height="wrap_content"
android:gravity="center_vertical">
-
-
-
+
diff --git a/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml b/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml
index c4d66627d..aa370e410 100644
--- a/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml
+++ b/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml
@@ -5,7 +5,7 @@
android:layout_height="wrap_content"
android:gravity="center_vertical">
-
-
-
\ No newline at end of file
+
+
diff --git a/V2rayNG/app/src/main/res/layout/nav_toolbar.xml b/V2rayNG/app/src/main/res/layout/nav_toolbar.xml
index d1a0d9105..c77a5f070 100644
--- a/V2rayNG/app/src/main/res/layout/nav_toolbar.xml
+++ b/V2rayNG/app/src/main/res/layout/nav_toolbar.xml
@@ -1,15 +1,15 @@
-
-
-
\ No newline at end of file
+
diff --git a/V2rayNG/app/src/main/res/layout/nav_view.xml b/V2rayNG/app/src/main/res/layout/nav_view.xml
index 77b0d6ca3..8268c6e81 100644
--- a/V2rayNG/app/src/main/res/layout/nav_view.xml
+++ b/V2rayNG/app/src/main/res/layout/nav_view.xml
@@ -1,5 +1,5 @@
-
\ No newline at end of file
+ app:menu="@menu/menu_drawer" />
diff --git a/V2rayNG/gradle.properties b/V2rayNG/gradle.properties
index 6c31f8903..d155321c5 100644
--- a/V2rayNG/gradle.properties
+++ b/V2rayNG/gradle.properties
@@ -14,8 +14,10 @@ org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryErro
# org.gradle.parallel=true
#Fri Jun 02 14:08:42 CST 2017
kotlinVersion=1.4.10
-supportLibVersion=28.0.0
+supportLibVersion=1.0.0
buildToolsVer=30.0.2
compileSdkVer=30
kotlin.incremental=true
targetSdkVer=30
+android.useAndroidX=true
+android.enableJetifier=true