From 0997a43a0da5c65e5dc26be40b2fa1c40b66c04a Mon Sep 17 00:00:00 2001 From: cyh Date: Thu, 12 Sep 2024 11:25:49 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../yingmao/clash/act/ChangeNodeActivity.kt | 7 +- .../com/yingmao/clash/act/MainActivity.kt | 7 +- .../com/yingmao/clash/act/NewMainActivity.kt | 6 +- .../com/yingmao/clash/act/SettingActivity.kt | 118 ++++++++++ .../yingmao/clash/fragment/NewAccFragment.kt | 10 +- .../fragment/recharge/RechargeFragment.kt | 28 +-- .../java/com/yingmao/clash/util/AESUtil.java | 32 +++ app/src/main/res/layout/activity_setting.xml | 31 +++ build.gradle.kts | 202 ++++++++++++++++-- 10 files changed, 399 insertions(+), 43 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3219051..6d8d329 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -124,6 +124,7 @@ android:screenOrientation="portrait" /> $pu") com.yingmao.clash.common.log.Log.d("gogogogogo") if (isDelete) { + com.yingmao.clash.common.log.Log.d("gogogogogo isDelete") profileManager.delete(pu) // setSub2(profileManager, NewMainActivity.subUrl) setSub2(profileManager, NewMainActivity.subUrl) } else { + com.yingmao.clash.common.log.Log.d("gogogogogo update") + profileManager.setActive(pro) + delay(500) profileManager.update(pu) } com.yingmao.clash.common.log.Log.d("gogogogogo end") @@ -245,11 +249,8 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener { var newDatas=mutableListOf(); group?.proxies?.forEach { proxy -> Log.d("node==>${proxy}") - if (currentNode?.isNotEmpty() == true) { - for (nodeItem:ClashNodebBean in currentNode!!){ - if (nodeItem.name==proxy.name){ if (proxy.name!="自动选择"){ nodeItem.delay=proxy.delay; diff --git a/app/src/main/java/com/yingmao/clash/act/MainActivity.kt b/app/src/main/java/com/yingmao/clash/act/MainActivity.kt index 73c3c15..2e72aec 100644 --- a/app/src/main/java/com/yingmao/clash/act/MainActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/MainActivity.kt @@ -135,25 +135,20 @@ class MainActivity : BaseActivity() { // } profileBinder?.let { pm -> - val active = pm.queryActive() - if (active == null) { com.yingmao.clash.common.log.Log.d("startClash: 未选择") val pro = pm.queryAll().find { it.name == Conf.getClashConfName(this@MainActivity.applicationContext) } - pro?.let { profile -> com.yingmao.clash.common.log.Log.d("new setactive name " + profile.name) pm.setActive(profile) - newUuid = profile.uuid.toString(); isSubed = true - var selected_name = MMKV.defaultMMKV() - .decodeString(BZYConstants.NODE_SELECTED_NAME_KEY, "")!! + .decodeString(BZYConstants.NODE_SELECTED_NAME_KEY, "") } delay(500) diff --git a/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt b/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt index 35802d0..8800e88 100644 --- a/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt @@ -124,7 +124,6 @@ class NewMainActivity : BaseActivity() { var isUpload: Boolean = false var hostsMem: ArrayList = ArrayList() - } val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") @@ -978,7 +977,6 @@ class NewMainActivity : BaseActivity() { Log.d("setSub2 delete ==>${itemPro.name}") pm.delete(itemPro.uuid) } - } val pro = pm.queryActive() @@ -987,7 +985,9 @@ class NewMainActivity : BaseActivity() { var actname = it.name com.yingmao.clash.common.log.Log.d("new main actname==>" + actname) Log.d("setSub2 pro 已存在 ==>" + Gson().toJson(pro)) -// pm.setActive(it) + pm.setActive(it) + delay(500) + pm.update(it.uuid) newUuid = pro.uuid.toString(); isSubed = true Log.d("setSub2 setActive end") diff --git a/app/src/main/java/com/yingmao/clash/act/SettingActivity.kt b/app/src/main/java/com/yingmao/clash/act/SettingActivity.kt index c00a29a..c6e03ca 100644 --- a/app/src/main/java/com/yingmao/clash/act/SettingActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/SettingActivity.kt @@ -2,13 +2,29 @@ package com.yingmao.clash.act import android.content.Intent import android.os.Bundle +import android.text.TextUtils import android.view.View import android.widget.TextView +import com.google.gson.Gson import com.tencent.mmkv.MMKV import com.yingmao.clash.R +import com.yingmao.clash.act.NewMainActivity.Companion.isSubed +import com.yingmao.clash.act.NewMainActivity.Companion.newUuid +import com.yingmao.clash.act.NewMainActivity.Companion.profileBinder +import com.yingmao.clash.app.MainApplication import com.yingmao.clash.base.BaseActivity +import com.yingmao.clash.common.log.Log import com.yingmao.clash.conf.BZYConstants +import com.yingmao.clash.conf.Conf +import com.yingmao.clash.service.model.Profile +import com.yingmao.clash.service.remote.IProfileManager +import com.yingmao.clash.view.RxToast +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import java.util.UUID class SettingActivity : BaseActivity() { @@ -42,6 +58,27 @@ class SettingActivity : BaseActivity() { intent.putExtra(BZYConstants.EXTRA_KEY_AGREEMENT, BZYConstants.EXTRA_USER_AGREEMENT) startActivity(intent) } + findViewById(R.id.ll_chushihua).setOnClickListener { + + if (TextUtils.isEmpty(NewMainActivity.subUrl)){ + return@setOnClickListener + } + showLoading("正在修复中...", this@SettingActivity) + + launch(Dispatchers.IO) { + NewMainActivity.profileBinder?.let { pm -> + pm.queryAll().forEach { profile -> + Log.d("setting profile delete ==>${profile.name}") + pm.delete(profile.uuid) + } + delay(1000) + if (NewMainActivity.subUrl?.isNotEmpty() == true) { + startTimer() + setSub2(NewMainActivity.subUrl!!,pm); + } + } + } + } } override fun onResume() { @@ -54,5 +91,86 @@ class SettingActivity : BaseActivity() { } } + public suspend fun setSub2(url: String, pm: IProfileManager) { + com.yingmao.clash.common.log.Log.d("setSub2 2") + pm.queryAll().forEach { itemPro -> + if (itemPro.name != Conf.getClashConfName(MainApplication.getApp())) { + Log.d("setSub2 delete ==>${itemPro.name}") + pm.delete(itemPro.uuid) + } + } + val pro = pm.queryActive() + + com.yingmao.clash.common.log.Log.d("setSub2 4") + pro?.let { + var actname = it.name + com.yingmao.clash.common.log.Log.d("new main actname==>" + actname) +// Log.d("setSub2 pro 已存在 ==>" + Gson().toJson(pro)) + pm.setActive(it) + newUuid = pro.uuid.toString(); + isSubed = true + Log.d("setSub2 setActive end") + finishInit() + } ?: run { + var uuid: UUID = pm.create( + Profile.Type.Url, Conf.getClashConfName(MainApplication.getApp()) + ) + delay(500) + pm.queryByUUID(uuid)?.let { qPro -> + pm.setActive(qPro) + pm.patch( + qPro.uuid, qPro.name, +// "https://mojie0201.xn--8stx8olrwkucjq3b.com/api/v1/client/subscribe?token=169110d2674c49604b7e5b5cea341579", +// "https://www.otcopusapp.cc/lx3af288h5i8pz380/api/v1/client/subscribe?token=d6bc98c7ea53099fa5bd1a3ea415ebb6", +// "https://reg.bazhuayujiasu.cc/api/v1/client/subscribe?token=7f0f025ab341bcec4822d2c90aadf8b0", + url, 1800000L + ) +// coroutineScope { + pm.commit(qPro.uuid) { status -> + android.util.Log.d( + Conf.TAG, + "new updateStatus: " + Gson().toJson(status.args) + ", pro==>" + status.progress + ) + } + newUuid = qPro.uuid.toString(); + isSubed = true +// } + } + finishInit() + + } + } + + private fun finishInit() { + timerJob?.cancel() + + runOnUiThread { + hideLoading() + RxToast.info("修复完成.如果问题还未修复请联系客服.") + } + + } + + private fun errInit(){ + runOnUiThread { + hideLoading() + RxToast.error("修复超时.请关闭App后重新再试.") + } + } + + private var timerJob: Job? = null + var GetNodeTimeOutNum = 5; + private fun startTimer() { + GetNodeTimeOutNum = 5 + timerJob = launch { + repeat(5) { + GetNodeTimeOutNum-- + Log.d("GetNodeTimeOutNum==>$GetNodeTimeOutNum") + delay(1000) + } + + errInit() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/fragment/NewAccFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/NewAccFragment.kt index 8ce8dc2..bbbd7d8 100644 --- a/app/src/main/java/com/yingmao/clash/fragment/NewAccFragment.kt +++ b/app/src/main/java/com/yingmao/clash/fragment/NewAccFragment.kt @@ -195,11 +195,11 @@ class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatch // tv_proxy_model.text = "智能模式" // } com.yingmao.clash.common.log.Log.d("clashRunning==>$clashRunning") -// if (clashRunning) { -// stateChanged(Clash_Started, false) -// } else { -// stateChanged(Clash_Stop, false) -// } + if (clashRunning) { + stateChanged(Clash_Started, false) + } else { + stateChanged(Clash_Stop, false) + } } } diff --git a/app/src/main/java/com/yingmao/clash/fragment/recharge/RechargeFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/recharge/RechargeFragment.kt index a1abe87..2468001 100644 --- a/app/src/main/java/com/yingmao/clash/fragment/recharge/RechargeFragment.kt +++ b/app/src/main/java/com/yingmao/clash/fragment/recharge/RechargeFragment.kt @@ -23,9 +23,9 @@ import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.customview.getCustomView import com.chad.library.adapter.base.BaseQuickAdapter -import com.google.zxing.BarcodeFormat -import com.google.zxing.MultiFormatWriter -import com.journeyapps.barcodescanner.BarcodeEncoder +//import com.google.zxing.BarcodeFormat +//import com.google.zxing.MultiFormatWriter +//import com.journeyapps.barcodescanner.BarcodeEncoder import com.orhanobut.logger.Logger import com.tencent.mmkv.MMKV import com.yingmao.clash.R @@ -466,23 +466,23 @@ class RechargeFragment : BaseFragment() { val ivQr = getCustomView().findViewById(R.id.iv_qr) - val writer = MultiFormatWriter() - val matrix = writer.encode(url, BarcodeFormat.QR_CODE, 300, 300) - val encoder = BarcodeEncoder() - val bitmap = encoder.createBitmap(matrix) - ivQr.setImageBitmap(bitmap) +// val writer = MultiFormatWriter() +// val matrix = writer.encode(url, BarcodeFormat.QR_CODE, 300, 300) +// val encoder = BarcodeEncoder() +// val bitmap = encoder.createBitmap(matrix) +// ivQr.setImageBitmap(bitmap) getCustomView().findViewById(R.id.tv_pay_finish).setOnClickListener { showLoadingDialog("正在查询支付结果...") viewModel.codePayStatus(outTradeNo) } - getCustomView().findViewById(R.id.tv_pay_cancle).setOnClickListener { - if (bitmap != null && !bitmap.isRecycled) { - bitmap.recycle() - dismiss() - } - } +// getCustomView().findViewById(R.id.tv_pay_cancle).setOnClickListener { +// if (bitmap != null && !bitmap.isRecycled) { +// bitmap.recycle() +// dismiss() +// } +// } } } } else { 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 62ef21e..cd51282 100644 --- a/app/src/main/java/com/yingmao/clash/util/AESUtil.java +++ b/app/src/main/java/com/yingmao/clash/util/AESUtil.java @@ -389,6 +389,38 @@ public class AESUtil { return null; } + /** + * AES 解密操作 + * + * @param content 密文 + * @return 明文 + */ + public static String Registerdecrypt(String content,String key,String iv) { + + try { + //创建密码器 + Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); + + //密码key + SecretKeySpec keySpec = new SecretKeySpec(key.getBytes("utf-8"), KEY_ALGORITHM); + + //向量iv + IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes("utf-8")); + + //初始化为解密模式的密码器 + cipher.init(Cipher.DECRYPT_MODE, keySpec, ivParameterSpec); + + //执行操作 + byte[] result = cipher.doFinal(hexStringToBytes(content)); + + return new String(result, "utf-8"); + } catch (Exception ex) { + ex.printStackTrace(); + } + + return null; + } + /** * 反射获取 getSubscriberId ,既imsi * diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index 1a56a29..00fcd78 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -164,8 +164,39 @@ android:layout_marginLeft="@dimen/dp_10" android:src="@drawable/ic_s_arrow_right" /> + + + + + + diff --git a/build.gradle.kts b/build.gradle.kts index 8c9af24..000bdec 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -51,8 +51,8 @@ subprojects { minSdk = 21 //noinspection ExpiredTargetSdkVersion targetSdk = 31 - versionName = "1.0.1.6" - versionCode = 1016 + versionName = "1.0.1.8" + versionCode = 1018 resValue("string", "release_name", "v$versionName") resValue("integer", "release_code", "$versionCode") externalNativeBuild { @@ -176,7 +176,7 @@ subprojects { 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.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "productId", "\"9586\"") @@ -186,6 +186,7 @@ subprojects { ) ) } + create("9707") { isDefault = true dimension = flavorDimensionList[0] @@ -208,6 +209,28 @@ subprojects { ) ) } + create("9686") { + 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:18001\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("boolean", "is_free", "false") + buildConfigField("String", "productId", "\"9686\"") + + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } create("6789") { isDefault = true dimension = flavorDimensionList[0] @@ -219,7 +242,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"6789\"") manifestPlaceholders( mapOf( @@ -246,6 +269,27 @@ subprojects { ) ) } + + create("5352") { + 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("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"5352\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } + create("9583") { isDefault = true dimension = flavorDimensionList[0] @@ -257,7 +301,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"9583\"") manifestPlaceholders( mapOf( @@ -276,6 +320,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"9972\"") manifestPlaceholders( @@ -284,7 +329,101 @@ subprojects { ) ) } + create("3307") { + 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("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"3307\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } + create("1588") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "true") + buildConfigField("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"1588\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } + create("1595") { + isDefault = true + dimension = flavorDimensionList[0] + buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + + buildConfigField("boolean", "is_back_cn", "false") + buildConfigField("boolean", "is_ym", "true") + buildConfigField("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"1595\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } + create("1979") { + 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("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"1979\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } + + create("9059") { + 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("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") +// buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"9059\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } create("6507") { isDefault = true dimension = flavorDimensionList[0] @@ -296,7 +435,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"6507\"") manifestPlaceholders( mapOf( @@ -305,6 +444,26 @@ subprojects { ) } + create("6193") { + 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("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"6193\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } + create("6886") { isDefault = true dimension = flavorDimensionList[0] @@ -316,7 +475,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"6886\"") manifestPlaceholders( mapOf( @@ -336,7 +495,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"6159\"") manifestPlaceholders( mapOf( @@ -344,7 +503,25 @@ subprojects { ) ) } - + create("1608") { + 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("boolean", "is_free", "false") + buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") + buildConfigField("String", "productId", "\"1608\"") + manifestPlaceholders( + mapOf( + "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" + ) + ) + } create("182242") { isDefault = true dimension = flavorDimensionList[0] @@ -356,7 +533,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"182242\"") manifestPlaceholders( mapOf( @@ -422,7 +599,7 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") + buildConfigField("String", "service_url", "\"https://api.ymvpnpro.cc:18002\"") buildConfigField("String", "productId", "\"22222\"") manifestPlaceholders( mapOf( @@ -442,7 +619,8 @@ subprojects { buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") - buildConfigField("String", "service_url", "\"https://113.108.210.50:21002\"") +// buildConfigField("String", "service_url", "\"https://113.108.210.50:21002\"") + buildConfigField("String", "service_url", "\"https://test.yingmaox.cc:21002\"") buildConfigField("String", "productId", "\"0000\"") manifestPlaceholders( mapOf(