From 54130de7d2a0827179acaa35980dbce419cb4fca Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Wed, 20 Aug 2014 10:49:13 -0700 Subject: [PATCH] Fix crash when launching Activities in 'android' package The LoadedApk for the 'android' package doesn't have a resource directory set. This is fine since the AssetManager loads the 'android' package's resources by default. This is a regression caused by https://googleplex-android-review.googlesource.com/#/c/525840/ Bug:17104110 Change-Id: I8a2158a75b4ff0e941837c11a2cb77a7aad09270 --- core/java/android/app/ResourcesManager.java | 9 +++++++-- core/java/android/content/res/ResourcesKey.java | 8 ++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index 3c1311537848e..1691d8e28f5e6 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -178,8 +178,13 @@ public class ResourcesManager { //} AssetManager assets = new AssetManager(); - if (assets.addAssetPath(resDir) == 0) { - return null; + // resDir can be null if the 'android' package is creating a new Resources object. + // This is fine, since each AssetManager automatically loads the 'android' package + // already. + if (resDir != null) { + if (assets.addAssetPath(resDir) == 0) { + return null; + } } if (splitResDirs != null) { diff --git a/core/java/android/content/res/ResourcesKey.java b/core/java/android/content/res/ResourcesKey.java index 53e0f2c00e0d9..e0f1b3a3f079b 100644 --- a/core/java/android/content/res/ResourcesKey.java +++ b/core/java/android/content/res/ResourcesKey.java @@ -62,8 +62,12 @@ public final class ResourcesKey { return false; } ResourcesKey peer = (ResourcesKey) obj; - if (!mResDir.equals(peer.mResDir)) { - return false; + if (mResDir != peer.mResDir) { + if (mResDir == null || peer.mResDir == null) { + return false; + } else if (!mResDir.equals(peer.mResDir)) { + return false; + } } if (mDisplayId != peer.mDisplayId) { return false;