diff --git a/services/abilitymgr/BUILD.gn b/services/abilitymgr/BUILD.gn index 51d603d90e45147d0f90be405044ae8ed8298eef..a849059eb89b3dbef725bd6ee829e6ea2a2a6163 100644 --- a/services/abilitymgr/BUILD.gn +++ b/services/abilitymgr/BUILD.gn @@ -63,6 +63,7 @@ config("abilityms_config") { "//base/account/os_account/frameworks/common/database/include", "//base/account/os_account/frameworks/common/log/include", "//base/account/os_account/interfaces/innerkits/osaccount/native/include", + "//base/hiviewdfx/hicollie/interfaces/native/innerkits/include", ] cflags = [] if (target_cpu == "arm") { @@ -106,6 +107,7 @@ ohos_shared_library("abilityms") { "ces_standard:cesfwk_innerkits", "device_manager_base:devicemanagersdk", "dsoftbus_standard:softbus_client", + "hicollie_native:libhicollie", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "resmgr_standard:global_resmgr", diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 41daad5541acdf801ac0d553f94f47eb8204f9f3..a2c40fc3d196f824c423fc6b0d904cf0b3fc2159 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -714,7 +714,7 @@ public: void RestartAbility(const sptr &token); void NotifyBmsAbilityLifeStatus( - const std::string &bundleName, const std::string &abilityName, const int64_t launchTime); + const std::string &bundleName, const std::string &abilityName, const int64_t launchTime, const int uid); int StartAbilityInner( const Want &want, diff --git a/services/abilitymgr/include/ams_configuration_parameter.h b/services/abilitymgr/include/ams_configuration_parameter.h index 1e9f44038a09fd048e92e2ea723d59af775c38aa..c2226e0748c06ab421d7cda2a137413f0f801fd3 100644 --- a/services/abilitymgr/include/ams_configuration_parameter.h +++ b/services/abilitymgr/include/ams_configuration_parameter.h @@ -34,6 +34,7 @@ const std::string STARTUP_NAVIGATION_BAR {"startup_system_ui_navigation_bar"}; const std::string STARTUP_PHONE_SERVICE {"startup_phone_service"}; const std::string MISSION_SAVE_TIME {"mission_save_time"}; const std::string APP_NOT_RESPONSE_PROCESS_TIMEOUT_TIME {"app_not_response_process_timeout_time"}; +const std::string AMS_TIMEOUT_TIME {"ams_timeout_time"}; const std::string SYSTEM_CONFIGURATION {"system_configuration"}; const std::string SYSTEM_ORIENTATION {"system_orientation"}; const std::string STARTUP_CONTACTS {"startup_contacts"}; @@ -118,6 +119,10 @@ public: * get the application not response process timeout time. */ int GetANRTimeOutTime() const; + /** + * get ability manager service not response process timeout time. + */ + int GetAMSTimeOutTime() const; enum { READ_OK = 0, READ_FAIL = 1, READ_JSON_FAIL = 2 }; @@ -145,6 +150,7 @@ private: std::string orientation_ {""}; int missionSaveTime_ {12 * 60 * 60 * 1000}; int anrTime_ {5000}; + int amsTime_ {5000}; std::map memThreshold_; }; } // namespace AAFwk diff --git a/services/abilitymgr/resource/ams_service_config.json b/services/abilitymgr/resource/ams_service_config.json index 29ae30784242d6a2cad5d2c54d3ce989a1c373d2..a557159ea950b684fbd1ab70d82f786b7ecfdc7a 100644 --- a/services/abilitymgr/resource/ams_service_config.json +++ b/services/abilitymgr/resource/ams_service_config.json @@ -10,7 +10,8 @@ "mission_save_time" : 43200000, "root_launcher_restart_max":15, "use_new_mission":true, - "app_not_response_process_timeout_time" : 5000 + "app_not_response_process_timeout_time" : 5000, + "ams_timeout_time" : 5000 }, "memorythreshold":{ "home_application": "20" diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 1d6996c6723724091fb7dfc61fdb9ae2cd113bb0..ef7f13d9803f5ae7233a2351c6f00bc940190bcd 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -46,6 +46,7 @@ #include "os_account_manager.h" #include "png.h" #include "ui_service_mgr_client.h" +#include "xcollie/watchdog.h" using OHOS::AppExecFwk::ElementName; @@ -184,6 +185,11 @@ bool AbilityManagerService::Init() kernalAbilityManager_ = std::make_shared(0); CHECK_POINTER_RETURN_BOOL(kernalAbilityManager_); + int amsTimeOut = amsConfigResolver_->GetAMSTimeOutTime(); + if (HiviewDFX::Watchdog::GetInstance().AddThread("AMSWatchdog", handler_, amsTimeOut) != 0) { + HILOG_ERROR("HiviewDFX::Watchdog::GetInstance AddThread Fail"); + } + auto startLauncherAbilityTask = [aams = shared_from_this()]() { aams->StartSystemApplication(); }; handler_->PostTask(startLauncherAbilityTask, "startLauncherAbility"); auto creatWhiteListTask = [aams = shared_from_this()]() { @@ -3145,11 +3151,12 @@ void AbilityManagerService::RestartAbility(const sptr &token) } void AbilityManagerService::NotifyBmsAbilityLifeStatus( - const std::string &bundleName, const std::string &abilityName, const int64_t launchTime) + const std::string &bundleName, const std::string &abilityName, const int64_t launchTime, const int uid) { auto bundleManager = GetBundleManager(); CHECK_POINTER(bundleManager); - bundleManager->NotifyAbilityLifeStatus(bundleName, abilityName, launchTime); + HILOG_INFO("NotifyBmsAbilityLifeStatus is called, uid :%{public}d", uid); + bundleManager->NotifyAbilityLifeStatus(bundleName, abilityName, launchTime, uid); } void AbilityManagerService::StartSystemApplication() diff --git a/services/abilitymgr/src/ability_stack_manager.cpp b/services/abilitymgr/src/ability_stack_manager.cpp index ed557182d1e4a77afec53938a6d64e9d95c22de8..2ffbcc83a8946f7f10bba1d7a41f24667eafd4e4 100644 --- a/services/abilitymgr/src/ability_stack_manager.cpp +++ b/services/abilitymgr/src/ability_stack_manager.cpp @@ -1500,7 +1500,8 @@ void AbilityStackManager::CompleteActive(const std::shared_ptr &a DelayedSingleton::GetInstance()->NotifyBmsAbilityLifeStatus( abilityRecord->GetAbilityInfo().bundleName, abilityRecord->GetAbilityInfo().name, - AbilityUtil::UTCTimeSeconds()); + AbilityUtil::UTCTimeSeconds(), + abilityRecord->GetApplicationInfo().uid); #if BINDER_IPC_32BIT HILOG_INFO("notify bms ability life status, bundle name:%{public}s, ability name:%{public}s, time:%{public}lld", abilityRecord->GetAbilityInfo().bundleName.c_str(), @@ -4794,7 +4795,8 @@ void AbilityStackManager::CompleteForegroundNew(const std::shared_ptr::GetInstance()->NotifyBmsAbilityLifeStatus( abilityRecord->GetAbilityInfo().bundleName, abilityRecord->GetAbilityInfo().name, - AbilityUtil::UTCTimeSeconds()); + AbilityUtil::UTCTimeSeconds(), + abilityRecord->GetApplicationInfo().uid); #if BINDER_IPC_32BIT HILOG_INFO("notify bms ability life status, bundle name:%{public}s, ability name:%{public}s, time:%{public}lld", abilityRecord->GetAbilityInfo().bundleName.c_str(), diff --git a/services/abilitymgr/src/ams_configuration_parameter.cpp b/services/abilitymgr/src/ams_configuration_parameter.cpp index cad75f5cd8b8ef4499c10e21602c05a335fdc970..49d1ef168c43031354791c275e77ca5aeb68b655 100644 --- a/services/abilitymgr/src/ams_configuration_parameter.cpp +++ b/services/abilitymgr/src/ams_configuration_parameter.cpp @@ -87,6 +87,11 @@ int AmsConfigurationParameter::GetANRTimeOutTime() const return anrTime_; } +int AmsConfigurationParameter::GetAMSTimeOutTime() const +{ + return amsTime_; +} + int AmsConfigurationParameter::GetMaxRestartNum() const { return maxRestartNum_; @@ -154,6 +159,8 @@ int AmsConfigurationParameter::LoadAppConfigurationForStartUpService(nlohmann::j missionSaveTime_ = Object.at(AmsConfig::SERVICE_ITEM_AMS).at(AmsConfig::MISSION_SAVE_TIME).get(); anrTime_ = Object.at(AmsConfig::SERVICE_ITEM_AMS).at(AmsConfig::APP_NOT_RESPONSE_PROCESS_TIMEOUT_TIME).get(); + amsTime_ = + Object.at(AmsConfig::SERVICE_ITEM_AMS).at(AmsConfig::AMS_TIMEOUT_TIME).get(); if (Object.at(AmsConfig::SERVICE_ITEM_AMS).contains(AmsConfig::USE_NEW_MISSION)) { useNewMission_ = Object.at(AmsConfig::SERVICE_ITEM_AMS).at(AmsConfig::USE_NEW_MISSION).get(); } diff --git a/services/abilitymgr/src/mission_list_manager.cpp b/services/abilitymgr/src/mission_list_manager.cpp index 0a1a04519910b97c1f0e77590d0a7c039211cd1f..a9d7ec9fa174c672fc487cecf3ba5b113b37ed94 100644 --- a/services/abilitymgr/src/mission_list_manager.cpp +++ b/services/abilitymgr/src/mission_list_manager.cpp @@ -715,7 +715,8 @@ void MissionListManager::CompleteForegroundNew(const std::shared_ptr::GetInstance()->NotifyBmsAbilityLifeStatus( abilityRecord->GetAbilityInfo().bundleName, abilityRecord->GetAbilityInfo().name, - AbilityUtil::UTCTimeSeconds()); + AbilityUtil::UTCTimeSeconds(), + abilityRecord->GetApplicationInfo().uid); #if BINDER_IPC_32BIT HILOG_INFO("notify bms ability life status, bundle name:%{public}s, ability name:%{public}s, time:%{public}lld", abilityRecord->GetAbilityInfo().bundleName.c_str(), diff --git a/services/abilitymgr/test/BUILD.gn b/services/abilitymgr/test/BUILD.gn index a4ab83b8837d55ed522027570bcd456e63f1a710..f131c140d4d413a6285d26b83525370122839498 100644 --- a/services/abilitymgr/test/BUILD.gn +++ b/services/abilitymgr/test/BUILD.gn @@ -107,6 +107,7 @@ ohos_source_set("abilityms_test_source") { "//base/account/os_account/frameworks/common/database/include", "//base/account/os_account/frameworks/common/log/include", "//base/account/os_account/interfaces/innerkits/osaccount/native/include", + "//base/hiviewdfx/hicollie/interfaces/native/innerkits/include/xcollie", ] external_dependent_files = [ @@ -148,6 +149,7 @@ ohos_source_set("abilityms_test_source") { "ces_standard:cesfwk_core", "ces_standard:cesfwk_innerkits", "dsoftbus_standard:softbus_client", + "hicollie_native:libhicollie", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "native_appdatamgr:native_appdatafwk", diff --git a/services/test/moduletest/ability_mgr_service_test/BUILD.gn b/services/test/moduletest/ability_mgr_service_test/BUILD.gn index 5f968219b0bd72a7e14ad99bc85da84d557cf827..beb1a9a0f44f6f387d268bf2fdff260ae1bafb3d 100644 --- a/services/test/moduletest/ability_mgr_service_test/BUILD.gn +++ b/services/test/moduletest/ability_mgr_service_test/BUILD.gn @@ -24,6 +24,7 @@ ohos_moduletest("ability_mgr_module_test") { "//third_party/jsoncpp/include", "//foundation/aafwk/standard/frameworks/kits/ability/native/include/distributed_ability_runtime", "//foundation/aafwk/standard/interfaces/innerkits/dataobs_manager/include", + "//base/hiviewdfx/hicollie/interfaces/native/innerkits/include/xcollie", ] sources = [ "ability_mgr_module_test.cpp" ] @@ -113,6 +114,7 @@ ohos_moduletest("ability_mgr_module_test") { "ces_standard:cesfwk_core", "ces_standard:cesfwk_innerkits", "dsoftbus_standard:softbus_client", + "hicollie_native:libhicollie", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "native_appdatamgr:native_appdatafwk", diff --git a/services/test/moduletest/ability_record_test/BUILD.gn b/services/test/moduletest/ability_record_test/BUILD.gn index b07710eba515a3d7c74634df2b5dcbd186ea1a10..d4769d67f211a157da47d59d2c055fa1e332b85e 100644 --- a/services/test/moduletest/ability_record_test/BUILD.gn +++ b/services/test/moduletest/ability_record_test/BUILD.gn @@ -26,6 +26,7 @@ ohos_moduletest("AbilityRecordModuleTest") { "//third_party/jsoncpp/include", "//foundation/aafwk/standard/frameworks/kits/ability/native/include/distributed_ability_runtime", "//foundation/aafwk/standard/interfaces/innerkits/dataobs_manager/include", + "//base/hiviewdfx/hicollie/interfaces/native/innerkits/include/xcollie", ] sources = [ @@ -116,6 +117,7 @@ ohos_moduletest("AbilityRecordModuleTest") { "ces_standard:cesfwk_core", "ces_standard:cesfwk_innerkits", "dsoftbus_standard:softbus_client", + "hicollie_native:libhicollie", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "native_appdatamgr:native_appdatafwk", diff --git a/services/test/moduletest/ability_stack_test/BUILD.gn b/services/test/moduletest/ability_stack_test/BUILD.gn index 6bf2d95cf3acb4b3f39c6ba4b694d8737cdbd9c3..3a0d5cb3cfaeb7b6e65f05fbafac6ae7c31a5071 100644 --- a/services/test/moduletest/ability_stack_test/BUILD.gn +++ b/services/test/moduletest/ability_stack_test/BUILD.gn @@ -24,6 +24,7 @@ ohos_moduletest("ability_stack_module_test") { "//third_party/jsoncpp/include", "//foundation/aafwk/standard/frameworks/kits/ability/native/include/distributed_ability_runtime", "//foundation/aafwk/standard/interfaces/innerkits/dataobs_manager/include", + "//base/hiviewdfx/hicollie/interfaces/native/innerkits/include/xcollie", ] sources = [ "ability_stack_module_test.cpp" ] @@ -114,6 +115,7 @@ ohos_moduletest("ability_stack_module_test") { "ces_standard:cesfwk_core", "ces_standard:cesfwk_innerkits", "dsoftbus_standard:softbus_client", + "hicollie_native:libhicollie", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "native_appdatamgr:native_appdatafwk", diff --git a/services/test/moduletest/panding_want_manager_test/BUILD.gn b/services/test/moduletest/panding_want_manager_test/BUILD.gn index 54cc02d0b9e97cd4cba311ef12a5d25ca3164b44..db815d1f40732f900e5a6141951a108dea8abd8b 100755 --- a/services/test/moduletest/panding_want_manager_test/BUILD.gn +++ b/services/test/moduletest/panding_want_manager_test/BUILD.gn @@ -28,6 +28,7 @@ ohos_moduletest("PandingWantMgrTest") { "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy/include", "//foundation/distributedschedule/samgr/adapter/interfaces/innerkits/include/", "//third_party/jsoncpp/include", + "//base/hiviewdfx/hicollie/interfaces/native/innerkits/include/xcollie", ] sources = abilityms_files @@ -78,6 +79,7 @@ ohos_moduletest("PandingWantMgrTest") { "ces_standard:cesfwk_innerkits", "device_manager_base:devicemanagersdk", "dsoftbus_standard:softbus_client", + "hicollie_native:libhicollie", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "multimedia_image_standard:image_native",