diff options
author | Jeff Hamilton <jham@google.com> | 2013-06-27 04:45:49 +0000 |
---|---|---|
committer | Jeff Hamilton <jham@google.com> | 2013-06-27 04:45:49 +0000 |
commit | 3daf5555d7e08c67aa94e002f5d4347bc1ae3eef (patch) | |
tree | 1e1db0e1de8d02731dd0ee2e2ca6a94878ac6921 | |
parent | 03e9d1058a5f759d0e356563d7e8499ff71b5165 (diff) | |
download | robolectric-3daf5555d7e08c67aa94e002f5d4347bc1ae3eef.tar.gz |
Revert "Fix resource loading in robolectric for API 18+."
This reverts commit 03e9d1058a5f759d0e356563d7e8499ff71b5165.
Change-Id: Ib79f9954bea69eaba1b7a9b9c2b908b1622bc348
-rw-r--r-- | src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java | 87 |
1 files changed, 40 insertions, 47 deletions
diff --git a/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java b/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java index aa067f0ca..90b788882 100644 --- a/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java +++ b/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java @@ -1,12 +1,5 @@ package com.xtremelabs.robolectric.res; -import static com.xtremelabs.robolectric.Robolectric.shadowOf; - -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowContextWrapper; -import com.xtremelabs.robolectric.util.I18nException; -import com.xtremelabs.robolectric.util.PropertiesHelper; - import android.R; import android.content.Context; import android.graphics.drawable.AnimationDrawable; @@ -17,18 +10,16 @@ import android.text.TextUtils; import android.view.Menu; import android.view.View; import android.view.ViewGroup; +import com.xtremelabs.robolectric.Robolectric; +import com.xtremelabs.robolectric.shadows.ShadowContextWrapper; +import com.xtremelabs.robolectric.util.I18nException; +import com.xtremelabs.robolectric.util.PropertiesHelper; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileFilter; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.*; import java.lang.reflect.Field; -import java.util.HashSet; -import java.util.Properties; -import java.util.Set; +import java.util.*; + +import static com.xtremelabs.robolectric.Robolectric.shadowOf; public class ResourceLoader { private static final FileFilter MENU_DIR_FILE_FILTER = new FileFilter() { @@ -271,32 +262,18 @@ public class ResourceLoader { } private String getPathToAndroidResources() { - String resFolder = getAndroidResourcePathFromLocalProperties - if (resFolder == null) { - resFolder = getAndroidResourcePathFromSystemEnvironment(); - if (resFolder == null) { - resFolder = getAndroidResourcePathFromSystemProperty(); - if (resFolder == null) { - resFolder = getAndroidResourcePathByExecingWhichAndroid(); - } - } - } - - // Go through last 5 sdk versions looking for resource folders. - if (resFolder != null) { - for (int i = sdkVersion; i >= sdkVersion - 5 && i >= 4; i--) { - File resourcePath = new File(resFolder, getAndroidResourceSubPath(i)); - if (resourcePath.exists()) { - return resourcePath.getAbsolutePath(); - } else { - System.out.println("WARNING: Unable to find Android resources at: " + - resourcePath.toString() + " continuing."); - } - } - } else { - System.out.println("WARNING: Unable to find path to Android SDK"); + String resourcePath; + if ( ( resourcePath = getAndroidResourcePathFromLocalProperties() ) != null ) { + return resourcePath; + } else if ( ( resourcePath = getAndroidResourcePathFromSystemEnvironment() ) != null ) { + return resourcePath; + } else if ( ( resourcePath = getAndroidResourcePathFromSystemProperty() ) != null ) { + return resourcePath; + } else if ( ( resourcePath = getAndroidResourcePathByExecingWhichAndroid() ) != null ) { + return resourcePath; } + System.out.println( "WARNING: Unable to find path to Android SDK" ); return null; } @@ -314,7 +291,10 @@ public class ResourceLoader { try { localProperties.load( new FileInputStream( localPropertiesFile ) ); PropertiesHelper.doSubstitutions( localProperties ); - return localProperties.getProperty( "sdk.dir" ); + String sdkPath = localProperties.getProperty( "sdk.dir" ); + if ( sdkPath != null ) { + return getResourcePathFromSdkPath( sdkPath ); + } } catch ( IOException e ) { // fine, we'll try something else } @@ -324,12 +304,20 @@ public class ResourceLoader { private String getAndroidResourcePathFromSystemEnvironment() { // Hand tested - return System.getenv().get( "ANDROID_HOME" ); + String resourcePath = System.getenv().get( "ANDROID_HOME" ); + if ( resourcePath != null ) { + return new File( resourcePath, getAndroidResourceSubPath() ).toString(); + } + return null; } private String getAndroidResourcePathFromSystemProperty() { // this is used by the android-maven-plugin - return System.getProperty( "android.sdk.path" ); + String resourcePath = System.getProperty( "android.sdk.path" ); + if ( resourcePath != null ) { + return new File( resourcePath, getAndroidResourceSubPath() ).toString(); + } + return null; } private String getAndroidResourcePathByExecingWhichAndroid() { @@ -340,7 +328,7 @@ public class ResourceLoader { Process process = Runtime.getRuntime().exec( new String[] { "which", "android" } ); String sdkPath = new BufferedReader( new InputStreamReader( process.getInputStream() ) ).readLine(); if ( sdkPath != null && sdkPath.endsWith( "tools/android" ) ) { - return sdkPath.substring(0, sdkPath.indexOf( "tools/android")); + return getResourcePathFromSdkPath( sdkPath.substring( 0, sdkPath.indexOf( "tools/android" ) ) ); } } catch ( IOException e ) { // fine we'll try something else @@ -348,8 +336,13 @@ public class ResourceLoader { return null; } - private static String getAndroidResourceSubPath(int version) { - return "platforms/android-" + version + "/data/res"; + private String getResourcePathFromSdkPath( String sdkPath ) { + File androidResourcePath = new File( sdkPath, getAndroidResourceSubPath() ); + return androidResourcePath.exists() ? androidResourcePath.toString() : null; + } + + private String getAndroidResourceSubPath() { + return "platforms/android-" + sdkVersion + "/data/res"; } static boolean isLayoutDirectory( String path ) { |