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
}