From a6a429f9f01a6979aeb19e1c5b2295714a0c87f8 Mon Sep 17 00:00:00 2001 From: cyh Date: Mon, 21 Oct 2024 14:38:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=87=E7=94=A8=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E6=96=87=E4=BB=B6=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 4 + .../com/yingmao/clash/act/LoginActivity.kt | 2 +- .../com/yingmao/clash/act/SplashActivity.kt | 11 +- .../com/yingmao/clash/base/BaseActivity.kt | 43 ++ .../com/yingmao/clash/net/http/HttpApi.kt | 4 +- .../com/yingmao/clash/net/http/NetService.kt | 2 +- .../java/com/yingmao/clash/util/AESUtil.java | 1 + .../main/java/com/yingmao/clash/util/Utils.kt | 37 -- .../java/com/yingmao/clash/vm/SplashAtyVM.kt | 17 +- build.gradle.kts | 439 ++++++++++++++---- 10 files changed, 423 insertions(+), 137 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 92ff46f..e4f9f44 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -104,6 +104,10 @@ dependencies { implementation("com.github.bumptech.glide:glide:4.13.2") // implementation("com.luozm.captcha:captcha:1.1.2") implementation("com.aliyun.dpa:oss-android-sdk:2.9.19") + + + + } tasks.getByName("clean", type = Delete::class) { diff --git a/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt b/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt index 8876a2e..273d972 100644 --- a/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt @@ -145,7 +145,7 @@ class LoginActivity : BaseActivity(), View.OnClickListener { override fun httpFailure(httpStatus: HttpStatus.Failure) { super.httpFailure(httpStatus) if (httpStatus.reqType == HttpReqType.LOGIN) { - if (Utils.switchServer()) { + if (super.switchServer()) { loginViewMode.login(username_encrypt, password_encrypt) } else { if (::rxDialogShapeLoading.isInitialized && rxDialogShapeLoading.isShowing) { diff --git a/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt b/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt index 0214223..668237d 100644 --- a/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt @@ -102,6 +102,8 @@ class SplashActivity : BaseActivity() { // } // } + + var clashBinder = MainApplication.getApp()?.let { ClashManager(it).wrap() as IClashManager } @@ -135,6 +137,10 @@ class SplashActivity : BaseActivity() { override fun err() { Log.e("data", "getHost err") + //失败也注册 + MainScope().launch { + isNeedRegister() + } } }) } @@ -256,6 +262,7 @@ class SplashActivity : BaseActivity() { splashAtyVM.register(params) } + @Synchronized fun doRegisterByEncryption() { var req_json = JsonObject() @@ -509,7 +516,7 @@ class SplashActivity : BaseActivity() { HttpReqType.REGISTER -> { com.yingmao.clash.common.log.Log.d("httpFailure HttpReqType.REGISTER") - if (Utils.switchServer()) {//切换服务器并直接重试 + if (super.switchServer()) {//切换服务器并直接重试 // doRegister() doRegisterByEncryption() } else { @@ -548,7 +555,7 @@ class SplashActivity : BaseActivity() { HttpReqType.CHECK_LOGIN -> { com.yingmao.clash.common.log.Log.d("httpFailure HttpReqType.CHECK_LOGIN") - if (Utils.switchServer()) { + if (super.switchServer()) { splashAtyVM.checkLogin() } else { toLoginPage() diff --git a/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt b/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt index 15f5877..b37f13e 100644 --- a/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt +++ b/app/src/main/java/com/yingmao/clash/base/BaseActivity.kt @@ -8,6 +8,7 @@ import android.content.pm.ActivityInfo import android.content.res.Configuration import android.os.Bundle import android.text.TextUtils +import android.util.Log import android.view.View import android.view.ViewGroup import android.view.inputmethod.InputMethodManager @@ -15,8 +16,12 @@ import android.widget.* import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.orhanobut.logger.Logger +import com.tencent.mmkv.MMKV +import com.yingmao.clash.BuildConfig import com.yingmao.clash.R import com.yingmao.clash.act.MainActivity +import com.yingmao.clash.conf.BZYConstants +import com.yingmao.clash.conf.Conf import com.yingmao.clash.core.bridge.ClashException import com.yingmao.clash.core.model.TunnelState //import com.yingmao.clash.design.model.DarkMode @@ -250,4 +255,42 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br baseLoading?.cancel() } } + @Synchronized + fun switchServer(): Boolean { + var isChange = false + val mmkv = MMKV.defaultMMKV() + val originalUrl = + mmkv.decodeString(BZYConstants.MMKV_KEY_CURRENT_HOST, BuildConfig.service_url) + var newUrlString = originalUrl + val routerHost = mmkv.decodeStringSet(BZYConstants.MMKV_KEY_ROUTER_HOST, HashSet()) + routerHost?.let { +// it.forEach { url -> +// com.yingmao.clash.common.log.Log.d("url==>$url") +// } + if (it.isEmpty()) { + Log.d(Conf.TAG, "routerHost isEmpty") + return isChange + } + Log.d(Conf.TAG, "routerHost not empty") + val iterator = it.iterator() + while (iterator.hasNext()) { + val newUrl = iterator.next() + //Log.e("Data", "遍历备用的url:$newUrl") + if (newUrl == originalUrl) { + iterator.remove() + } else { + //Log.e("Retry", "切换到新url:$newUrl") + mmkv.encode(BZYConstants.MMKV_KEY_OLD_CURRENT_HOST, originalUrl) + isChange = true + newUrlString = newUrl + iterator.remove() + break + } + } + mmkv.encode(BZYConstants.MMKV_KEY_ROUTER_HOST, routerHost) + mmkv.encode(BZYConstants.MMKV_KEY_CURRENT_HOST, newUrlString) + } + + return isChange + } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt b/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt index 244faf9..284eafb 100644 --- a/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt +++ b/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt @@ -157,10 +157,10 @@ interface HttpApi { // @GET("/darkSuperman/lazy/blob/master/fire.json") // suspend fun getHost() : String - @GET("/darkSuperman/lazy/raw/master/host.json") + @GET("/host.txt") suspend fun getHost(): String - @GET("/darkSuperman/lazy/raw/master/hostdef.json") + @GET("/hostdef.txt") suspend fun getHostDef(): String // @Headers( diff --git a/app/src/main/java/com/yingmao/clash/net/http/NetService.kt b/app/src/main/java/com/yingmao/clash/net/http/NetService.kt index c206967..48d4cb6 100644 --- a/app/src/main/java/com/yingmao/clash/net/http/NetService.kt +++ b/app/src/main/java/com/yingmao/clash/net/http/NetService.kt @@ -51,7 +51,7 @@ class NetService private constructor() : INetService { fun getCurrentUrl(): String { val hh = if (!BuildConfig.is_back_cn) { -// "https://app.bazhuayujiasu.cc:18001" +// "https://app.bazhuayujiasu1.cc:18001" // "https://api.gaogaoshousoft.cc:18001" // "https://api.yingmaox.cc:8700" // "https://113.108.210.50:21002" diff --git a/app/src/main/java/com/yingmao/clash/util/AESUtil.java b/app/src/main/java/com/yingmao/clash/util/AESUtil.java index cd51282..f47ca6a 100644 --- a/app/src/main/java/com/yingmao/clash/util/AESUtil.java +++ b/app/src/main/java/com/yingmao/clash/util/AESUtil.java @@ -26,6 +26,7 @@ public class AESUtil { public final static String MD5 = "MD5"; public final static String SHA1 = "SHA1"; public final static String SHA256 = "SHA256"; + /** * 返回一个签名的对应类型的字符串 * diff --git a/app/src/main/java/com/yingmao/clash/util/Utils.kt b/app/src/main/java/com/yingmao/clash/util/Utils.kt index 6a7e091..6aa8cf3 100644 --- a/app/src/main/java/com/yingmao/clash/util/Utils.kt +++ b/app/src/main/java/com/yingmao/clash/util/Utils.kt @@ -287,42 +287,5 @@ object Utils { } } - @Synchronized - fun switchServer(): Boolean { - var isChange = false - val mmkv = MMKV.defaultMMKV() - val originalUrl = - mmkv.decodeString(BZYConstants.MMKV_KEY_CURRENT_HOST, BuildConfig.service_url) - var newUrlString = originalUrl - val routerHost = mmkv.decodeStringSet(BZYConstants.MMKV_KEY_ROUTER_HOST, HashSet()) - routerHost?.let { - it.forEach { url -> - com.yingmao.clash.common.log.Log.d("url==>$url") - } - if (it.isEmpty()) { - Log.d(Conf.TAG, "routerHost isEmpty") - return isChange - } - Log.d(Conf.TAG, "routerHost not empty") - val iterator = it.iterator() - while (iterator.hasNext()) { - val newUrl = iterator.next() - //Log.e("Data", "遍历备用的url:$newUrl") - if (newUrl == originalUrl) { - iterator.remove() - } else { - //Log.e("Retry", "切换到新url:$newUrl") - mmkv.encode(BZYConstants.MMKV_KEY_OLD_CURRENT_HOST, originalUrl) - isChange = true - newUrlString = newUrl - iterator.remove() - break - } - } - mmkv.encode(BZYConstants.MMKV_KEY_ROUTER_HOST, routerHost) - mmkv.encode(BZYConstants.MMKV_KEY_CURRENT_HOST, newUrlString) - } - return isChange - } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/vm/SplashAtyVM.kt b/app/src/main/java/com/yingmao/clash/vm/SplashAtyVM.kt index 5c7a4b8..224bd33 100644 --- a/app/src/main/java/com/yingmao/clash/vm/SplashAtyVM.kt +++ b/app/src/main/java/com/yingmao/clash/vm/SplashAtyVM.kt @@ -15,6 +15,8 @@ import com.yingmao.clash.listener.AsyncCallback import com.yingmao.clash.net.http.HttpApi import com.yingmao.clash.net.http.HttpReqType import com.yingmao.clash.net.http.NetService +import com.yingmao.clash.util.AESUtil + import kotlinx.coroutines.Job @@ -40,7 +42,9 @@ class SplashAtyVM : PublicViewMode() { } fun getHost(function: () -> Job) { - val rt = NetService.instances.createFreeBaseUrl("https://gitee.com/") + NetService.instances + val rt = NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") + doAsyncNoNeedReturn(HttpReqType.GET_HOST) { try { //TODO bug 会引起崩溃 val host = if (BuildConfig.is_ym) { @@ -52,7 +56,7 @@ class SplashAtyVM : PublicViewMode() { val hostSet = host.split("+").toSet() MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_ROUTER_HOST, hostSet) } - Log.e("data", "获取到的url1:$host") + } catch (e: Exception) { e.printStackTrace() } @@ -60,23 +64,26 @@ class SplashAtyVM : PublicViewMode() { } fun getHost(callback: AsyncCallback) { - val rt = NetService.instances.createFreeBaseUrl("https://gitee.com/") + val rt = NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") doAsyncNoNeedReturn(HttpReqType.GET_HOST) { try { //TODO bug 会引起崩溃 if (BuildConfig.productId == "182265") { } else { - val host = if (BuildConfig.is_ym) { + + var host = if (BuildConfig.is_ym) { rt.getHost() } else { rt.getHostDef() } + Log.e("data", "2:$host") if (!TextUtils.isEmpty(host)) { + host= AESUtil.decrypt(host) val hostSet = host.split("+").toSet() MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_ROUTER_HOST, hostSet) } - Log.e("data", "2:$host") + Log.e("data", "22:$host") } callback.suc() } catch (e: Exception) { diff --git a/build.gradle.kts b/build.gradle.kts index 947cd58..7769b78 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -51,8 +51,8 @@ subprojects { minSdk = 21 //noinspection ExpiredTargetSdkVersion targetSdk = 31 - versionName = "1.0.2.0" - versionCode = 1020 + versionName = "1.0.2.1" + versionCode = 1021 resValue("string", "release_name", "v$versionName") resValue("integer", "release_code", "$versionCode") externalNativeBuild { @@ -101,90 +101,48 @@ subprojects { ) ) } - //八爪鱼 - create("182227") { - isDefault = true - dimension = flavorDimensionList[0] - buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") - if (isApp) { -// applicationIdSuffix = ".meta" - } - buildConfigField("boolean", "is_free", "false") - buildConfigField("boolean", "is_back_cn", "false") - buildConfigField("boolean", "is_ym", "false") - buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") - buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") - buildConfigField("String", "productId", "\"182227\"") - manifestPlaceholders( - mapOf( - "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" - ) - ) - } - create("182250") { - isDefault = true - dimension = flavorDimensionList[0] - buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") - if (isApp) { -// applicationIdSuffix = ".meta" - } - buildConfigField("boolean", "is_free", "false") - buildConfigField("boolean", "is_back_cn", "false") - buildConfigField("boolean", "is_ym", "false") - buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") - buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") - buildConfigField("String", "productId", "\"182250\"") - manifestPlaceholders( - mapOf( - "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" - ) - ) - } - create("182256") { - isDefault = true - dimension = flavorDimensionList[0] - buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") - if (isApp) { -// applicationIdSuffix = ".meta" - } - buildConfigField("boolean", "is_free", "false") - buildConfigField("boolean", "is_back_cn", "false") - buildConfigField("boolean", "is_ym", "false") - buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") - buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") - buildConfigField("String", "productId", "\"182256\"") - manifestPlaceholders( - mapOf( - "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" - ) - ) - } - create("182251") { - isDefault = true - dimension = flavorDimensionList[0] - buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") - if (isApp) { -// applicationIdSuffix = ".meta" - } - buildConfigField("boolean", "is_free", "false") - buildConfigField("boolean", "is_back_cn", "false") - buildConfigField("boolean", "is_ym", "false") - buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") - buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") - buildConfigField("String", "productId", "\"182251\"") - manifestPlaceholders( - mapOf( - "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" - ) - ) - } //影猫 + create("6768") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + if (isApp) { + } + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "true") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:8700\"") + buildConfigField("boolean", "is_free", "false") + buildConfigField("String", "productId", "\"6768\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } + create("2256") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + if (isApp) { +// applicationIdSuffix = ".meta" + } + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "true") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:8700\"") + buildConfigField("boolean", "is_free", "false") + buildConfigField("String", "productId", "\"2256\"") + + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } create("9586") { isDefault = true dimension = flavorDimensionList[0] @@ -195,7 +153,7 @@ subprojects { buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:8700\"") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "productId", "\"9586\"") @@ -218,7 +176,7 @@ subprojects { buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:8700\"") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "productId", "\"9707\"") @@ -240,7 +198,7 @@ subprojects { buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:8700\"") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "productId", "\"9686\"") @@ -619,6 +577,309 @@ subprojects { ) ) } + //八爪鱼 182227 182250 182256 182251 + create("182227") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + if (isApp) { +// applicationIdSuffix = ".meta" + } + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182227\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182250") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + if (isApp) { +// applicationIdSuffix = ".meta" + } + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182250\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182256") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + if (isApp) { +// applicationIdSuffix = ".meta" + } + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182256\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + + create("182251") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + if (isApp) { +// applicationIdSuffix = ".meta" + } + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182251\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182258") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182258\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("11111") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"11111\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182254") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182254\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182223") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182223\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182222") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182222\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182257") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182257\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182225") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182225\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182224") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182224\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182226") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182226\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182261") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182261\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + + create("182221") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182221\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182228") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182228\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } + create("182253") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") + buildConfigField("String", "productId", "\"182253\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" + ) + ) + } //太子 182265 @@ -633,7 +894,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") buildConfigField("String", "service_url", "\"https://api.otcopusvpn.cc:18008\"") buildConfigField("String", "productId", "\"182265\"") manifestPlaceholders( @@ -656,8 +917,8 @@ subprojects { buildConfigField("boolean", "is_ym", "false") buildConfigField("boolean", "is_free", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") -// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") - buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") +// buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:8700\"") + buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:8700\"") buildConfigField("String", "productId", "\"22222\"") manifestPlaceholders( mapOf(