Fix mobile-install v1 on Pie devices
Ref: https://github.com/bazelbuild/bazel/issues/6814
RELNOTES: Fixed a mobile-install v1 bug when deploying to Android 9 Pie devices. https://github.com/bazelbuild/bazel/issues/6814
PiperOrigin-RevId: 224566583
diff --git a/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/StubApplication.java b/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/StubApplication.java
index 5cf15fa..4c1aa2b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/StubApplication.java
+++ b/src/tools/android/java/com/google/devtools/build/android/incrementaldeployment/StubApplication.java
@@ -262,11 +262,15 @@
throw new IllegalStateException("Could not create new AssetManager");
}
- // Kitkat needs this method call, Lollipop doesn't. However, it doesn't seem to cause any harm
- // in L, so we do it unconditionally.
- Method mEnsureStringBlocks = AssetManager.class.getDeclaredMethod("ensureStringBlocks");
- mEnsureStringBlocks.setAccessible(true);
- mEnsureStringBlocks.invoke(newAssetManager);
+ if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.KITKAT) {
+ // Kitkat needs this method call, Lollipop doesn't.
+ //
+ // This method call was removed from Pie:
+ // https://android.googlesource.com/platform/frameworks/base/+/bebfcc46a249a70af04bc18490a897888a142fb8%5E%21/#F7
+ Method mEnsureStringBlocks = AssetManager.class.getDeclaredMethod("ensureStringBlocks");
+ mEnsureStringBlocks.setAccessible(true);
+ mEnsureStringBlocks.invoke(newAssetManager);
+ }
// Find the singleton instance of ResourcesManager
Class<?> clazz = Class.forName("android.app.ResourcesManager");