Реализация App Wrapping для корпоративного мобильного приложения
App Wrapping — это post-build операция: берём готовый IPA или APK, оборачиваем в MAM-оболочку без изменения исходного кода и получаем приложение с корпоративными политиками безопасности. Инструмент востребован для legacy-приложений, сторонних вендорских продуктов и ситуаций, когда нет доступа к исходникам.
Когда App Wrapping — правильный выбор
Интеграция MAM SDK — более надёжный путь, но требует доступа к коду и рефакторинга. App Wrapping подходит, когда:
- Исходный код приложения недоступен (вендорское ПО, устаревшее приложение с уволившейся командой).
- Приложение написано на стороннем фреймворке, плохо совместимом с MAM SDK (некоторые версии Xamarin, Cordova).
- Нужно быстро добавить базовые политики без полного цикла разработки.
- Приложение используется небольшим числом сотрудников и полный SDK-рефакторинг экономически нецелесообразен.
Как работает Intune App Wrapping Tool на iOS
Microsoft предоставляет IntuneMAMPackager — command-line инструмент для macOS:
./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager \
-i /path/to/app.ipa \
-o /path/to/wrapped-app.ipa \
-p /path/to/provisioning-profile.mobileprovision \
-c "Apple Distribution: Company Name (TEAMID)" \
-e /path/to/entitlements.plist \
--use-secondary-ipa-keychain-group true
Упаковщик переподписывает приложение, внедряет MAM-фреймворки в бандл и обновляет Info.plist с MAM-ключами. Итоговый IPA содержит IntuneMAMConfigurations.plist и injected frameworks в Frameworks/.
Что внедряется автоматически:
- Перехват
UIPasteboard— ограничение copy-paste по MAM-политике. - Перехват
UIDocumentInteractionController/UIActivityViewController— ограничение «Открыть в...». - PIN/биометрия при запуске по политике.
- Selective wipe при отзыве доступа.
- Шифрование файлов в
Documents/иLibrary/директориях приложения.
Ограничения App Wrapping на iOS
Wrapping не магия. Ряд функций SDK при wrapping недоступен:
- Multi-identity — управление несколькими корпоративными аккаунтами в одном приложении. Требует явной SDK-интеграции.
- Intune-targeted conditional launch checks — кастомная логика проверки compliance. Без кода недоступна.
- Кастомный wipe handler — wrapping удаляет файлы приложения, но не может вызвать бизнес-логику очистки (например, деавторизацию на сервере).
Если приложение использует WKWebView для основного UI — wrapping работает хуже: JavaScript-контент в webview не перехватывается MAM. Нужна либо SDK-интеграция, либо ограничение через WKUserContentController вручную.
App Wrapping на Android
Intune App Wrapping Tool для Android:
java -jar IntuneMAMPackager.jar \
-i app-release.apk \
-o app-wrapped.apk \
-c RSA_KEY_ALIAS \
-ks keystore.jks \
-ksPass keystorePassword \
-alias keyAlias \
-aliasPass aliasPassword
Android wrapping работает через bytecode instrumentation: инструмент переписывает Dalvik/ART байткод, заменяя вызовы системных классов (android.content.ClipboardManager, android.app.Activity) на MAM-обёртки. Это менее стабильно, чем iOS-подход, и может ломаться при агрессивных ProGuard/R8-оптимизациях.
Проблема с Android wrapping: если приложение использует minifyEnabled true с кастомными правилами ProGuard, wrapping tool может не распознать переименованные классы. Решение — добавить -keep правила для системных классов, которые wrapping должен перехватить.
Тестирование wrapped-приложения
После wrapping обязательно проверяем:
- Приложение запускается без крэша (частая причина — конфликт Frameworks при переподписи).
- Политики применяются: тестируем copy-paste в другое приложение — должно быть заблокировано.
- Selective wipe работает: инициируем через Intune Portal, проверяем, что данные удалены.
- Версионирование: при каждом обновлении базового приложения wrapping повторяется. Нужен CI/CD pipeline для автоматизации.
CI/CD для wrapping (GitHub Actions):
- name: Wrap IPA with Intune
run: |
./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager \
-i build/app.ipa \
-o build/app-wrapped.ipa \
-p $PROVISIONING_PROFILE \
-c "$SIGNING_CERT"
Этапы проекта
Анализ приложения на совместимость с wrapping → настройка Intune Portal и App Protection Policy → wrapping + переподпись → тестирование политик → интеграция в CI/CD → rollout через Intune / MDM.
Сроки: однократный wrapping готового приложения — 1–2 недели. Настройка полного pipeline с CI/CD и тестированием политик — 3–5 недель. Стоимость рассчитывается индивидуально.







