microsoftconnect / intune-app-wrapping-tool-android

Use the Intune App Wrapping Tool for Android to enable Android apps to be managed by Microsoft Intune
29 stars 11 forks source link

Unable to wrap when using requestLegacyExternalStorage attribute on Android Q (API 29) #34

Closed Li-Yanzhi closed 4 years ago

Li-Yanzhi commented 4 years ago

Describe the bug: Android Q introduced Scoped Storage, so for previous API level, we muse use requestLegacyExternalStorage manifest attribute to access external storage.

If the app manifest does not contain android:requestLegacyExternalStorage="true" , apk will be wrapped successfully, but when adding android:requestLegacyExternalStorage="true" into manifest, then wrapping failed.

To Reproduce Steps to reproduce the behavior:

  1. Set app targetSdkVersion to 29
  2. Add android:requestLegacyExternalStorage="true" in app manifest
  3. Build & Sign apk
  4. Wrap apk

Expected behavior: Wrap successfully.

Screenshots and logs:

Application wrapping in progress. App Wrapping Tool Version: 1.0.2676.4 Using Apktool 2.4.0 on app-release.apk Loading resource table... Decoding AndroidManifest.xml with resources... Loading resource table from file: C:\Users\XXX\framework\1.apk Regular manifest package... Decoding file-resources... Win version: 0x4a61000a = 1247870986 (Windows Vista) Decoding values / XMLs... Baksmaling classes.dex... Copying assets and libs... Copying unknown files... Copying original files... Using Apktool 2.4.0 on IntuneAppBase.apk Loading resource table... Decoding AndroidManifest.xml with resources... Loading resource table from file: C:\Users\XXX\framework\1.apk Regular manifest package... Decoding file-resources... Decoding values / XMLs... Baksmaling classes.dex... Copying assets and libs... Copying unknown files... Copying original files... Checking whether resources has changed... Building resources... C:\Users\XXX\sourceApk\res\values\public.xml:944: error: resource 'drawable/$avd_hide_password0' has invalid entry name '$avd_hide_password0'. Invalid character '$avd_hide_password0'. C:\Users\XXX\sourceApk\res\values\public.xml:945: error: resource 'drawable/$avd_hide_password1' has invalid entry name '$avd_hide_password1'. Invalid character '$avd_hide_password1'. C:\Users\XXX\sourceApk\res\values\public.xml:946: error: resource 'drawable/$avd_hide_password2' has invalid entry name '$avd_hide_password2'. Invalid character '$avd_hide_password2'. C:\Users\XXX\sourceApk\res\values\public.xml:947: error: resource 'drawable/$avd_show_password0' has invalid entry name '$avd_show_password0'. Invalid character '$avd_show_password0'. C:\Users\XXX\sourceApk\res\values\public.xml:948: error: resource 'drawable/$avd_show_password1' has invalid entry name '$avd_show_password1'. Invalid character '$avd_show_password1'. C:\Users\XXX\sourceApk\res\values\public.xml:949: error: resource 'drawable/$avd_show_password2' has invalid entry name '$avd_show_password2'. Invalid character '$avd_show_password2'. C:\Users\XXX\sourceApk\res\values\public.xml:950: error: resource 'drawable/$ic_launcher_foreground0' has invalid entry name '$ic_launcher_foreground0'. Invalid character '$ic_launcher_foreground__0'. aapt2 compile command ran: [C:\Users\XXX\brut_util_Jar_6516806088557161733.tmp, compile, --dir, C:\Users\XXX\sourceApk\res, --legacy, -o, C:\Users\XXX\sourceApk\build\resources.zip] C:\Users\XXX\sourceApk\AndroidManifest.xml:3: error: attribute android:requestLegacyExternalStorage not found. error: failed processing manifest. Failed to package app. com.microsoft.intune.mam.apppackager.utils.AppPackagerException: Failed to load app resource table. com.microsoft.intune.mam.apppackager.utils.ResourceUtils.loadResourceTable(ResourceUtils.java:159) com.microsoft.intune.mam.apppackager.utils.ResourceUtils.mergeResources(ResourceUtils.java:102) com.microsoft.intune.mam.apppackager.WrapperAgent.wrapResources(WrapperAgent.java:177) com.microsoft.intune.mam.apppackager.AbstractWrapperAgent.wrap(AbstractWrapperAgent.java:66) com.microsoft.intune.mam.apppackager.AppPackager.packageApp(AppPackager.java:117) com.microsoft.intune.mam.apppackager.PackagerMain.mainInternal(PackagerMain.java:223) com.microsoft.intune.mam.apppackager.PackagerMain.main(PackagerMain.java:59) brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [C:\Users\XXX\brut_util_Jar_6516806088557161733.tmp, link, -o, C:\Users\XXX\APKTOOL1962742739692646152.tmp, --package-id, 127, --rename-manifest-package, AppPackager.AppBase, --rename-instrumentation-target-package, AppPackager.AppBase, --no-auto-version, --no-version-vectors, --no-version-transitions, --no-resource-deduping, -0, arsc, -I, C:\Users\XXX\framework\1.apk, --manifest, C:\Users\XXX\sourceApk\AndroidManifest.xml, C:\Users\XXX\sourceApk\build\resources.zip] brut.androlib.Androlib.buildResourcesFull(Androlib.java:503) com.microsoft.intune.mam.apppackager.utils.ResourceUtils.loadResourceTable(ResourceUtils.java:150) com.microsoft.intune.mam.apppackager.utils.ResourceUtils.mergeResources(ResourceUtils.java:102) com.microsoft.intune.mam.apppackager.WrapperAgent.wrapResources(WrapperAgent.java:177) com.microsoft.intune.mam.apppackager.AbstractWrapperAgent.wrap(AbstractWrapperAgent.java:66) com.microsoft.intune.mam.apppackager.AppPackager.packageApp(AppPackager.java:117) com.microsoft.intune.mam.apppackager.PackagerMain.mainInternal(PackagerMain.java:223) com.microsoft.intune.mam.apppackager.PackagerMain.main(PackagerMain.java:59) brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [C:\Users\XXX\brut_util_Jar_6516806088557161733.tmp, link, -o, C:\Users\XXX\APKTOOL1962742739692646152.tmp, --package-id, 127, --rename-manifest-package, AppPackager.AppBase, --rename-instrumentation-target-package, AppPackager.AppBase, --no-auto-version, --no-version-vectors, --no-version-transitions, --no-resource-deduping, -0, arsc, -I, C:\Users\XXX\framework\1.apk, --manifest, C:\Users\XXX\sourceApk\AndroidManifest.xml, C:\Users\XXX\sourceApk\build\resources.zip] brut.androlib.res.AndrolibResources.aapt2Package(AndrolibResources.java:473) brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:601) brut.androlib.Androlib.buildResourcesFull(Androlib.java:481) com.microsoft.intune.mam.apppackager.utils.ResourceUtils.loadResourceTable(ResourceUtils.java:150) com.microsoft.intune.mam.apppackager.utils.ResourceUtils.mergeResources(ResourceUtils.java:102) com.microsoft.intune.mam.apppackager.WrapperAgent.wrapResources(WrapperAgent.java:177) com.microsoft.intune.mam.apppackager.AbstractWrapperAgent.wrap(AbstractWrapperAgent.java:66) com.microsoft.intune.mam.apppackager.AppPackager.packageApp(AppPackager.java:117) com.microsoft.intune.mam.apppackager.PackagerMain.mainInternal(PackagerMain.java:223) com.microsoft.intune.mam.apppackager.PackagerMain.main(PackagerMain.java:59) brut.common.BrutException: could not exec (exit code = 1): [C:\Users\XXX\brut_util_Jar_6516806088557161733.tmp, link, -o, C:\Users\XXX\APKTOOL1962742739692646152.tmp, --package-id, 127, --rename-manifest-package, AppPackager.AppBase, --rename-instrumentation-target-package, AppPackager.AppBase, --no-auto-version, --no-version-vectors, --no-version-transitions, --no-resource-deduping, -0, arsc, -I, C:\Users\XXX\framework\1.apk, --manifest, C:\Users\XXX\sourceApk\AndroidManifest.xml, C:\Users\XXX\sourceApk\build\resources.zip] brut.util.OS.exec(OS.java:98) brut.androlib.res.AndrolibResources.aapt2Package(AndrolibResources.java:469) brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:601) brut.androlib.Androlib.buildResourcesFull(Androlib.java:481) com.microsoft.intune.mam.apppackager.utils.ResourceUtils.loadResourceTable(ResourceUtils.java:150) com.microsoft.intune.mam.apppackager.utils.ResourceUtils.mergeResources(ResourceUtils.java:102) com.microsoft.intune.mam.apppackager.WrapperAgent.wrapResources(WrapperAgent.java:177) com.microsoft.intune.mam.apppackager.AbstractWrapperAgent.wrap(AbstractWrapperAgent.java:66) com.microsoft.intune.mam.apppackager.AppPackager.packageApp(AppPackager.java:117) com.microsoft.intune.mam.apppackager.PackagerMain.mainInternal(PackagerMain.java:223) com.microsoft.intune.mam.apppackager.PackagerMain.main(PackagerMain.java:59) Failed to load app resource table. Verbose logs can be found at: C:\Users\XXX\IntuneAppWrappingToolLog_20200224_110817.txt. The application could not be wrapped.

Intune app wrapping tool (please complete the following information):

Additional context: Add any other context about the problem here.

rygo-msft commented 4 years ago

This should now be fixed by the 1.0.2896.3 release https://github.com/msintuneappsdk/intune-app-wrapping-tool-android/releases/tag/1.0.2896.3