agent-bigo/app/src/main/java/com/example/studyapp/update/UpdateUtil.kt

318 lines
17 KiB
Kotlin
Raw Normal View History

2025-07-08 22:01:28 +08:00
package com.example.studyapp.update
import android.util.Log
2025-07-09 18:03:30 +08:00
import com.example.studyapp.task.AfInfo
import com.example.studyapp.task.BigoInfo
import com.example.studyapp.task.DeviceInfo
import com.example.studyapp.task.TaskUtil
2025-07-08 22:01:28 +08:00
import com.example.studyapp.utils.ShellUtils
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
object UpdateUtil {
2025-07-10 10:50:27 +08:00
val scope = CoroutineScope(Dispatchers.IO)
fun changeDevice(
recordPackageName: String,
bigoDeviceObject: JSONObject?,
afDeviceObject: JSONObject?,
time: String,
callback: ChangeCallBack
) {
2025-07-08 22:01:28 +08:00
try {
val padCode = ShellUtils.execRootCmdAndGetResult("getprop ro.boot.pad_code")
Log.d("TAG", "changeDevice: $padCode")
val jsonObject = JSONObject().apply {
put("padCodes", JSONArray().apply {
put(padCode)
})
}
var timeZone: String = ""
bigoDeviceObject?.apply {
2025-07-09 18:03:30 +08:00
2025-07-08 22:01:28 +08:00
val cpuClockSpeed: String = bigoDeviceObject.optString("cpu_clock_speed")
val gaid: String = bigoDeviceObject.optString("gaid")
val userAgent: String = bigoDeviceObject.optString("User-Agent")
val osLang: String = bigoDeviceObject.optString("os_lang")
val osVer: String = bigoDeviceObject.optString("os_ver")
timeZone = bigoDeviceObject.optString("tz")
val systemCountry: String = bigoDeviceObject.optString("system_country")
val simCountry: String = bigoDeviceObject.optString("sim_country")
val romFreeIn: Long = bigoDeviceObject.optLong("rom_free_in")
val resolution: String = bigoDeviceObject.optString("resolution")
val vendor: String = bigoDeviceObject.optString("vendor")
val batteryScale: Int = bigoDeviceObject.optInt("bat_scale")
val net: String = bigoDeviceObject.optString("net")
val dpi: Int = bigoDeviceObject.optInt("dpi")
val romFreeExt: Long = bigoDeviceObject.optLong("rom_free_ext")
val dpiF: String = bigoDeviceObject.optString("dpi_f")
val cpuCoreNum: Int = bigoDeviceObject.optInt("cpu_core_num")
2025-07-09 18:03:30 +08:00
val bigoDevice = BigoInfo()
bigoDevice.cpuClockSpeed = cpuClockSpeed
bigoDevice.gaid = gaid
bigoDevice.userAgent = userAgent
bigoDevice.osLang = osLang
bigoDevice.osVer = osVer
bigoDevice.tz = timeZone
bigoDevice.systemCountry = systemCountry
bigoDevice.simCountry = simCountry
bigoDevice.romFreeIn = romFreeIn
bigoDevice.resolution = resolution
bigoDevice.vendor = vendor
bigoDevice.batteryScale = batteryScale
bigoDevice.net = net
bigoDevice.dpi = dpi.toLong()
bigoDevice.romFreeExt = romFreeExt
bigoDevice.dpiF = dpiF
bigoDevice.cpuCoreNum = cpuCoreNum.toLong()
TaskUtil.setBigoDevice(bigoDevice)
2025-07-08 22:01:28 +08:00
}
afDeviceObject?.apply {
val advertiserId = afDeviceObject.optString(".advertiserId")
val model = afDeviceObject.optString(".model")
val brand = afDeviceObject.optString(".brand")
val androidId = afDeviceObject.optString(".android_id")
val xPixels = afDeviceObject.optInt(".deviceData.dim.x_px")
val yPixels = afDeviceObject.optInt(".deviceData.dim.y_px")
val densityDpi = afDeviceObject.optInt(".deviceData.dim.d_dpi")
val country = afDeviceObject.optString(".country")
val batteryLevel = afDeviceObject.optString(".batteryLevel")
val stackInfo = Thread.currentThread().getStackTrace()[2].toString()
val product = afDeviceObject.optString(".product")
val network = afDeviceObject.optString(".network")
val langCode = afDeviceObject.optString(".lang_code")
val cpuAbi = afDeviceObject.optString(".deviceData.cpu_abi")
val yDp = afDeviceObject.optInt(".deviceData.dim.ydp")
val lang = afDeviceObject.optString(".lang")
val ro_product_brand = afDeviceObject.optString("ro.product.brand", "")
val ro_product_model = afDeviceObject.optString("ro.product.model", "")
val ro_product_manufacturer =
afDeviceObject.optString("ro.product.manufacturer", "")
val ro_product_device = afDeviceObject.optString("ro.product.device", "")
val ro_product_name = afDeviceObject.optString("ro.product.name", "")
val ro_build_version_incremental =
afDeviceObject.optString("ro.build.version.incremental", "")
val ro_build_fingerprint = afDeviceObject.optString("ro.build.fingerprint", "")
val ro_odm_build_fingerprint =
afDeviceObject.optString("ro.odm.build.fingerprint", "")
val ro_product_build_fingerprint =
afDeviceObject.optString("ro.product.build.fingerprint", "")
val ro_system_build_fingerprint =
afDeviceObject.optString("ro.system.build.fingerprint", "")
val ro_system_ext_build_fingerprint =
afDeviceObject.optString("ro.system_ext.build.fingerprint", "")
val ro_vendor_build_fingerprint =
afDeviceObject.optString("ro.vendor.build.fingerprint", "")
val ro_build_platform = afDeviceObject.optString("ro.board.platform", "")
val persist_sys_cloud_drm_id =
afDeviceObject.optString("persist.sys.cloud.drm.id", "")
val persist_sys_cloud_battery_capacity =
afDeviceObject.optInt("persist.sys.cloud.battery.capacity", -1)
val persist_sys_cloud_gpu_gl_vendor =
afDeviceObject.optString("persist.sys.cloud.gpu.gl_vendor", "")
val persist_sys_cloud_gpu_gl_renderer =
afDeviceObject.optString("persist.sys.cloud.gpu.gl_renderer", "")
val persist_sys_cloud_gpu_gl_version =
afDeviceObject.optString("persist.sys.cloud.gpu.gl_version", "")
val persist_sys_cloud_gpu_egl_vendor =
afDeviceObject.optString("persist.sys.cloud.gpu.egl_vendor", "")
val persist_sys_cloud_gpu_egl_version =
afDeviceObject.optString("persist.sys.cloud.gpu.egl_version", "")
val global_android_id = afDeviceObject.optString(".android_id", "")
val anticheck_pkgs = afDeviceObject.optString(".anticheck_pkgs", "")
val pm_list_features = afDeviceObject.optString(".pm_list_features", "")
val pm_list_libraries = afDeviceObject.optString(".pm_list_libraries", "")
val system_http_agent = afDeviceObject.optString("system.http.agent", "")
val webkit_http_agent = afDeviceObject.optString("webkit.http.agent", "")
val com_fk_tools_pkgInfo = afDeviceObject.optString(".pkg_info", "")
val appsflyerKey = afDeviceObject.optString(".appsflyerKey", "")
val appUserId = afDeviceObject.optString(".appUserId", "")
val disk = afDeviceObject.optString(".disk", "")
val operator = afDeviceObject.optString(".operator", "")
val cell_mcc = afDeviceObject.optString(".cell.mcc", "")
val cell_mnc = afDeviceObject.optString(".cell.mnc", "")
val date1 = afDeviceObject.optString(".date1", "")
val date2 = afDeviceObject.optString(".date2", "")
val bootId = afDeviceObject.optString("BootId", "")
2025-07-10 10:50:27 +08:00
if (time.isNotEmpty()){
timeZone = time
}
2025-07-09 18:03:30 +08:00
val afDevice = AfInfo()
afDevice.advertiserId = advertiserId
afDevice.model = model
afDevice.brand = brand
afDevice.androidId = androidId
afDevice.xPixels = xPixels
afDevice.yPixels = yPixels
afDevice.densityDpi = densityDpi
afDevice.country = country
afDevice.batteryLevel = batteryLevel
afDevice.stackInfo = stackInfo
afDevice.product = product
afDevice.network = network
afDevice.langCode = langCode
afDevice.cpuAbi = cpuAbi
afDevice.yDp = yDp.toLong()
TaskUtil.setAfDevice(afDevice)
val deviceInfo = DeviceInfo()
deviceInfo.lang = lang
deviceInfo.roProductBrand = ro_product_brand
deviceInfo.roProductModel = ro_product_model
deviceInfo.roProductManufacturer = ro_product_manufacturer
deviceInfo.roProductDevice = ro_product_device
deviceInfo.roProductName = ro_product_name
deviceInfo.roBuildVersionIncremental = ro_build_version_incremental
deviceInfo.roBuildFingerprint = ro_build_fingerprint
deviceInfo.roOdmBuildFingerprint = ro_odm_build_fingerprint
deviceInfo.roProductBuildFingerprint = ro_product_build_fingerprint
deviceInfo.roSystemBuildFingerprint = ro_system_build_fingerprint
deviceInfo.roSystemExtBuildFingerprint = ro_system_ext_build_fingerprint
deviceInfo.roVendorBuildFingerprint = ro_vendor_build_fingerprint
deviceInfo.roBuildPlatform = ro_build_platform
deviceInfo.persistSysCloudDrmId = persist_sys_cloud_drm_id
deviceInfo.persistSysCloudBatteryCapacity = persist_sys_cloud_battery_capacity
deviceInfo.persistSysCloudGpuGlVendor = persist_sys_cloud_gpu_gl_vendor
deviceInfo.persistSysCloudGpuGlRenderer = persist_sys_cloud_gpu_gl_renderer
deviceInfo.persistSysCloudGpuGlVersion = persist_sys_cloud_gpu_gl_version
deviceInfo.persistSysCloudGpuEglVendor = persist_sys_cloud_gpu_egl_vendor
deviceInfo.persistSysCloudGpuEglVersion = persist_sys_cloud_gpu_egl_version
TaskUtil.setDeviceInfo(deviceInfo)
2025-07-08 22:01:28 +08:00
jsonObject.apply {
put("modemPropertiesList", JSONArray().apply {
put(JSONObject().apply {
put("propertiesName", "MCCMNC")
put("propertiesValue", "${cell_mcc},${cell_mnc}")
})
})
put("systemPropertiesList", JSONArray().apply {
put(JSONObject().apply {
put("propertiesName", "ro.product.manufacturer")
put("propertiesValue", ro_product_manufacturer)
})
put(JSONObject().apply {
put("propertiesName", "ro.product.brand")
put("propertiesValue", ro_product_brand)
})
put(JSONObject().apply {
put("propertiesName", "ro.product.model")
put("propertiesValue", ro_product_model)
})
// put(JSONObject().apply {
// put("propertiesName", "ro.build.display.id")
// put("propertiesValue", )
// })
put(JSONObject().apply {
put("propertiesName", "ro.product.name")
put("propertiesValue", ro_product_name)
})
put(JSONObject().apply {
put("propertiesName", "ro.product.device")
put("propertiesValue", ro_product_device)
})
// put(JSONObject().apply {
// put("propertiesName", "ro.product.board")
// put("propertiesValue", bo)
// })
// put(JSONObject().apply {
// put("propertiesName", "ro.build.tags")
// put("propertiesValue", )
// })
put(JSONObject().apply {
put("propertiesName", "ro.build.fingerprint")
put("propertiesValue", ro_build_fingerprint)
})
// put(JSONObject().apply {
// put("propertiesName", "ro.build.date.utc")
// put("propertiesValue", da)
// })
// put(JSONObject().apply {
// put("propertiesName", "ro.build.user")
// put("propertiesValue", user)
// })
// put(JSONObject().apply {
// put("propertiesName", "ro.build.host")
// put("propertiesValue", device.expand.)
// })
// put(JSONObject().apply {
// put("propertiesName", "ro.build.description")
// put("propertiesValue", des)
// })
put(JSONObject().apply {
put("propertiesName", "ro.build.version.incremental")
put("propertiesValue", ro_build_version_incremental)
})
// put(JSONObject().apply {
// put("propertiesName", "ro.build.version.codename")
// put("propertiesValue", device.cod)
// })
})
put("settingPropertiesList", JSONArray().apply {
put(JSONObject().apply {
put("propertiesName", "ssaid/${recordPackageName}")
put("propertiesValue", androidId)
})
// put(JSONObject().apply {
// put("propertiesName", "bt/mac")
// put("propertiesValue", mac)
// })
put(JSONObject().apply {
put("propertiesName", "language")
put("propertiesValue", langCode)
})
put(JSONObject().apply {
put("propertiesName", "timezone")
put("propertiesValue", timeZone)
})
// put(JSONObject().apply {
// put("propertiesName", "systemvolume")
// put("propertiesValue", device.expand.)
// })
})
put("oaidPropertiesList", JSONArray().apply {
put(JSONObject().apply {
put("propertiesName", "AAID")
put("propertiesValue", advertiserId)
})
})
}
}
val jsonString = jsonObject.toString()
val response = Api.updatePad(jsonString)
val dataList = response.data
2025-07-10 10:50:27 +08:00
if (response.isSuccess() && dataList != null && dataList.isNotEmpty()) {
2025-07-08 22:01:28 +08:00
val padTask = dataList[0]
scope.launch {
Log.d("TAG", "changeDevice: $padTask")
2025-07-10 10:50:27 +08:00
var loop = true
2025-07-08 22:01:28 +08:00
while (loop) {
delay(5000)
val result = Api.padTaskDetail(padTask.taskId)
if (result == 3) {
2025-07-10 10:50:27 +08:00
Log.d(
"ChangeDeviceInfoUtil",
"changeDeviceInfo changeDeviceInfo success"
)
2025-07-08 22:01:28 +08:00
loop = false
callback.changeSuccess()
} else if (result == -1) {
Log.d("ChangeDeviceInfoUtil", "changeDeviceInfo changeDeviceInfo fail")
loop = false
callback.changeFailed()
}
}
}
}
} catch (e: JSONException) {
e.printStackTrace()
2025-07-09 14:58:30 +08:00
callback.changeFailed()
2025-07-08 22:01:28 +08:00
}
}
}