From 6b9b7b6749158fd44ba9dab71a85b423ff35ae4b Mon Sep 17 00:00:00 2001 From: Mygod Date: Sat, 3 Oct 2015 18:37:48 +0800 Subject: [PATCH] Migrate to Android 6.0 (1) --- build.sbt | 8 +++++--- src/main/AndroidManifest.xml | 2 +- .../github/shadowsocks/ShadowsocksNatService.scala | 7 +++---- .../github/shadowsocks/ShadowsocksVpnService.scala | 5 ++--- .../scala/com/github/shadowsocks/utils/Utils.scala | 14 +++++++------- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/build.sbt b/build.sbt index 51701dae..a0eeb512 100644 --- a/build.sbt +++ b/build.sbt @@ -1,15 +1,17 @@ import android.Keys._ -import android.Dependencies.{apklib,aar} - android.Plugin.androidBuild -platformTarget in Android := "android-21" +platformTarget in Android := "android-22" name := "shadowsocks" compileOrder in Compile := CompileOrder.JavaThenScala +javacOptions ++= Seq("-source", "1.6", "-target", "1.6") + +scalacOptions += "-target:jvm-1.6" + ndkJavah in Android := List() ndkBuild in Android := List() diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 2c5312f2..30704809 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -14,7 +14,7 @@ + android:targetSdkVersion="22"/> config.proxy = a diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index 2714ae35..19bb4b7c 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -40,6 +40,7 @@ package com.github.shadowsocks import java.io.File +import java.net.InetAddress import java.util.Locale import android.app._ @@ -53,7 +54,6 @@ import com.github.shadowsocks.aidl.Config import com.github.shadowsocks.utils._ import com.google.android.gms.analytics.HitBuilders import org.apache.commons.net.util.SubnetUtils -import org.apache.http.conn.util.InetAddressUtils import scala.collection.mutable import scala.collection.mutable.ArrayBuffer @@ -238,8 +238,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { // Resolve the server address var resolved: Boolean = false - if (!InetAddressUtils.isIPv4Address(config.proxy) && - !InetAddressUtils.isIPv6Address(config.proxy)) { + if (!Utils.isNumeric(config.proxy)) { Utils.resolve(config.proxy, enableIPv6 = true) match { case Some(addr) => config.proxy = addr diff --git a/src/main/scala/com/github/shadowsocks/utils/Utils.scala b/src/main/scala/com/github/shadowsocks/utils/Utils.scala index 6ce7183d..9581a74c 100644 --- a/src/main/scala/com/github/shadowsocks/utils/Utils.scala +++ b/src/main/scala/com/github/shadowsocks/utils/Utils.scala @@ -44,8 +44,7 @@ import android.content.pm.PackageManager import android.graphics.drawable.{BitmapDrawable, Drawable} import android.util.{Base64, Log} import java.io._ -import java.net.{UnknownHostException, InetAddress, NetworkInterface} -import org.apache.http.conn.util.InetAddressUtils +import java.net._ import org.xbill.DNS._ import android.graphics._ import android.app.ActivityManager @@ -233,6 +232,9 @@ object Utils { None } + lazy val isNumericMethod = classOf[InetAddress].getMethod("isNumeric", classOf[String]) + def isNumeric(address: String): Boolean = isNumericMethod.invoke(null, address).asInstanceOf[Boolean] + /** * Get local IPv4 address */ @@ -245,9 +247,8 @@ object Utils { while (addrs.hasMoreElements) { val addr = addrs.nextElement() if (!addr.isLoopbackAddress && !addr.isLinkLocalAddress) { - val sAddr = addr.getHostAddress.toUpperCase - if (InetAddressUtils.isIPv4Address(sAddr)) { - return Some(sAddr) + if (addr.isInstanceOf[Inet4Address]) { + return Some(addr.getHostAddress.toUpperCase) } } } @@ -271,8 +272,7 @@ object Utils { while (addrs.hasMoreElements) { val addr = addrs.nextElement() if (!addr.isLoopbackAddress && !addr.isLinkLocalAddress) { - val sAddr = addr.getHostAddress.toUpperCase - if (InetAddressUtils.isIPv6Address(sAddr)) { + if (addr.isInstanceOf[Inet6Address]) { if (BuildConfig.DEBUG) Log.d(TAG, "IPv6 address detected") return true }