From d2b9de740dde600e36a37c838d8aa8c1a4b62dfd Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 30 Sep 2019 12:29:06 +0530 Subject: [PATCH] Migrate to Android 10 Signed-off-by: Harsh Shandilya --- app/build.gradle | 6 +++--- .../java/com/wireguard/config/InetAddresses.java | 14 +++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index cef566fd..1e820455 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,17 +6,17 @@ apply from: 'nonnull.gradle' final def keystorePropertiesFile = rootProject.file("keystore.properties") android { - buildToolsVersion '28.0.3' + buildToolsVersion '29.0.2' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - compileSdkVersion 28 + compileSdkVersion 29 dataBinding.enabled true defaultConfig { applicationId 'com.wireguard.android' minSdkVersion 21 - targetSdkVersion 28 + targetSdkVersion 29 versionCode 451 versionName '0.0.20190708' buildConfigField 'int', 'MIN_SDK_VERSION', "$minSdkVersion.apiLevel" diff --git a/app/src/main/java/com/wireguard/config/InetAddresses.java b/app/src/main/java/com/wireguard/config/InetAddresses.java index 69fd6cfb..864082e2 100644 --- a/app/src/main/java/com/wireguard/config/InetAddresses.java +++ b/app/src/main/java/com/wireguard/config/InetAddresses.java @@ -5,6 +5,7 @@ package com.wireguard.config; +import android.os.Build; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.Inet4Address; @@ -15,9 +16,12 @@ import java.net.InetAddress; * Utility methods for creating instances of {@link InetAddress}. */ public final class InetAddresses { - private static final Method PARSER_METHOD; + private static Method PARSER_METHOD; - static { + + private static Method getParserMethod() { + if (PARSER_METHOD != null) + return PARSER_METHOD; try { // This method is only present on Android. // noinspection JavaReflectionMemberAccess @@ -25,6 +29,7 @@ public final class InetAddresses { } catch (final NoSuchMethodException e) { throw new RuntimeException(e); } + return PARSER_METHOD; } private InetAddresses() { @@ -41,7 +46,10 @@ public final class InetAddresses { if (address.isEmpty()) throw new ParseException(InetAddress.class, address, "Empty address"); try { - return (InetAddress) PARSER_METHOD.invoke(null, address); + if (Build.VERSION.SDK_INT < 29) + return (InetAddress) getParserMethod().invoke(null, address); + else + return android.net.InetAddresses.parseNumericAddress(address); } catch (final IllegalAccessException | InvocationTargetException e) { final Throwable cause = e.getCause(); // Re-throw parsing exceptions with the original type, as callers might try to catch