From 9fc1a4e0ad842d82e55f1ca677ed51c11c72dfde Mon Sep 17 00:00:00 2001 From: Max Lv Date: Tue, 5 Dec 2017 22:18:03 +0800 Subject: [PATCH] Fix the release build --- core/build.gradle | 6 ---- mobile/build.gradle | 16 +++++++++ mobile/proguard-rules.pro | 15 ++++++-- .../github/shadowsocks/QuickToggleShortcut.kt | 3 +- .../github/shadowsocks/bg/LocalDnsService.kt | 34 ++++++++++--------- 5 files changed, 48 insertions(+), 26 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index b6926779..14541e0e 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -37,12 +37,6 @@ task goBuild(type: Exec) { args "-c", "src/overture/make.bash " + minSdkVersion } -tasks.whenTaskAdded { task -> - if (task.name == 'generateJsonModelDebug') { - task.dependsOn(goBuild) - } -} - dependencies { api project(':plugin') testImplementation "junit:junit:$junitVersion" diff --git a/mobile/build.gradle b/mobile/build.gradle index 85b2195f..e7a911d8 100644 --- a/mobile/build.gradle +++ b/mobile/build.gradle @@ -38,11 +38,15 @@ android { vectorDrawables.useSupportLibrary true resConfigs "fa", "ja", "ko", "ru", "zh-rCN", "zh-rTW" } + signingConfigs { + release + } buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } lintOptions { @@ -53,6 +57,18 @@ android { sourceSets.main.jniLibs.srcDirs += new File(project(':core').projectDir, "src/main/jni/overture") } +def propsFile = rootProject.file('local.properties') +if (propsFile.exists()) { + def props = new Properties() + props.load(new FileInputStream(propsFile)) + android.signingConfigs.release.storeFile = file(props['storeFile']) + android.signingConfigs.release.storePassword = props['storePassword'] + android.signingConfigs.release.keyAlias = props['keyAlias'] + android.signingConfigs.release.keyPassword = props['keyPassword'] +} else { + android.buildTypes.release.signingConfig = null +} + dependencies { implementation project(':core') implementation "com.android.support:customtabs:$supportLibraryVersion" diff --git a/mobile/proguard-rules.pro b/mobile/proguard-rules.pro index a8f06303..7639281b 100644 --- a/mobile/proguard-rules.pro +++ b/mobile/proguard-rules.pro @@ -20,14 +20,25 @@ # hide the original source file name. #-renamesourcefileattribute SourceFile --dontwarn com.google.android.gms.internal.** +-keepattributes *DatabaseField* +-keepattributes *DatabaseTable* +-keepattributes *SerializedName* +-keep class com.j256.** +-keepclassmembers class com.j256.** { *; } +-keep enum com.j256.** +-keepclassmembers enum com.j256.** { *; } +-keep interface com.j256.** +-keepclassmembers interface com.j256.** { *; } +-keep class com.github.shadowsocks.** { *; } -dontwarn com.j256.ormlite.** + +-dontwarn com.google.android.gms.internal.** -dontwarn okhttp3.** -dontwarn okio.** -dontwarn org.xbill.** --keep class com.github.shadowsocks.JniHelper { *; } -dontwarn com.evernote.android.job.gcm.** -dontwarn com.evernote.android.job.util.GcmAvailableHelper + -keep public class com.evernote.android.job.v21.PlatformJobService -keep public class com.evernote.android.job.v14.PlatformAlarmService -keep public class com.evernote.android.job.v14.PlatformAlarmReceiver diff --git a/mobile/src/main/java/com/github/shadowsocks/QuickToggleShortcut.kt b/mobile/src/main/java/com/github/shadowsocks/QuickToggleShortcut.kt index e430c964..e850259e 100644 --- a/mobile/src/main/java/com/github/shadowsocks/QuickToggleShortcut.kt +++ b/mobile/src/main/java/com/github/shadowsocks/QuickToggleShortcut.kt @@ -29,12 +29,11 @@ import android.os.PersistableBundle import android.support.v4.content.pm.ShortcutInfoCompat import android.support.v4.content.pm.ShortcutManagerCompat import android.support.v4.graphics.drawable.IconCompat -import android.support.v7.app.AppCompatActivity import com.github.shadowsocks.App.Companion.app import com.github.shadowsocks.aidl.IShadowsocksService import com.github.shadowsocks.bg.BaseService -class QuickToggleShortcut : AppCompatActivity(), ShadowsocksConnection.Interface { +class QuickToggleShortcut : Activity(), ShadowsocksConnection.Interface { override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { super.onCreate(savedInstanceState, persistentState) if (intent.action == Intent.ACTION_CREATE_SHORTCUT) { diff --git a/mobile/src/main/java/com/github/shadowsocks/bg/LocalDnsService.kt b/mobile/src/main/java/com/github/shadowsocks/bg/LocalDnsService.kt index e7d86115..a7494d08 100644 --- a/mobile/src/main/java/com/github/shadowsocks/bg/LocalDnsService.kt +++ b/mobile/src/main/java/com/github/shadowsocks/bg/LocalDnsService.kt @@ -46,6 +46,23 @@ object LocalDnsService { super.startNativeProcesses() val profile = data.profile!! + fun makeDns(name: String, address: String, edns: Boolean = true): JSONObject { + val dns = JSONObject() + .put("Name", name) + .put("Address", (when (address.parseNumericAddress()) { + is Inet6Address -> "[$address]" + else -> address + }) + ":53") + .put("Timeout", 6) + .put("EDNSClientSubnet", JSONObject().put("Policy", "disable")) + if (edns) dns + .put("Protocol", "tcp") + .put("Socks5Address", "127.0.0.1:" + DataStore.portProxy) + else dns.put("Protocol", "udp") + + return dns + } + fun buildOvertureConfig(file: String): String { val config = JSONObject() .put("BindAddress", "127.0.0.1:" + DataStore.portLocalDns) @@ -54,23 +71,8 @@ object LocalDnsService { .put("HostsFile", "hosts") .put("MinimumTTL", 3600) .put("CacheSize", 4096) - fun makeDns(name: String, address: String, edns: Boolean = true) = { - val dns = JSONObject() - .put("Name", name) - .put("Address", (when (address.parseNumericAddress()) { - is Inet6Address -> "[$address]" - else -> address - }) + ":53") - .put("Timeout", 6) - .put("EDNSClientSubnet", JSONObject().put("Policy", "disable")) - if (edns) dns - .put("Protocol", "tcp") - .put("Socks5Address", "127.0.0.1:" + DataStore.portProxy) - else dns.put("Protocol", "udp") - dns - } val remoteDns = JSONArray(profile.remoteDns.split(",") - .mapIndexed { i, dns -> makeDns("UserDef-" + i, dns.trim())() }) + .mapIndexed { i, dns -> makeDns("UserDef-" + i, dns.trim()) }) val localDns = JSONArray(arrayOf( makeDns("Primary-1", "119.29.29.29", false), makeDns("Primary-2", "114.114.114.114", false)