Przygotowywanie aplikacji systemu Android pod kątem zasad ochrony aplikacji za pomocą narzędzia opakowującego aplikacje usługi IntunePrepare Android apps for app protection policies with the Intune App Wrapping Tool

Czy ta strona jest pomocna?

Za pomocą narzędzia opakowującego aplikacje dla systemu Android w usłudze Microsoft Intune można zmieniać działanie wewnętrznych aplikacji dla systemu Android przez ograniczanie ich funkcji bez konieczności zmieniania kodu aplikacji.Use the Microsoft Intune App Wrapping Tool for Android to change the behavior of your in-house Android apps by restricting features of the app without changing the code of the app itself.

Narzędzie to jest aplikacją wiersza polecenia systemu Windows działającą w programie PowerShell i tworzącą otokę wokół aplikacji dla systemu Android.The tool is a Windows command-line application that runs in PowerShell and creates a wrapper around your Android app. Po opakowaniu wybranej aplikacji można modyfikować jej funkcje, konfigurując zasady zarządzania aplikacjami mobilnymi usługi Intune.After the app is wrapped, you can change the app’s functionality by configuring mobile application management policies in Intune.

Przed uruchomieniem tego narzędzia należy zapoznać się z sekcją Uwagi dotyczące zabezpieczeń przy uruchamianiu narzędzia opakowującego aplikacje.Before running the tool, review Security considerations for running the App Wrapping Tool. Aby pobrać to narzędzie, przejdź do strony Microsoft Intune App Wrapping Tool for Android (Narzędzie opakowujące aplikacje dla systemu Android w usłudze Microsoft Intune) w witrynie GitHub.To download the tool, go to the Microsoft Intune App Wrapping Tool for Android on GitHub.

Spełnianie wymagań wstępnych do używania narzędzia opakowującego aplikacjeFulfill the prerequisites for using the App Wrapping Tool

  • Narzędzie opakowujące aplikacje musi zostać uruchomione na komputerze z systemem Windows 7 lub nowszym.You must run the App Wrapping Tool on a Windows computer running Windows 7 or later.

  • Aplikacja wejściowa musi być prawidłowym pakietem aplikacji Android z rozszerzeniem pliku apk oraz:Your input app must be a valid Android application package with the file extension .apk and:

    • nie może być szyfrowana,It cannot be encrypted.
    • nie może być wcześniej opakowana przez narzędzie opakowujące aplikacje usługi Intune,It must not have previously been wrapped by the Intune App Wrapping Tool.
    • musi być napisana dla systemu Android 4.0 lub nowszego.It must be written for Android 4.0 or later.
  • Aplikacja musi być opracowana przez Twoją firmę lub dla niej.The app must be developed by or for your company. To narzędzie nie może być używane do przetwarzania aplikacji pobranych ze sklepu Google Play.You cannot use this tool on apps downloaded from the Google Play Store.

  • Aby uruchomić narzędzie opakowujące aplikacje, należy zainstalować najnowszą wersję środowiska Java Runtime Environment i upewnić się, że w zmiennych środowiskowych systemu Windows została ustawiona zmienna ścieżki Java C:\ProgramData\Oracle\Java\javapath.To run the App Wrapping Tool, you must install the latest version of the Java Runtime Environment and then ensure that the Java path variable has been set to C:\ProgramData\Oracle\Java\javapath in your Windows environment variables. Aby uzyskać więcej informacji, zobacz dokumentację środowiska Java.For more help, see the Java documentation.

    Uwaga

    W pewnych sytuacjach 32-bitowa wersja programu Java może spowodować problemy z pamięcią.In some cases, the 32-bit version of Java may result in memory issues. Warto zainstalować wersję 64-bitową.It's a good idea to install the 64-bit version.

  • System Android wymaga, aby wszystkie pakiety aplikacji (apk) były podpisane.Android requires all app packages (.apk) to be signed. Aby uzyskać informacje dotyczące ponownego używania istniejących certyfikatów i ogólne wskazówki dotyczące certyfikatów podpisywania, zobacz Ponowne używanie certyfikatów podpisywania i opakowywanie aplikacji.For reusing existing certificates and overall signing certificate guidance, see Reusing signing certificates and wrapping apps. Plik wykonywalny Java keytool.exe służy do generowania nowych poświadczeń wymaganych do podpisania opakowanej aplikacji wyjściowej.The Java executable keytool.exe is used to generate new credentials needed to sign the wrapped output app. Wszelkie ustawiane hasła muszą być bezpieczne, ale zanotuj je, ponieważ będą potrzebne do uruchomienia narzędzia opakowującego aplikacje.Any passwords that are set must be secure, but make a note of them because they're needed to run the App Wrapping Tool.

    Uwaga

    Narzędzie opakowujące aplikacje usługi Intune nie obsługuje podpisywania aplikacji za pomocą schematów podpisów firmy Google w wersji v2 i w przyszłej wersji v3.The Intune App Wrapping Tool does not support Google's v2 and upcoming v3 signature schemes for app signing. Zaleca się, aby po opakowaniu pliku apk przy użyciu narzędzia opakowującego aplikacje usługi Intune skorzystać z narzędzia Apksigner dostarczanego przez firmę Google.After you have wrapped the .apk file using the Intune App Wrapping Tool, the recommendation is to use Google's provided Apksigner tool. Pozwoli to zagwarantować, że po pobraniu aplikacji na urządzeniach użytkowników końcowych będzie można ją uruchomić poprawnie zgodnie ze standardami systemu Android.This will ensure that once your app gets to end user devices, it can be launched properly by Android standards.

  • (Opcjonalnie) Czasami aplikacja może osiągnąć limit rozmiaru pliku wykonywalnego Dalvik (DEX) z powodu klas zestawu Intune MAM SDK, które są dodawane podczas opakowywania.(Optional) Sometimes an app may hit the Dalvik Executable (DEX) size limit due to the Intune MAM SDK classes that are added during wrapping. Pliki DEX są częścią kompilacji aplikacji systemu Android.DEX files are a part of the compilation of an Android app. Intune App Wrapping Tool automatycznie obsługuje przepełnienie plik DEKS podczas otaczania dla aplikacji za pomocą min API na poziomie 21 lub nowszej (począwszy od programu v. 1.0.2501.1).The Intune App Wrapping Tool automatically handles DEX file overflow during wrapping for apps with a min API level of 21 or higher (as of v. 1.0.2501.1). W przypadku aplikacji z minimalny poziom interfejsu API 21 < najlepszym rozwiązaniem jest zwiększenie minimalny poziom interfejsu API przy użyciu otoki -UseMinAPILevelForNativeMultiDex flagi.For apps with a min API level of < 21, best practice would be to increase the min API level using the wrapper's -UseMinAPILevelForNativeMultiDex flag. Nie można zwiększyć minimalny poziom interfejsu API aplikacji klientów następujące rozwiązania przepełnienie DEX są dostępne.For customers unable to increase the app’s minimum API level, the following DEX overflow workarounds are available. W niektórych organizacjach może to wymagać współpracy z osobami kompilującymi aplikację (tj. zespołem zajmującym się kompilacją aplikacji):In certain organizations, this may require working with whoever compiles the app (ie. the app build team):

  • Narzędzia ProGuard można użyć w celu wyeliminowania odwołań nieużywanych klasy z podstawową plik DEKS aplikacji.Use ProGuard to eliminate unused class references from the app’s primary DEX file.
  • Dla klientów korzystających z v3.1.0 lub nowszej dla systemu Android wtyczki programu Gradle, wyłącz D8 dexer.For customers using v3.1.0 or higher of the Android Gradle plugin, disable the D8 dexer.

Instalacja narzędzia opakowującego aplikacjeInstall the App Wrapping Tool

  1. Pobierz plik instalacyjny narzędzia opakowującego aplikacje dla systemu Android w usłudze Intune, InstallAWT.exe, z repozytorium w witrynie GitHub na komputer z systemem Windows.From the GitHub repository, download the installation file InstallAWT.exe for the Intune App Wrapping Tool for Android to a Windows computer. Otwórz plik instalacyjny.Open the installation file.

  2. Zaakceptuj umowę licencyjną, a następnie zakończ instalację.Accept the license agreement, then finish the installation.

Zwróć uwagę na folder, w którym zostało zainstalowane narzędzie.Note the folder to which you installed the tool. Domyślna lokalizacja: C:\Program Files (x86)\Microsoft Intune Mobile Application Management\Android\App Wrapping Tool.The default location is: C:\Program Files (x86)\Microsoft Intune Mobile Application Management\Android\App Wrapping Tool.

Uruchamianie narzędzia opakowującego aplikacjeRun the App Wrapping Tool

  1. Na komputerze z systemem Windows z zainstalowanym narzędziem opakowującym aplikacje otwórz okno programu PowerShell.On the Windows computer where you installed the App Wrapping Tool, open a PowerShell window.

  2. Z folderu, w którym zostało zainstalowane narzędzie, zaimportuj moduł programu PowerShell narzędzia opakowującego aplikacje:From the folder where you installed the tool, import the App Wrapping Tool PowerShell module:

    Import-Module .\IntuneAppWrappingTool.psm1
    
  3. Uruchom narzędzie za pomocą polecenia invoke-AppWrappingTool, używając następującej składni:Run the tool by using the invoke-AppWrappingTool command, which has the following usage syntax:

    Invoke-AppWrappingTool [-InputPath] <String> [-OutputPath] <String> -KeyStorePath <String> -KeyStorePassword <SecureString>
    -KeyAlias <String> -KeyPassword <SecureString> [-SigAlg <String>] [<CommonParameters>]
    

    W poniższej tabeli przedstawiono szczegółowo właściwości polecenia invoke-AppWrappingTool:The following table details the properties of the invoke-AppWrappingTool command:

WłaściwośćProperty InformacjeInformation PrzykładExample
-InputPath<ciąg>-InputPath<String> Ścieżka źródłowej aplikacji systemu Android (.apk).Path of the source Android app (.apk).
-OutputPath<ciąg>-OutputPath<String> Ścieżka do wyjściowej aplikacji systemu Android.Path to the output Android app. Jeśli ta ścieżka katalogu będzie taka sama jak określona w parametrze InputPath, opakowywanie nie powiedzie się.If this is the same directory path as InputPath, the packaging will fail.
-KeyStorePath<ciąg>-KeyStorePath<String> Ścieżka do pliku magazynu kluczy, który zawiera pary kluczy publicznych/prywatnych do podpisania.Path to the keystore file that has the public/private key pair for signing. Domyślnie pliki magazynu kluczy są przechowywane w folderze „C:\Program Files (x86)\Java\jreX.X.X_XX\bin”.By default, keystore files are stored in "C:\Program Files (x86)\Java\jreX.X.X_XX\bin."
-KeyStorePassword<ciąg_bezpieczny>-KeyStorePassword<SecureString> Hasło używane do odszyfrowywania magazynu kluczy.Password used to decrypt the keystore. System Android wymaga, aby wszystkie pakiety aplikacji (apk) były podpisane.Android requires all application packages (.apk) to be signed. Użyj narzędzia Java keytool do wygenerowania wartości KeyStorePassword.Use Java keytool to generate the KeyStorePassword. Uzyskaj więcej informacji o magazynie kluczy środowiska Java.Read more about Java KeyStore here.
-KeyAlias<ciąg>-KeyAlias<String> Nazwa klucza, który ma być używany do podpisywania.Name of the key to be used for signing.
-KeyPassword<ciąg_bezpieczny>-KeyPassword<SecureString> Hasło używane do odszyfrowania klucza prywatnego, który zostanie użyty do podpisywania.Password used to decrypt the private key that will be used for signing.
-SigAlg<ciąg_bezpieczny>-SigAlg<SecureString> (Opcjonalnie) Nazwa algorytmu sygnatury używanego do podpisywania.(Optional) The name of the signature algorithm to be used for signing. Algorytm musi być zgodny z kluczem prywatnym.The algorithm must be compatible with the private key. Przykłady: SHA256withRSA, SHA1withRSAExamples: SHA256withRSA, SHA1withRSA
-UseMinAPILevelForNativeMultiDex-UseMinAPILevelForNativeMultiDex (Opcjonalnie) Użyj tej flagi, aby zwiększyć źródłowej aplikacji systemu Android minimalny poziom interfejsu API do 21.(Optional) Use this flag to increase the source Android app’s minimum API level to 21. Ta flaga wyświetli monit o potwierdzenie, ponieważ będzie ograniczać, kto może zainstalować tę aplikację.This flag will prompt for confirmation as it will limit who may install this app. Użytkownicy mogą pomijać okno dialogowe potwierdzenia, dodając parametr "-Potwierdź: $false" do ich polecenia programu PowerShell.Users can skip the confirmation dialog by appending the parameter “-Confirm:$false” to their PowerShell command. Flaga powinna służyć wyłącznie przez klientów w aplikacjach z min interfejsu API < 21, które nie powiodły się, aby zawijać pomyślnie z powodu błędów przepełnienia DEX.The flag should only be used by customers on apps with min API < 21 that fail to wrap successfully due to DEX overflow errors.
<typowe_parametry><CommonParameters> (Opcjonalnie) To polecenie obsługuje typowe parametry programu PowerShell, takie jak verbose i debug.(Optional) The command supports common PowerShell parameters like verbose and debug.
  • Listę typowych parametrów można znaleźć w Centrum skryptów Microsoft.For a list of common parameters, see the Microsoft Script Center.

  • Aby uzyskać szczegółowe informacje dotyczące używania tego narzędzia, wpisz polecenie:To see detailed usage information for the tool, enter the command:

    Help Invoke-AppWrappingTool
    

Przykład:Example:

Zaimportuj moduł programu PowerShell.Import the PowerShell module.

Import-Module "C:\Program Files (x86)\Microsoft Intune Mobile Application Management\Android\App Wrapping Tool\IntuneAppWrappingTool.psm1"

Uruchom narzędzie opakowujące aplikacje z aplikacją natywną HelloWorld.apk.Run the App Wrapping Tool on the native app HelloWorld.apk.

invoke-AppWrappingTool -InputPath .\app\HelloWorld.apk -OutputPath .\app_wrapped\HelloWorld_wrapped.apk -KeyStorePath "C:\Program Files (x86)\Java\jre1.8.0_91\bin\mykeystorefile" -keyAlias mykeyalias -SigAlg SHA1withRSA -Verbose

Zostanie wyświetlony monit o hasła KeyStorePassword i KeyPassword.You will then be prompted for KeyStorePassword and KeyPassword. Wprowadź poświadczenia użyte do utworzenia pliku magazynu kluczy.Enter the credentials you used to create the key store file.

Opakowana aplikacja zostanie wygenerowana i zapisana wraz z plikiem dziennika w określonej ścieżce danych wyjściowych.The wrapped app and a log file are generated and saved in the output path you specified.

Jak często należy ponownie opakowywać aplikację systemu Android za pomocą narzędzia opakowującego aplikacje usługi Intune?How often should I rewrap my Android application with the Intune App Wrapping Tool?

Główne scenariusze, w których trzeba będzie ponownie opakować aplikacje:The main scenarios in which you would need to rewrap your applications are as follows:

  • Sama aplikacja wydała nową wersję.The application itself has released a new version. Poprzednia wersja aplikacji została opakowana i przekazana do konsoli usługi Intune.The previous version of the app was wrapped and uploaded to the Intune console.
  • Narzędzie opakowujące aplikacje usługi Intune dla systemu Android wydało nową wersję, która oferuje kluczowe poprawki usterek i nowe funkcje zasad ochrony aplikacji, przeznaczone specjalnie dla usługi Intune.The Intune App Wrapping Tool for Android has released a new version that enables key bug fixes, or new, specific Intune application protection policy features. Taka sytuacja występuje co 6–8 tygodni za pośrednictwem repozytorium GitHub dla narzędzia opakowującego aplikacje usługi Intune dla systemu Android.This happens every 6-8 weeks through GitHub repo for the Microsoft Intune App Wrapping Tool for Android.

Niektóre najlepsze rozwiązania dotyczące ponownego opakowywania:Some best practices for rewrapping include:

Ponowne używanie certyfikatów podpisywania i opakowywanie aplikacjiReusing signing certificates and wrapping apps

System Android wymaga podpisania wszystkich aplikacji za pomocą ważnego certyfikatu przed zainstalowaniem ich na urządzeniach z systemem Android.Android requires that all apps must be signed by a valid certificate in order to be installed on Android devices.

Opakowane aplikacje mogą zostać podpisane podczas procesu opakowywania lub po tym procesie przy użyciu istniejących narzędzi do podpisywania. Wszystkie informacje dotyczące podpisywania znajdujące się w aplikacji przed jej opakowaniem zostaną odrzucone.Wrapped apps can be signed either as part of the wrapping process or after wrapping using your existing signing tools (any signing information in the app before wrapping is discarded). Jeśli to możliwe, podczas procesu opakowywania należy użyć informacji dotyczących podpisywania, które zostały wcześniej użyte podczas procesu kompilacji.If possible, the signing information that was already used during the build process should be used during wrapping. W niektórych organizacjach może to wymagać współpracy z właścicielami informacji o magazynie kluczy (tj. zespołem zajmującym się kompilacją aplikacji).In certain organizations, this may require working with whoever owns the keystore information (ie. the app build team). 

Jeśli poprzedni certyfikat podpisywania nie może zostać użyty lub aplikacja nie została wcześniej wdrożona, możliwe jest utworzenie nowego certyfikatu podpisywania, zgodnie z instrukcjami znajdującymi się w przewodniku dewelopera systemu Android.If the previous signing certificate cannot be used, or the app has not been deployed before, you may create a new signing certificate by following the instructions in the Android Developer Guide.

Jeśli aplikacja została wcześniej wdrożona za pomocą innego certyfikatu podpisywania, nie można przekazać jej do usługi Intune po uaktualnieniu.If the app has been deployed previously with a different signing certificate, the app can't be uploaded to Intune after upgrade. Scenariusze uaktualniania aplikacji nie będą miały zastosowania, jeśli aplikacja została podpisana za pomocą innego certyfikatu niż ten, który został użyty podczas jej kompilacji.App upgrade scenarios will be broken if your app is signed with a different certificate than the one the app is built with. W związku z tym wszelkie nowe certyfikaty podpisywania powinny zostać zachowane na potrzeby uaktualnień aplikacji.As such, any new signing certificates should be maintained for app upgrades.

Uwagi dotyczące zabezpieczeń przy uruchamianiu narzędzia opakowującego aplikacjeSecurity considerations for running the App Wrapping Tool

Aby uniknąć potencjalnego fałszowania, ujawnienia informacji i ataków opartych na podniesieniu uprawnień:To prevent potential spoofing, information disclosure, and elevation of privilege attacks:

  • Upewnij się, że wejściowa aplikacja biznesowa, aplikacja wyjściowa i magazyn kluczy środowiska Java są na tym samym komputerze, na którym jest uruchamiane narzędzie opakowujące aplikacje.Ensure that the input line-of-business (LOB) application, output application, and Java KeyStore are on the same Windows computer where the App Wrapping Tool is running.

  • Zaimportuj aplikację wyjściową do usługi Intune na tym samym komputerze, na którym uruchomiono to narzędzie.Import the output application to Intune on the same machine where the tool is running. Zobacz temat keytool, aby uzyskać więcej informacji o narzędziu Java keytool.See keytool for more about the Java keytool.

  • Jeśli aplikacja wyjściowa i narzędzie znajdują się w ścieżce Universal Naming Convention (UNC), a narzędzie i pliki wejściowe nie zostały uruchomione na tym samym komputerze, skonfiguruj zabezpieczenia środowiska, używając zabezpieczeń protokołu internetowego (IPsec) lub podpisywania bloku komunikatów serwera (SMB).If the output application and the tool are on a Universal Naming Convention (UNC) path and you are not running the tool and input files on the same computer, set up the environment to be secure by using Internet Protocol Security (IPsec) or Server Message Block (SMB) signing.

  • Upewnij się, że aplikacja pochodzi z zaufanego źródła.Ensure that the application is coming from a trusted source.

  • Zabezpiecz katalog wyjściowy, który zawiera opakowaną aplikację.Secure the output directory that has the wrapped app. Rozważ użycie katalogu poziomu użytkownika dla produktu wyjściowego.Consider using a user-level directory for the output.

Zobacz takżeSee also