diff --git a/build.sbt b/build.sbt index cfa9233b..4851fe6f 100644 --- a/build.sbt +++ b/build.sbt @@ -17,9 +17,30 @@ lazy val commonSettings = Seq( typedResources := false ) -lazy val shadowsocks = project.in(file(".")) +val supportLibsVersion = "25.1.0" +lazy val root = Project(id = "shadowsocks-android", base = file(".")) .settings(commonSettings) - .aggregate(mobile) + .aggregate(pluginLib, mobile) + +install in Android := (install in (mobile, Android)).value +run in Android := (run in (mobile, Android)).evaluated + +lazy val pluginLib = Project(id = "plugin-lib", base = file("plugin-lib")) + .settings(commonSettings) + .settings( + libraryDependencies ++= + "com.android.support" % "preference-v14" % supportLibsVersion :: + Nil + ) lazy val mobile = project .settings(commonSettings) + .settings( + libraryDependencies ++= + "com.android.support" % "cardview-v7" % supportLibsVersion :: + "com.android.support" % "customtabs" % supportLibsVersion :: + "com.android.support" % "design" % supportLibsVersion :: + "com.android.support" % "gridlayout-v7" % supportLibsVersion :: + Nil + ) + .dependsOn(pluginLib) diff --git a/mobile/build.sbt b/mobile/build.sbt index bebd4e1e..2816e688 100644 --- a/mobile/build.sbt +++ b/mobile/build.sbt @@ -6,6 +6,12 @@ version := "4.0.0" versionCode := Some(174) proguardOptions ++= + "-keep class android.support.v14.preference.SwitchPreference { (...); }" :: + "-keep class android.support.v7.preference.DropDownPreference { (...); }" :: + "-keep class android.support.v7.preference.PreferenceScreen { (...); }" :: + "-keep class be.mygod.preference.EditTextPreference { (...); }" :: + "-keep class be.mygod.preference.NumberPickerPreference { (...); }" :: + "-keep class be.mygod.preference.PreferenceCategory { (...); }" :: "-keep class com.github.shadowsocks.System { *; }" :: "-dontwarn com.google.android.gms.internal.**" :: "-dontwarn com.j256.ormlite.**" :: @@ -15,15 +21,9 @@ proguardOptions ++= resConfigs := Seq("ja", "ru", "zh-rCN", "zh-rTW") -val supportLibsVersion = "25.1.0" val playServicesVersion = "10.0.1" resolvers += Resolver.jcenterRepo libraryDependencies ++= - "com.android.support" % "cardview-v7" % supportLibsVersion :: - "com.android.support" % "customtabs" % supportLibsVersion :: - "com.android.support" % "design" % supportLibsVersion :: - "com.android.support" % "gridlayout-v7" % supportLibsVersion :: - "com.android.support" % "preference-v14" % supportLibsVersion :: "com.futuremind.recyclerfastscroll" % "fastscroll" % "0.2.5" :: "com.evernote" % "android-job" % "1.1.4" :: "com.github.jorgecastilloprz" % "fabprogresscircle" % "1.01" :: diff --git a/mobile/src/main/AndroidManifest.xml b/mobile/src/main/AndroidManifest.xml index 5594a06b..2c4f35dc 100644 --- a/mobile/src/main/AndroidManifest.xml +++ b/mobile/src/main/AndroidManifest.xml @@ -25,7 +25,6 @@ android:roundIcon="@mipmap/ic_launcher" android:backupAgent=".ShadowsocksBackupAgent" android:label="@string/app_name" - android:theme="@style/Theme.Material" android:banner="@drawable/ic_start_connected"> - - - - - - - - - - - - - - - diff --git a/mobile/src/main/scala/com/github/shadowsocks/database/DBHelper.scala b/mobile/src/main/scala/com/github/shadowsocks/database/DBHelper.scala index ebbb3e2c..90e6d4e0 100644 --- a/mobile/src/main/scala/com/github/shadowsocks/database/DBHelper.scala +++ b/mobile/src/main/scala/com/github/shadowsocks/database/DBHelper.scala @@ -127,10 +127,10 @@ class DBHelper(val context: Context) profileDao.executeRawNoArgs("ALTER TABLE `profile` RENAME TO `tmp`;") TableUtils.createTable(connectionSource, classOf[Profile]) profileDao.executeRawNoArgs( - "INSERT INTO `profile`(id, name, host, localPort, remotePort, password, method, route, proxyApps, bypass," + - " udpdns, auth, ipv6, individual, tx, rx, date, userOrder, plugin) " + + "INSERT INTO `profile`(id, name, host, localPort, remotePort, password, method, route, remoteDns, proxyApps," + + " bypass, udpdns, auth, ipv6, individual, tx, rx, date, userOrder, plugin) " + "SELECT id, name, host, localPort, CASE WHEN kcp = 1 THEN kcpPort ELSE remotePort END, password, method, " + - "route, proxyApps, bypass, udpdns, auth, ipv6, individual, tx, rx, date, userOrder, " + + "route, remoteDns, proxyApps, bypass, udpdns, auth, ipv6, individual, tx, rx, date, userOrder, " + "CASE WHEN kcp = 1 THEN 'kcptun ' || kcpcli ELSE NULL END FROM `tmp`;") profileDao.executeRawNoArgs("DROP TABLE `tmp`;") profileDao.executeRawNoArgs("COMMIT;") diff --git a/plugin-lib/build.sbt b/plugin-lib/build.sbt new file mode 100644 index 00000000..d3e6c0d5 --- /dev/null +++ b/plugin-lib/build.sbt @@ -0,0 +1,5 @@ +enablePlugins(AndroidLib) +android.useSupportVectors + +name := "plugin" +version := "0.0.1-SNAPSHOT" diff --git a/plugin-lib/src/main/AndroidManifest.xml b/plugin-lib/src/main/AndroidManifest.xml new file mode 100644 index 00000000..a5e9871d --- /dev/null +++ b/plugin-lib/src/main/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/plugin-lib/src/main/res/values-v21/styles.xml b/plugin-lib/src/main/res/values-v21/styles.xml new file mode 100644 index 00000000..624881d2 --- /dev/null +++ b/plugin-lib/src/main/res/values-v21/styles.xml @@ -0,0 +1,4 @@ + + + + + + + + + + + + + + diff --git a/mobile/src/main/scala/be/mygod/preference/DialogPreferencePlus.scala b/plugin-lib/src/main/scala/be/mygod/preference/DialogPreferencePlus.scala similarity index 100% rename from mobile/src/main/scala/be/mygod/preference/DialogPreferencePlus.scala rename to plugin-lib/src/main/scala/be/mygod/preference/DialogPreferencePlus.scala diff --git a/mobile/src/main/scala/be/mygod/preference/EditTextPreference.scala b/plugin-lib/src/main/scala/be/mygod/preference/EditTextPreference.scala similarity index 100% rename from mobile/src/main/scala/be/mygod/preference/EditTextPreference.scala rename to plugin-lib/src/main/scala/be/mygod/preference/EditTextPreference.scala diff --git a/mobile/src/main/scala/be/mygod/preference/EditTextPreferenceDialogFragment.scala b/plugin-lib/src/main/scala/be/mygod/preference/EditTextPreferenceDialogFragment.scala similarity index 100% rename from mobile/src/main/scala/be/mygod/preference/EditTextPreferenceDialogFragment.scala rename to plugin-lib/src/main/scala/be/mygod/preference/EditTextPreferenceDialogFragment.scala diff --git a/mobile/src/main/scala/be/mygod/preference/NumberPickerPreference.scala b/plugin-lib/src/main/scala/be/mygod/preference/NumberPickerPreference.scala similarity index 98% rename from mobile/src/main/scala/be/mygod/preference/NumberPickerPreference.scala rename to plugin-lib/src/main/scala/be/mygod/preference/NumberPickerPreference.scala index b321db1d..9b303670 100644 --- a/mobile/src/main/scala/be/mygod/preference/NumberPickerPreference.scala +++ b/plugin-lib/src/main/scala/be/mygod/preference/NumberPickerPreference.scala @@ -26,7 +26,7 @@ import android.support.v7.preference.DialogPreference import android.util.AttributeSet import android.view.ContextThemeWrapper import android.widget.NumberPicker -import com.github.shadowsocks.R +import com.github.shadowsocks.plugin.R class NumberPickerPreference(private val context: Context, attrs: AttributeSet = null) extends DialogPreference(context, attrs) with DialogPreferencePlus with SummaryPreference { diff --git a/mobile/src/main/scala/be/mygod/preference/NumberPickerPreferenceDialogFragment.scala b/plugin-lib/src/main/scala/be/mygod/preference/NumberPickerPreferenceDialogFragment.scala similarity index 100% rename from mobile/src/main/scala/be/mygod/preference/NumberPickerPreferenceDialogFragment.scala rename to plugin-lib/src/main/scala/be/mygod/preference/NumberPickerPreferenceDialogFragment.scala diff --git a/mobile/src/main/scala/be/mygod/preference/PreferenceCategory.scala b/plugin-lib/src/main/scala/be/mygod/preference/PreferenceCategory.scala similarity index 100% rename from mobile/src/main/scala/be/mygod/preference/PreferenceCategory.scala rename to plugin-lib/src/main/scala/be/mygod/preference/PreferenceCategory.scala diff --git a/mobile/src/main/scala/be/mygod/preference/PreferenceFragment.scala b/plugin-lib/src/main/scala/be/mygod/preference/PreferenceFragment.scala similarity index 100% rename from mobile/src/main/scala/be/mygod/preference/PreferenceFragment.scala rename to plugin-lib/src/main/scala/be/mygod/preference/PreferenceFragment.scala diff --git a/mobile/src/main/scala/be/mygod/preference/PreferenceGroupAdapter.scala b/plugin-lib/src/main/scala/be/mygod/preference/PreferenceGroupAdapter.scala similarity index 99% rename from mobile/src/main/scala/be/mygod/preference/PreferenceGroupAdapter.scala rename to plugin-lib/src/main/scala/be/mygod/preference/PreferenceGroupAdapter.scala index 41934e17..8819ca37 100644 --- a/mobile/src/main/scala/be/mygod/preference/PreferenceGroupAdapter.scala +++ b/plugin-lib/src/main/scala/be/mygod/preference/PreferenceGroupAdapter.scala @@ -28,7 +28,7 @@ import android.support.v4.content.ContextCompat import android.support.v4.view.ViewCompat import android.support.v7.preference.{PreferenceGroup, PreferenceViewHolder, PreferenceGroupAdapter => Old} import android.view.{LayoutInflater, View, ViewGroup} -import com.github.shadowsocks.R +import com.github.shadowsocks.plugin.R /** * Fix by: https://github.com/Gericop/Android-Support-Preference-V7-Fix/commit/7de016b007e28a264001a8bb353f110a7f64bb69 diff --git a/mobile/src/main/scala/be/mygod/preference/SummaryPreference.scala b/plugin-lib/src/main/scala/be/mygod/preference/SummaryPreference.scala similarity index 100% rename from mobile/src/main/scala/be/mygod/preference/SummaryPreference.scala rename to plugin-lib/src/main/scala/be/mygod/preference/SummaryPreference.scala