# MapMyFitness

状态：active
Platform：android
Package：com.mapmyfitness.android2
Version：26.5.0
Opportunity：2026-06-10-map-my-fitness-workout-tracker

## 摘要

- 包类型：xapk，inner APK 数：20
- 引擎 / 框架：native
- SDK 线索：admob, amplitude, firebase, onesignal
- Endpoint candidates：80
- 结论口径：本报告只基于静态 ZIP / Manifest / 字符串证据；不代表真实运行路径已验证。

## 直接证据

- [high] Manifest package id is com.mapmyfitness.android2（source: `AndroidManifest.xml`，status: `verified`）
- [high] Manifest declares 67 permissions（source: `AndroidManifest.xml`，status: `verified`）
- [high] Engine/framework markers: native（source: `APK file inventory`，status: `verified`）
- [high] Static strings include 80 endpoint candidates（source: `Text/string scan`，status: `verified`）
- [high] Package contains 3 native libraries（source: `APK file inventory`，status: `verified`）

## 推断

- [medium] SDK markers suggest: admob, amplitude, firebase, onesignal（source: `Manifest, filenames, and text strings`，status: `inferred`）

## 权限和组件

### 权限

- `android.permission.ACCESS_ADSERVICES_AD_ID`
- `android.permission.ACCESS_ADSERVICES_ATTRIBUTION`
- `android.permission.ACCESS_ADSERVICES_TOPICS`
- `android.permission.ACCESS_COARSE_LOCATION`
- `android.permission.ACCESS_FINE_LOCATION`
- `android.permission.ACCESS_LOCATION_EXTRA_COMMANDS`
- `android.permission.ACCESS_NETWORK_STATE`
- `android.permission.ACCESS_WIFI_STATE`
- `android.permission.ACTIVITY_RECOGNITION`
- `android.permission.BLUETOOTH`
- `android.permission.BLUETOOTH_ADMIN`
- `android.permission.BLUETOOTH_CONNECT`
- `android.permission.BLUETOOTH_SCAN`
- `android.permission.CAMERA`
- `android.permission.DOWNLOAD_WITHOUT_NOTIFICATION`
- `android.permission.FOREGROUND_SERVICE`
- `android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE`
- `android.permission.FOREGROUND_SERVICE_LOCATION`
- `android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK`
- `android.permission.GET_ACCOUNTS`
- `android.permission.INTERNET`
- `android.permission.POST_NOTIFICATIONS`
- `android.permission.READ_APP_BADGE`
- `android.permission.READ_EXTERNAL_STORAGE`
- `android.permission.READ_MEDIA_IMAGES`
- `android.permission.READ_PHONE_STATE`
- `android.permission.RECEIVE_BOOT_COMPLETED`
- `android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS`
- `android.permission.VIBRATE`
- `android.permission.WAKE_LOCK`
- `android.permission.WRITE_EXTERNAL_STORAGE`
- `android.permission.health.WRITE_CYCLING_PEDALING_CADENCE`
- `android.permission.health.WRITE_DISTANCE`
- `android.permission.health.WRITE_ELEVATION_GAINED`
- `android.permission.health.WRITE_EXERCISE`
- `android.permission.health.WRITE_EXERCISE_ROUTE`
- `android.permission.health.WRITE_FLOORS_CLIMBED`
- `android.permission.health.WRITE_HEART_RATE`
- `android.permission.health.WRITE_SPEED`
- `android.permission.health.WRITE_STEPS`

### 组件

- Activities：androidx.core.splashscreen.test.SplashScreenAppCompatTestActivity, com.android.billingclient.api.ProxyBillingActivity, com.android.billingclient.api.ProxyBillingActivityV2, com.brightcove.player.captioning.BrightcoveCaptionPropertiesActivity, com.google.android.gms.ads.AdActivity, com.google.android.gms.ads.NotificationHandlerActivity, com.google.android.gms.ads.OutOfContextTestingActivity, com.google.android.gms.common.api.GoogleApiActivity, com.mapmyfitness.android.ViewPermissionUsageActivity, com.mapmyfitness.android.activity.FatalError, com.mapmyfitness.android.activity.appupdate.AppUpdate, com.mapmyfitness.android.activity.core.HostActivity, com.mapmyfitness.android.activity.core.LaunchActivity, com.mapmyfitness.android.activity.device.atlas.AtlasProductUpsellActivity, com.mapmyfitness.android.activity.onboarding.AtlasOnboardingActivity, com.mapmyfitness.android.debug.DatabaseInspectorActivity, com.mapmyfitness.android.device.calibration.ShoeCalibrationActivity, com.mapmyfitness.android.device.debugtool.ShoeDebugToolActivity, com.mapmyfitness.android.device.fota.ShoeFirmwareActivity, com.mapmyfitness.android.device.fota.ShoeReconnectActivity, com.mapmyfitness.android.device.mock.MockDeviceToolActivity, com.mapmyfitness.android.device.oobe.ShoeOobeActivity, com.mapmyfitness.android.device.oobe.ShoeOobeCreationActivity, com.mapmyfitness.android.device.settings.ShoeDetailActivity, com.mapmyfitness.android.device.shoehome.attributeCards.shoeGuide.ShoeGuideWebActivity, com.mapmyfitness.android.device.shoehome.list.ShoeHomeActivity, com.mapmyfitness.android.device.shoehome.troubleshooting.ShoeTroubleshootingActivity, com.mapmyfitness.android.permissions.healthconnect.HealthConnectPermissionRationaleActivity, com.mapmyfitness.android.support.ZendeskSupportActivity, com.mmf.privacy.presentation.PrivacyCenterActivity, com.mmf.routes.presentation.RoutesActivity, com.onesignal.NotificationOpenedActivityHMS, com.onesignal.core.activities.PermissionsActivity, com.onesignal.notifications.activities.NotificationOpenedActivity, com.onesignal.notifications.activities.NotificationOpenedActivityAndroid22AndOlder, io.uacf.configuration.ui.debug.UacfConfigurationDevToolActivity, io.uacf.gymworkouts.ui.internal.activitysearch.ActivitySearchActivity, io.uacf.gymworkouts.ui.internal.brightcove.ExerciseVideoActivity, io.uacf.gymworkouts.ui.internal.gymworkouts.GymWorkoutsTabsActivity, io.uacf.gymworkouts.ui.internal.routinedetails.GymWorkoutsPrivacyCoachmarkDialogActivity, io.uacf.gymworkouts.ui.internal.routinedetails.RoutineDetailsActivity, io.uacf.gymworkouts.ui.internal.routinedetails.plans.PlansRoutineDetailsActivity, io.uacf.inbox.ui.debug.NotificationInboxDevToolActivity, io.uacf.rollouts.ui.debug.UacfRolloutsDevToolActivity, io.uacf.thumbprint.ui.internal.email.EmailFlowNavigatorActivity, io.uacf.thumbprint.ui.internal.password.ChangePasswordActivity, io.uacf.thumbprint.ui.internal.photo.DisplayProfilePhotoFlowNavigatorActivity, io.uacf.thumbprint.ui.internal.photo.PhotoFlowNavigatorActivity, io.uacf.thumbprint.ui.internal.photo.PhotoSourceChooserActivity, zendesk.messaging.android.internal.conversationscreen.ImageViewerActivity, zendesk.messaging.android.internal.messagingscreen.MessagingActivity, zendesk.support.guide.HelpCenterActivity, zendesk.support.guide.ViewArticleActivity, zendesk.support.request.RequestActivity, zendesk.support.requestlist.RequestListActivity
- Services：androidx.health.platform.client.impl.sdkservice.HealthDataSdkService, androidx.room.MultiInstanceInvalidationService, androidx.work.impl.background.systemalarm.SystemAlarmService, androidx.work.impl.background.systemjob.SystemJobService, androidx.work.impl.foreground.SystemForegroundService, com.brightcove.player.network.DownloadMonitorService, com.brightcove.player.services.BrightcoveMediaPlayerService, com.google.android.datatransport.runtime.backends.TransportBackendDiscovery, com.google.android.datatransport.runtime.scheduling.jobscheduling.JobInfoSchedulerService, com.google.android.gms.ads.AdService, com.google.android.gms.measurement.AppMeasurementJobService, com.google.android.gms.measurement.AppMeasurementService, com.google.firebase.components.ComponentDiscoveryService, com.google.firebase.messaging.FirebaseMessagingService, com.google.firebase.sessions.SessionLifecycleService, com.google.mlkit.common.internal.MlKitComponentDiscoveryService, com.liulishuo.filedownloader.services.FileDownloadService$SeparateProcessService, com.liulishuo.filedownloader.services.FileDownloadService$SharedMainProcessService, com.mapmyfitness.android.device.atlas.AtlasWorkoutImportIntentService, com.mapmyfitness.android.messaging.MapMyPushListenerService, com.mapmyfitness.android.notification.NotificationActionIntentService, com.mapmyfitness.android.record.RecordForegroundNotificationService, com.mapmyfitness.android.remote.wear.WearRemoteService, com.mapmyfitness.android.sensor.btle.BleService, com.onesignal.core.services.SyncJobService, com.onesignal.notifications.services.HmsMessageServiceOneSignal
- Receivers：androidx.profileinstaller.ProfileInstallReceiver, androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy, androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy, androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy, androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy, androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver, androidx.work.impl.background.systemalarm.RescheduleReceiver, androidx.work.impl.diagnostics.DiagnosticsReceiver, androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver, com.google.android.datatransport.runtime.scheduling.jobscheduling.AlarmManagerSchedulerBroadcastReceiver, com.google.android.gms.measurement.AppMeasurementReceiver, com.google.firebase.iid.FirebaseInstanceIdReceiver, com.mapmyfitness.android.analytics.AppInstalledReceiver, com.mapmyfitness.android.analytics.AppUpgradedReceiver, com.mapmyfitness.android.analytics.SocialShareReceiver, com.mapmyfitness.android.device.atlas.AtlasWorkoutImportBroadcastReceiver, com.mapmyfitness.android.notification.NotificationActionBroadcastReceiver, com.mapmyfitness.android.workout.photo.WorkoutPhotoUploadRetryReceiver, com.onesignal.notifications.receivers.BootUpReceiver, com.onesignal.notifications.receivers.FCMBroadcastReceiver, com.onesignal.notifications.receivers.NotificationDismissReceiver, com.onesignal.notifications.receivers.UpgradeReceiver, zendesk.support.DeepLinkingBroadcastReceiver
- Providers：androidx.core.content.FileProvider, androidx.startup.InitializationProvider, com.google.android.gms.ads.MobileAdsInitProvider, com.google.firebase.perf.provider.FirebasePerfProvider, com.google.firebase.provider.FirebaseInitProvider, com.google.mlkit.common.internal.MlKitInitProvider, com.ua.atlasv2.AtlasFileProvider, io.uacf.gymworkouts.ui.internal.GymWorkoutsFileProvider, io.uacf.thumbprint.ui.internal.ThumbprintFileProvider, zendesk.belvedere.BelvedereFileProvider, zendesk.messaging.android.internal.ZendeskFileProvider, zendesk.support.SupportSdkStartupProvider

## SDK / Endpoint

### SDK

- `admob`
- `amplitude`
- `firebase`
- `onesignal`

### Endpoint candidates

- https://github.com/ReactiveX/RxJava.git
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/383e09bb-5005-429a-a02a-8b51ab063cdb.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/b72d12d9-1e07-47ce-8a67-64dff5b55636.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/e79b23f1-d707-432f-89b0-579f6f31e33c.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/328576fc-eaf0-4790-a184-1ab44946ef82.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/7c879469-b99a-4b3b-827b-484b82618f26.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/822cf074-1f58-4364-b5f8-9b9b11888294.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/343bd7db-d431-4f71-b107-9a87b94fea66.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/f16e9dfb-8ac7-429b-80d0-d489a78b8f3b.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/97155af8-c1e2-4246-a95f-6dbc4186f4d4.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/e6778072-744b-4b30-9545-6abb5a40434b.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/09027bf4-a979-4846-a6b8-0a3d4e25e8a9.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/17489437-eeba-481f-8443-310a4abaf7be.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/9b8806f7-00e3-496f-a227-c4f4ae15152d.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/5d280a48-a2aa-4a08-9267-01afa0852839.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/07175e39-5fb6-431d-be73-344ad8ae9b70.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/c025d90f-d603-4b32-b63e-39790001d499.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/72ab156c-6278-4d35-bc4f-409a90fe96aa.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/8a761121-b7f0-415f-83eb-bacd728d5de9.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/f138a817-12c0-4359-8b7c-d8e89307d506.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/f76bf48d-cae5-4c17-aacc-6c170cf412c5.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/f81f74e2-add9-4a37-8188-6f4cba3a1e58.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/ce274038-2d7c-4e91-84d2-87253b1ada8e.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/c2eaeaa6-92d4-4e78-a210-fd644d8d5ead.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/118addd0-f34e-4be7-9772-5d7be6530239.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/26efde78-964c-4e94-91ea-e8637b0eef20.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/4b877545-59bb-47b2-8452-87dcb7a77214.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/d44f3129-f45e-4aa0-9ebd-24a49d11b330.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/82ceab83-438f-41b6-a0c2-6f86a5258e6e.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/b120a702-3448-49d1-bea6-6d1f5985a772.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/6070a493-7b09-4dae-bba7-f88761a1153f.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/be525f41-8f55-41ac-892d-dcd685dcc124.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/bbfec3be-6702-497a-b236-fcdf85130274.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/4c9e8af2-a4fc-489d-82e7-7ba1805a891c.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/eab60257-0708-47a2-8c33-43fb750d26e9.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/ed9954a3-f9e1-4088-83e9-58290d51b1e0.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/f48300fb-3da5-454a-99d9-b1a6c1e2ccc2.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/7656e471-1a6d-4650-aaf8-3806d548bab4.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/9d91eff3-dc9b-4e29-8651-ad36555044a3.mp4
- https://train-media.api.ua.com/unsafe/https://directus-train.s3.us-east-1.amazonaws.com/media/b0699c79-e4ba-48e4-a04c-63398ccbb02b.mp4

## Warnings

- apktool manifest decode skipped 19 split APK(s)
- binary AndroidManifest.xml decoded with apktool

## 下一步

- 真机/模拟器验证 onboarding、paywall、首个可感知价值和崩溃路径。
- 把 endpoint candidates 与 HAR / MITM / Frida 动态证据对齐，避免只凭静态字符串下结论。
- 多版本对比权限、SDK、endpoint、native libs 和资源路径变化。
- 订阅/广告 SDK 线索存在，后续需拆 paywall、free trial、退款和广告频率。
