add 初始化修复

This commit is contained in:
cyh 2024-09-12 11:25:49 +08:00
parent b8747254e8
commit 0997a43a0d
10 changed files with 399 additions and 43 deletions

View File

@ -124,6 +124,7 @@
android:screenOrientation="portrait" />
<activity
android:name=".act.SettingActivity"
android:process=":background"
android:screenOrientation="portrait" />
<activity
android:name=".act.ProxyModeActivity"

View File

@ -176,10 +176,14 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
com.yingmao.clash.common.log.Log.d("ChangeNode22 uuid==>$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<ClashNodebBean>();
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;

View File

@ -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)

View File

@ -124,7 +124,6 @@ class NewMainActivity : BaseActivity() {
var isUpload: Boolean = false
var hostsMem: ArrayList<String> = 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")

View File

@ -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<View>(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()
}
}
}

View File

@ -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)
}
}
}

View File

@ -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<ImageView>(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<TextView>(R.id.tv_pay_finish).setOnClickListener {
showLoadingDialog("正在查询支付结果...")
viewModel.codePayStatus(outTradeNo)
}
getCustomView().findViewById<TextView>(R.id.tv_pay_cancle).setOnClickListener {
if (bitmap != null && !bitmap.isRecycled) {
bitmap.recycle()
dismiss()
}
}
// getCustomView().findViewById<TextView>(R.id.tv_pay_cancle).setOnClickListener {
// if (bitmap != null && !bitmap.isRecycled) {
// bitmap.recycle()
// dismiss()
// }
// }
}
}
} else {

View File

@ -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
*

View File

@ -164,8 +164,39 @@
android:layout_marginLeft="@dimen/dp_10"
android:src="@drawable/ic_s_arrow_right" />
</LinearLayout>
<View
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:background="@color/white_50"
android:layout_width="match_parent"
android:layout_height="1dp"/>
<LinearLayout
android:id="@+id/ll_chushihua"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingRight="30dp"
android:paddingLeft="30dp"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="初始化修复"
android:textColor="@color/text_yellow"
android:textSize="15sp"
android:textStyle="bold" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="@dimen/dp_10"
android:src="@drawable/ic_s_arrow_right" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@ -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(