Merge branch 'dev_robotaxi-d_240912_6.7.0' of gitlab.zhidaoauto.com:SCA/L4HA/AndroidApp/MoGoEagleEye into dev_robotaxi-d_240912_6.7.0
This commit is contained in:
@@ -92,16 +92,7 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
|
||||
CallerLogger.d(TAG, "init")
|
||||
|
||||
context?.let {
|
||||
val videoUrl:String
|
||||
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_taxi_start)
|
||||
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_taxi_start)
|
||||
videoUrl = "android.resource://" + it.packageName + "/" + R.raw.biz_login_taxi_bg
|
||||
}else{
|
||||
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_bus_start)
|
||||
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_start)
|
||||
videoUrl = "android.resource://" + it.packageName + "/" + R.raw.biz_login_bus_bg
|
||||
}
|
||||
|
||||
Debuger.enable()
|
||||
|
||||
biz_login_svp.setIsTouchWiget(false)
|
||||
@@ -109,66 +100,7 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
|
||||
biz_login_svp.enableshowProgressDialog = false
|
||||
biz_login_svp.enableDoubleClick = false
|
||||
|
||||
viewColdStart.setColdStartResultListener(object: ColdStartView.ColdStartResultListener{
|
||||
override fun coldStartSuccess() {
|
||||
gsyVideoOptionBuilder.setUrl(videoUrl)
|
||||
.setCacheWithPlay(false)
|
||||
.setPlayTag("TaxiPassengerArrivedView")
|
||||
.build(biz_login_svp)
|
||||
|
||||
biz_login_svp.setVideoAllCallBack(object : GSYSampleCallBack() {
|
||||
override fun onAutoComplete(url: String?, vararg objects: Any?) {
|
||||
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_taxi_end)
|
||||
}else{
|
||||
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end)
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
if (showLoginInfoAnimator1 == null) {
|
||||
showLoginInfoAnimator1 = ObjectAnimator.ofFloat(cl_login_info, "alpha", 0f, 1f)
|
||||
showLoginInfoAnimator1?.interpolator = LinearInterpolator()
|
||||
}
|
||||
if (showLoginInfoAnimator2 == null) {
|
||||
val dp2px = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), -50f)
|
||||
showLoginInfoAnimator2 = ObjectAnimator.ofFloat(cl_login_info, "translationY", 0f, dp2px.toFloat())
|
||||
showLoginInfoAnimator2?.interpolator = DecelerateInterpolator()
|
||||
}
|
||||
UiThreadHandler.postDelayed({
|
||||
cl_login_info?.let {
|
||||
val animatorSet = AnimatorSet()
|
||||
animatorSet.playTogether(showLoginInfoAnimator1, showLoginInfoAnimator2)
|
||||
animatorSet.duration = 500
|
||||
animatorSet.addListener(object :AnimatorListener{
|
||||
override fun onAnimationStart(animation: Animator) {
|
||||
cl_login_info?.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
animatorSet.start()
|
||||
}
|
||||
},2_000,UiThreadHandler.MODE.QUEUE)
|
||||
biz_login_svp.startPlayLogic()
|
||||
}
|
||||
|
||||
override fun coldStartFail() {
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
inputPhoneNormal()
|
||||
@@ -317,11 +249,86 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
|
||||
biz_cl_driver_main?.viewTreeObserver?.addOnGlobalLayoutListener(onlayoutListener)
|
||||
super.onResume()
|
||||
CallerLogger.d(TAG, "onResume")
|
||||
context?.let {
|
||||
val videoUrl:String
|
||||
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_taxi_start)
|
||||
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_taxi_start)
|
||||
videoUrl = "android.resource://" + it.packageName + "/" + R.raw.biz_login_taxi_bg
|
||||
}else{
|
||||
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_bus_start)
|
||||
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_start)
|
||||
videoUrl = "android.resource://" + it.packageName + "/" + R.raw.biz_login_bus_bg
|
||||
}
|
||||
viewColdStart.setColdStartResultListener(object: ColdStartView.ColdStartResultListener{
|
||||
override fun coldStartSuccess() {
|
||||
biz_login_svp?.let {
|
||||
gsyVideoOptionBuilder.setUrl(videoUrl)
|
||||
.setCacheWithPlay(false)
|
||||
.setPlayTag("TaxiPassengerArrivedView")
|
||||
.build(biz_login_svp)
|
||||
|
||||
biz_login_svp?.setVideoAllCallBack(object : GSYSampleCallBack() {
|
||||
override fun onAutoComplete(url: String?, vararg objects: Any?) {
|
||||
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_taxi_end)
|
||||
}else{
|
||||
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end)
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
if (showLoginInfoAnimator1 == null) {
|
||||
showLoginInfoAnimator1 = ObjectAnimator.ofFloat(cl_login_info, "alpha", 0f, 1f)
|
||||
showLoginInfoAnimator1?.interpolator = LinearInterpolator()
|
||||
}
|
||||
if (showLoginInfoAnimator2 == null) {
|
||||
val dp2px = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), -50f)
|
||||
showLoginInfoAnimator2 = ObjectAnimator.ofFloat(cl_login_info, "translationY", 0f, dp2px.toFloat())
|
||||
showLoginInfoAnimator2?.interpolator = DecelerateInterpolator()
|
||||
}
|
||||
UiThreadHandler.postDelayed({
|
||||
cl_login_info?.let {
|
||||
val animatorSet = AnimatorSet()
|
||||
animatorSet.playTogether(showLoginInfoAnimator1, showLoginInfoAnimator2)
|
||||
animatorSet.duration = 500
|
||||
animatorSet.addListener(object :AnimatorListener{
|
||||
override fun onAnimationStart(animation: Animator) {
|
||||
cl_login_info?.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
animatorSet.start()
|
||||
}
|
||||
},2_000,UiThreadHandler.MODE.QUEUE)
|
||||
biz_login_svp?.startPlayLogic()
|
||||
}
|
||||
}
|
||||
|
||||
override fun coldStartFail() {
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
biz_cl_driver_main?.viewTreeObserver?.removeOnGlobalLayoutListener(onlayoutListener)
|
||||
super.onPause()
|
||||
CallerLogger.d(TAG, "onPause")
|
||||
viewColdStart.setColdStartResultListener(null)
|
||||
}
|
||||
}
|
||||
@@ -74,6 +74,7 @@ class AutopilotState @JvmOverloads constructor(
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
autopilotStateAnimator?.release()
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -50,23 +50,21 @@ class ShuttleFragment : MvpFragment<ShuttleFragment?, BusPresenter?>() {
|
||||
context?.let {
|
||||
if(ProjectUtils.isSaas()&& AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)){
|
||||
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitDefaultItem(runningTaskGateWay,"本地缓存任务", R.drawable.bus_running_task_history,4)
|
||||
}
|
||||
CallerEagleBaseFunctionCall4OchManager.addToolKitDefaultItemClickListener(runningTaskGateWay,object :
|
||||
IToolKitItemClickListener{
|
||||
override fun onItemClick(toolTag: String, ctx: Context?) {
|
||||
when (toolTag) {
|
||||
runningTaskGateWay -> {
|
||||
d(TAG, "runningTaskGateWay:$runningTaskGateWay---toolTag:$toolTag")
|
||||
RunningTaskManager.showBadCaseConfigWindow(it)
|
||||
CallerEagleBaseFunctionCall4OchManager.addToolKitDefaultItemClickListener(runningTaskGateWay,object :
|
||||
IToolKitItemClickListener{
|
||||
override fun onItemClick(toolTag: String, ctx: Context?) {
|
||||
when (toolTag) {
|
||||
runningTaskGateWay -> {
|
||||
d(TAG, "runningTaskGateWay:$runningTaskGateWay---toolTag:$toolTag")
|
||||
RunningTaskManager.showBadCaseConfigWindow(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitCustomItem(lineView, LineView(it),10)
|
||||
})
|
||||
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitCustomItem(lineView, LineView(it),10)
|
||||
}
|
||||
}
|
||||
|
||||
initListener()
|
||||
|
||||
}
|
||||
|
||||
override fun initViews(savedInstanceState: Bundle?) {
|
||||
@@ -87,7 +85,6 @@ class ShuttleFragment : MvpFragment<ShuttleFragment?, BusPresenter?>() {
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
EventBus.getDefault().register(this)
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
@@ -111,35 +108,17 @@ class ShuttleFragment : MvpFragment<ShuttleFragment?, BusPresenter?>() {
|
||||
if (mPresenter != null) {
|
||||
mPresenter!!.onDestroy(this)
|
||||
}
|
||||
if(ProjectUtils.isSaas()&& AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
|
||||
CallerEagleBaseFunctionCall4OchManager.removeToolkitByTag(mutableListOf(lineView))
|
||||
CallerEagleBaseFunctionCall4OchManager.removeToolKitDefaultItemClickListener(lineView)
|
||||
}
|
||||
super.onDestroyView()
|
||||
CallerAutopilotRecordListenerManager.removeListener(TAG)
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
}
|
||||
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun changeOverview(eventLogout: EventLogout) {
|
||||
when (eventLogout.messgae) {
|
||||
EventLogout.SHOW_QR_TYPE-> { //显示二维码
|
||||
|
||||
}
|
||||
EventLogout.SHOW_WAIT_UPLOAD_TASK-> {
|
||||
context?.let {
|
||||
RunningTaskManager.showBadCaseConfigWindow(it)
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* END
|
||||
*/
|
||||
|
||||
@@ -45,7 +45,7 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
|
||||
|
||||
|
||||
companion object {
|
||||
const val TAG = "BadCaseManagerView"
|
||||
const val TAG = "SwitchLineView"
|
||||
}
|
||||
|
||||
private var viewModel:SwtichLineModel?=null
|
||||
@@ -119,6 +119,12 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
|
||||
}
|
||||
|
||||
viewModel?.setDistanceCallback(this)
|
||||
CallerLogger.d(TAG,"onAttachedToWindow")
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerLogger.d(TAG,"onDetachedFromWindow")
|
||||
}
|
||||
|
||||
override fun startTaskState(success: Boolean) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.mogo.commons.env.ProjectUtils
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
@@ -33,6 +34,7 @@ class SwtichLineModel : ViewModel(), IBusLinesCallback {
|
||||
|
||||
|
||||
override fun onCleared() {
|
||||
CallerLogger.d(TAG,"onCleared")
|
||||
LineModel.setBusLinesCallback(TAG,null)
|
||||
}
|
||||
|
||||
|
||||
@@ -186,6 +186,8 @@ class TaxiFragment :MvpFragment<TaxiFragment?, TaxiPresenter?>(),
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
CallerEagleBaseFunctionCall4OchManager.removeToolkitByTag(mutableListOf(lineView))
|
||||
CallerEagleBaseFunctionCall4OchManager.removeToolKitDefaultItemClickListener(lineView)
|
||||
startAutopilotAnimationView.cancelCountdown()
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
@@ -544,6 +544,7 @@ class FaultReasonView @JvmOverloads constructor(
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
if(visibility == View.VISIBLE){
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
//获取一级分类
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId, 1, 0, type, 0)
|
||||
//弹窗展示时间
|
||||
@@ -585,4 +586,14 @@ class FaultReasonView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -344,6 +344,7 @@ class WorkOrderView @JvmOverloads constructor(
|
||||
override fun onVisibilityChanged(changedView: View, visibility: Int) {
|
||||
super.onVisibilityChanged(changedView, visibility)
|
||||
if(visibility == View.VISIBLE){
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
//弹窗展示时间
|
||||
tv_work_order_time.text =
|
||||
millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())
|
||||
@@ -364,7 +365,16 @@ class WorkOrderView @JvmOverloads constructor(
|
||||
//重置工单问题类型
|
||||
workOrderType = ""
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -534,7 +534,7 @@ class OperatePanelLayout : LinearLayout {
|
||||
val isPressed = preference.extras.getBoolean("is_pressed", true)
|
||||
if (!isPressed) {
|
||||
preference.extras.remove("is_pressed")
|
||||
return true
|
||||
return false
|
||||
}
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
hmiAction("SOP 演示模式开关, ", !FunctionBuildConfig.isDemoMode)
|
||||
@@ -545,18 +545,21 @@ class OperatePanelLayout : LinearLayout {
|
||||
if (!FunctionBuildConfig.isDemoMode) { //关闭美化模式时,通知工控机
|
||||
CallerAutoPilotControlManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode)
|
||||
}
|
||||
return true
|
||||
}
|
||||
KEY_RECORD_BAG_DIALOG -> {
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
FunctionBuildConfig.isShowBagRecordWindow = isChecked
|
||||
hmiAction("SOP 是否展示录包弹窗, ", isChecked)
|
||||
clickEventAnalytics("录包弹窗", isChecked)
|
||||
return true
|
||||
}
|
||||
KEY_TAKE_OVER_WAKE -> {
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
FunctionBuildConfig.isTakeoverRemind = isChecked
|
||||
hmiAction("SOP 是否展示接管提醒, ", isChecked)
|
||||
clickEventAnalytics("接管提醒", isChecked)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return super.onPreferenceChange(preference, newValue)
|
||||
@@ -810,6 +813,7 @@ class OperatePanelLayout : LinearLayout {
|
||||
CallerLogger.d(TAG, "发送开关数据:${isChecked}到乘客屏")
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.WEATHER_SWITCH_STATUS, (if (isChecked) "1" else "0").toByteArray())
|
||||
clickEventAnalytics("天气效果开关", isChecked)
|
||||
return true
|
||||
}
|
||||
KEY_SYSTEM_BOOT_STATUS_SHOW -> {
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
@@ -817,6 +821,7 @@ class OperatePanelLayout : LinearLayout {
|
||||
clickEventAnalytics("系统启动状态展示", isChecked)
|
||||
HmiBuildConfig.isShowConnectionProgressView = isChecked
|
||||
CallerHmiViewControlListenerManager.updateConnectionProgressView(isChecked)
|
||||
return true
|
||||
}
|
||||
KEY_SWEEPER_CLOUD_CONTROL -> {
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
@@ -836,6 +841,7 @@ class OperatePanelLayout : LinearLayout {
|
||||
confirmDialog.showSweeperModeChangeConfirmDialog()
|
||||
}
|
||||
clickEventAnalytics("清扫云控业务", isChecked)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return super.onPreferenceChange(preference, newValue)
|
||||
@@ -1217,7 +1223,7 @@ class OperatePanelLayout : LinearLayout {
|
||||
val isPressed = preference.extras.getBoolean("is_pressed", true)
|
||||
if (!isPressed) {
|
||||
preference.extras.remove("is_pressed")
|
||||
return true
|
||||
return false
|
||||
}
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
hmiAction("SOP 雨天模式开关, ", isChecked)
|
||||
|
||||
@@ -416,6 +416,9 @@ class ColdStartView @JvmOverloads constructor(
|
||||
//域控连接成功埋点统计
|
||||
reason = "域控连接成功"
|
||||
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectSuccess,reason)
|
||||
ssmConnectStatus = false
|
||||
coldStartStatus = false
|
||||
newColdStart = false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -630,7 +633,7 @@ class ColdStartView @JvmOverloads constructor(
|
||||
fun coldStartFail()
|
||||
}
|
||||
|
||||
fun setColdStartResultListener(listener: ColdStartResultListener){
|
||||
fun setColdStartResultListener(listener: ColdStartResultListener?){
|
||||
coldStartResultListener = listener
|
||||
}
|
||||
|
||||
|
||||
@@ -141,20 +141,20 @@ class TravelRealityModel private constructor() {
|
||||
|
||||
fun cancelAllRequest() {
|
||||
if (eventKey.isNotEmpty()) {
|
||||
eventKey = ""
|
||||
cancel(eventKey)
|
||||
eventKey = ""
|
||||
}
|
||||
if (deviceKey.isNotEmpty()) {
|
||||
deviceKey = ""
|
||||
cancel(deviceKey)
|
||||
deviceKey = ""
|
||||
}
|
||||
if (trackKey.isNotEmpty()) {
|
||||
trackKey = ""
|
||||
cancel(trackKey)
|
||||
trackKey = ""
|
||||
}
|
||||
if (liveKey.isNotEmpty()) {
|
||||
liveKey = ""
|
||||
cancel(liveKey)
|
||||
liveKey = ""
|
||||
}
|
||||
clearDownload()
|
||||
}
|
||||
|
||||
@@ -146,6 +146,11 @@ class MapRoamView(context: Context?, attrs: AttributeSet?) : MogoMapView(context
|
||||
getUI()?.setVisible(false)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerMapAiCloudDataManager.removeListener(RoadCrossRoamView.TAG)
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = ChainConstant.CHAIN_TYPE_STATUS,
|
||||
linkCode = ChainConstant.CHAIN_SOURCE_ADAS,
|
||||
|
||||
@@ -81,7 +81,7 @@ MOGO_LOCATION_VERSION=1.4.7.42
|
||||
MOGO_TELEMATIC_VERSION=1.4.7.42
|
||||
######## MogoAiCloudSDK Version ########
|
||||
# 自研地图
|
||||
MAP_SDK_VERSION=3.4.1.18
|
||||
MAP_SDK_VERSION=3.4.1.21
|
||||
MAP_SDK_DATA_VERSION=1.0.0.9
|
||||
MAP_SDK_OPERATION_VERSION=1.1.4.1
|
||||
# websocket
|
||||
|
||||
Reference in New Issue
Block a user