Create system Resources explicitly.
diff --git a/src/main/java/com/xtremelabs/robolectric/RobolectricContext.java b/src/main/java/com/xtremelabs/robolectric/RobolectricContext.java
index 788e348..de0b4ce 100644
--- a/src/main/java/com/xtremelabs/robolectric/RobolectricContext.java
+++ b/src/main/java/com/xtremelabs/robolectric/RobolectricContext.java
@@ -8,7 +8,7 @@
 import com.xtremelabs.robolectric.bytecode.Setup;
 import com.xtremelabs.robolectric.bytecode.ShadowWrangler;
 import com.xtremelabs.robolectric.internal.RobolectricTestRunnerInterface;
-import com.xtremelabs.robolectric.res.ResourceLoader;
+import com.xtremelabs.robolectric.res.AndroidResourcePathFinder;
 import com.xtremelabs.robolectric.res.ResourcePath;
 import org.apache.maven.repository.internal.MavenRepositorySystemSession;
 import org.codehaus.plexus.DefaultPlexusContainer;
@@ -166,15 +166,24 @@
     }
 
     public List<ResourcePath> getResourcePaths() {
+        List<ResourcePath> resourcePaths = getResourcePathsWithoutSystem();
+        resourcePaths.add(getSystemResourcePath());
+        return resourcePaths;
+    }
+
+    private List<ResourcePath> getResourcePathsWithoutSystem() {
         List<ResourcePath> resourcePaths = new ArrayList<ResourcePath>();
         resourcePaths.add(getAppManifest().getResourcePath());
         for (AndroidManifest libraryManifest : getLibraryManifests()) {
             resourcePaths.add(libraryManifest.getResourcePath());
         }
-        resourcePaths.add(ResourceLoader.getSystemResourcePath(getAppManifest().getRealSdkVersion(), resourcePaths));
         return resourcePaths;
     }
 
+    public ResourcePath getSystemResourcePath() {
+        return AndroidResourcePathFinder.getSystemResourcePath(getAppManifest().getRealSdkVersion(), getResourcePathsWithoutSystem());
+    }
+
     private Class<?> bootstrapTestClass(Class<?> testClass) {
         Class<?> bootstrappedTestClass = robolectricClassLoader.bootstrap(testClass);
         return bootstrappedTestClass;
diff --git a/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java b/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java
index a734fe5..ab07221 100644
--- a/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java
+++ b/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java
@@ -11,6 +11,7 @@
 import com.xtremelabs.robolectric.res.ResourcePath;
 import com.xtremelabs.robolectric.shadows.ShadowApplication;
 import com.xtremelabs.robolectric.shadows.ShadowLog;
+import com.xtremelabs.robolectric.shadows.ShadowResources;
 import com.xtremelabs.robolectric.util.DatabaseConfig;
 import com.xtremelabs.robolectric.util.DatabaseConfig.DatabaseMap;
 import com.xtremelabs.robolectric.util.DatabaseConfig.UsingDatabaseMap;
@@ -176,6 +177,9 @@
     public void setupApplicationState(Method testMethod) {
         boolean strictI18n = determineI18nStrictState(testMethod);
 
+        ResourceLoader systemResourceLoader = new ResourceLoader(sharedRobolectricContext.getSystemResourcePath());
+        ShadowResources.setSystemResources(systemResourceLoader);
+
         ResourceLoader resourceLoader = getResourceLoader(sharedRobolectricContext.getAppManifest());
         resourceLoader.setQualifiers(determineResourceQualifiers(testMethod));
         resourceLoader.setStrictI18n(strictI18n);
diff --git a/src/main/java/com/xtremelabs/robolectric/res/AndroidResourcePathFinder.java b/src/main/java/com/xtremelabs/robolectric/res/AndroidResourcePathFinder.java
index 38fde8a..e2fe791 100644
--- a/src/main/java/com/xtremelabs/robolectric/res/AndroidResourcePathFinder.java
+++ b/src/main/java/com/xtremelabs/robolectric/res/AndroidResourcePathFinder.java
@@ -1,5 +1,6 @@
 package com.xtremelabs.robolectric.res;
 
+import android.R;
 import com.xtremelabs.robolectric.util.PropertiesHelper;
 
 import java.io.BufferedReader;
@@ -14,6 +15,11 @@
     private final int sdkVersion;
     private final ResourcePath resourcePath;
 
+    public static ResourcePath getSystemResourcePath(int sdkVersion, List<ResourcePath> resourcePaths) {
+        String pathToAndroidResources = new AndroidResourcePathFinder(sdkVersion, resourcePaths).getPathToAndroidResources();
+        return new ResourcePath(R.class, new File(pathToAndroidResources), null);
+    }
+
     public AndroidResourcePathFinder(int sdkVersion, List<ResourcePath> resourcePaths) {
         this.resourcePath = resourcePaths == null ? new ResourcePath(null, new File("."), null) : resourcePaths.get(0);
         this.sdkVersion = sdkVersion;
diff --git a/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java b/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java
index 15c41db..dcc5f8d 100644
--- a/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java
+++ b/src/main/java/com/xtremelabs/robolectric/res/ResourceLoader.java
@@ -1,6 +1,5 @@
 package com.xtremelabs.robolectric.res;
 
-import android.R;
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
@@ -60,21 +59,12 @@
     private final Set<Integer> ninePatchDrawableIds = new HashSet<Integer>();
     private String qualifiers = "";
 
-    public static ResourcePath getSystemResourcePath(int sdkVersion, List<ResourcePath> resourcePaths) {
-        String pathToAndroidResources = new AndroidResourcePathFinder(sdkVersion, resourcePaths).getPathToAndroidResources();
-        return new ResourcePath(R.class, new File(pathToAndroidResources), null);
-    }
-
-    public ResourceLoader(List<ResourcePath> resourcePaths) {
-        this(new ResourceExtractor(resourcePaths), resourcePaths);
-    }
-
-    public ResourceLoader(ResourcePath... resourcePaths) throws Exception {
+    public ResourceLoader(ResourcePath... resourcePaths) {
         this(asList(resourcePaths));
     }
 
-    private ResourceLoader(ResourceExtractor resourceExtractor, List<ResourcePath> resourcePaths) {
-        this.resourceExtractor = resourceExtractor;
+    public ResourceLoader(List<ResourcePath> resourcePaths) {
+        this.resourceExtractor = new ResourceExtractor(resourcePaths);
         this.resourcePaths = Collections.unmodifiableList(resourcePaths);
 
         attrResourceLoader = new AttrResourceLoader();
@@ -87,10 +77,6 @@
         roboLayoutInflater = new RoboLayoutInflater(resourceExtractor, viewNodes);
     }
 
-    public ResourceLoader copy() {
-        return new ResourceLoader(resourceExtractor, resourcePaths);
-    }
-
     public void setStrictI18n(boolean strict) {
         this.strictI18n = strict;
         viewLoader.setStrictI18n(strict);
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowApplication.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowApplication.java
index 190d7b2..e333b12 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowApplication.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowApplication.java
@@ -110,7 +110,7 @@
         ShadowApplication shadowApplication = shadowOf(application);
         if (shadowApplication.resourceLoader != null) throw new RuntimeException("ResourceLoader already set!");
         shadowApplication.resourceLoader = resourceLoader;
-        shadowApplication.resources = ShadowResources.bind(new Resources(null, null, null), resourceLoader);        
+        shadowApplication.resources = ShadowResources.bind(new Resources(null, null, null), resourceLoader);
         return application;
     }
 
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java
index c1e6f8c..c7e3975 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowResources.java
@@ -33,6 +33,10 @@
 
     private static Resources system = null;
 
+    public static void setSystemResources(ResourceLoader systemResourceLoader) {
+        system = ShadowResources.bind(new Resources(null, null, null), systemResourceLoader);
+    }
+
     static Resources bind(Resources resources, ResourceLoader resourceLoader) {
         ShadowResources shadowResources = shadowOf(resources);
         if (shadowResources.resourceLoader != null) throw new RuntimeException("ResourceLoader already set!");
@@ -257,14 +261,6 @@
 
     @Implementation
     public static Resources getSystem() {
-        if (system == null) {
-            try {
-                initSystemResources();
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-
         return system;
     }
 
@@ -275,18 +271,4 @@
         }
         return instance;
     }
-
-
-  /**
-     * Creates system resource loader from a copy of the application resource loader. Sets
-     * a flag to exclude local resources on initialization.
-     */
-    private static void initSystemResources() throws Exception {
-        ShadowApplication shadowApplication = getShadowApplication();
-        if (shadowApplication == null) return; // short-circuit if we're called before an application has been created
-
-        final ResourceLoader appResourceLoader = shadowApplication.getResourceLoader();
-        final ResourceLoader systemResourceLoader = appResourceLoader.copy();
-        system = ShadowResources.bind(new Resources(null, null, null), systemResourceLoader);
-    }
 }
diff --git a/src/test/java/com/xtremelabs/robolectric/AndroidManifestTest.java b/src/test/java/com/xtremelabs/robolectric/AndroidManifestTest.java
index 4ec84be..9f34447 100644
--- a/src/test/java/com/xtremelabs/robolectric/AndroidManifestTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/AndroidManifestTest.java
@@ -3,7 +3,7 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import com.xtremelabs.robolectric.res.ResourceLoader;
+import com.xtremelabs.robolectric.res.AndroidResourcePathFinder;
 import com.xtremelabs.robolectric.res.ResourcePath;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -85,7 +85,7 @@
         assertEquals("./src/test/resources/lib1/../lib3/res", resourcePaths.get(2).resourceBase.getPath());
         assertEquals("./src/test/resources/lib2/res", resourcePaths.get(3).resourceBase.getPath());
 
-        File resourceBase = ResourceLoader.getSystemResourcePath(appManifest.getRealSdkVersion(), resourcePaths).resourceBase;
+        File resourceBase = AndroidResourcePathFinder.getSystemResourcePath(appManifest.getRealSdkVersion(), resourcePaths).resourceBase;
         assertEquals(resourceBase.getPath(), resourcePaths.get(4).resourceBase.getPath());
     }
 
diff --git a/src/test/java/com/xtremelabs/robolectric/RobolectricTestRunnerTest.java b/src/test/java/com/xtremelabs/robolectric/RobolectricTestRunnerTest.java
index 5d9a8b2..da61162 100644
--- a/src/test/java/com/xtremelabs/robolectric/RobolectricTestRunnerTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/RobolectricTestRunnerTest.java
@@ -1,7 +1,7 @@
 package com.xtremelabs.robolectric;
 
-import android.app.Activity;
 import android.app.Application;
+import android.content.res.Resources;
 import android.widget.TextView;
 import com.xtremelabs.robolectric.annotation.DisableStrictI18n;
 import com.xtremelabs.robolectric.annotation.EnableStrictI18n;
@@ -17,7 +17,7 @@
 
 @RunWith(RobolectricTestRunnerTest.RunnerForTesting.class)
 public class RobolectricTestRunnerTest {
-	
+
     @Test
     public void shouldInitializeAndBindApplicationButNotCallOnCreate() throws Exception {
         assertNotNull(Robolectric.application);
@@ -26,6 +26,15 @@
         assertNotNull(shadowOf(Robolectric.application).getResourceLoader());
     }
 
+    @Test public void shouldSetUpSystemResources() throws Exception {
+        assertNotNull(Resources.getSystem());
+        assertEquals(Robolectric.application.getResources().getString(android.R.string.copy),
+                Resources.getSystem().getString(android.R.string.copy));
+
+        assertNotNull(Robolectric.application.getResources().getString(R.string.howdy));
+        assertNull(Resources.getSystem().getString(R.string.howdy));
+    }
+
     @Test
     public void setStaticValue_shouldIgnoreFinalModifier() {
         RobolectricContext.setStaticValue(android.os.Build.class, "MODEL", "expected value");
@@ -66,42 +75,42 @@
     public void internalBeforeTest_doesNotSetI18nStrictModeFromSystemIfPropertyAbsent() {
         assertFalse(Robolectric.getShadowApplication().getResourceLoader().getStrictI18n());
     }
-    
+
     @Test
     @EnableStrictI18n
     public void methodBlock_setsI18nStrictModeForClassHandler() {
-    	TextView tv = new TextView(Robolectric.application);
-    	try {
-    		tv.setText("Foo");
-    		fail("TextView#setText(String) should produce an i18nException");
-    	} catch (Exception e) {
-    		// Compare exception name because it was loaded in the instrumented classloader
-    		assertEquals("com.xtremelabs.robolectric.util.I18nException", e.getClass().getName());
-    	}
+        TextView tv = new TextView(Robolectric.application);
+        try {
+            tv.setText("Foo");
+            fail("TextView#setText(String) should produce an i18nException");
+        } catch (Exception e) {
+            // Compare exception name because it was loaded in the instrumented classloader
+            assertEquals("com.xtremelabs.robolectric.util.I18nException", e.getClass().getName());
+        }
     }
-    
+
     @Test
     @EnableStrictI18n
     public void createResourceLoader_setsI18nStrictModeForResourceLoader() {
-    	ResourceLoader loader = Robolectric.shadowOf(Robolectric.application).getResourceLoader();
-    	assertTrue(Robolectric.getShadowApplication().getResourceLoader().getStrictI18n());
-		assertTrue(loader.getStrictI18n());
-    	try {
-    		loader.getRoboLayoutInflater().inflateView(Robolectric.application, R.layout.text_views, null);
-    		fail("ResourceLoader#inflateView should produce an i18nException");
-    	} catch (Exception e) {
+        ResourceLoader loader = Robolectric.shadowOf(Robolectric.application).getResourceLoader();
+        assertTrue(Robolectric.getShadowApplication().getResourceLoader().getStrictI18n());
+        assertTrue(loader.getStrictI18n());
+        try {
+            loader.getRoboLayoutInflater().inflateView(Robolectric.application, R.layout.text_views, null);
+            fail("ResourceLoader#inflateView should produce an i18nException");
+        } catch (Exception e) {
             // classes may not be identical (different classloaders) but should have the same name
-    		assertEquals(I18nException.class.getName(), e.getClass().getName());
-    	}
+            assertEquals(I18nException.class.getName(), e.getClass().getName());
+        }
     }
-    
+
     public static class RunnerForTesting extends TestRunners.WithDefaults {
-    	public static RunnerForTesting instance;
+        public static RunnerForTesting instance;
         private final AndroidManifest androidManifest;
 
         public RunnerForTesting(Class<?> testClass) throws InitializationError {
             super(testClass);
-        	instance = this;
+            instance = this;
             androidManifest = getRobolectricContext().getAppManifest();
         }
 
@@ -117,9 +126,4 @@
             this.onCreateWasCalled = true;
         }
     }
-    
-    public static class MyTestActivity extends Activity {
-    	
-    }
-
 }
diff --git a/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java b/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java
index b7034c1..8472361 100644
--- a/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java
@@ -32,7 +32,7 @@
     @Before
     public void setUp() throws Exception {
         resourcePath = new ResourcePath(R.class, resourceFile("res"), resourceFile("assets"));
-        systemResourcePath = ResourceLoader.getSystemResourcePath(Robolectric.DEFAULT_SDK_VERSION, asList(resourcePath));
+        systemResourcePath = AndroidResourcePathFinder.getSystemResourcePath(Robolectric.DEFAULT_SDK_VERSION, asList(resourcePath));
     }
 
     @Test
diff --git a/src/test/java/com/xtremelabs/robolectric/shadows/ApplicationTest.java b/src/test/java/com/xtremelabs/robolectric/shadows/ApplicationTest.java
index 124ee0c..0531871 100644
--- a/src/test/java/com/xtremelabs/robolectric/shadows/ApplicationTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/shadows/ApplicationTest.java
@@ -47,11 +47,11 @@
         ResourceLoader resourceLoader1 = new ResourceLoader() {
             @Override public String getStringValue(int id) { return "title from resourceLoader1"; }
         };
-        Application app1 = ShadowApplication.bind(new Application(), resourceLoader1);
-
         ResourceLoader resourceLoader2 = new ResourceLoader() {
             @Override public String getStringValue(int id) { return "title from resourceLoader2"; }
         };
+
+        Application app1 = ShadowApplication.bind(new Application(), resourceLoader1);
         Application app2 = ShadowApplication.bind(new Application(), resourceLoader2);
 
         assertEquals("title from resourceLoader1", new ContextWrapper(app1).getResources().getString(R.id.title));
diff --git a/src/test/java/com/xtremelabs/robolectric/util/TestUtil.java b/src/test/java/com/xtremelabs/robolectric/util/TestUtil.java
index a18f358..95e3d1e 100644
--- a/src/test/java/com/xtremelabs/robolectric/util/TestUtil.java
+++ b/src/test/java/com/xtremelabs/robolectric/util/TestUtil.java
@@ -2,7 +2,7 @@
 
 import com.xtremelabs.robolectric.R;
 import com.xtremelabs.robolectric.AndroidManifest;
-import com.xtremelabs.robolectric.res.ResourceLoader;
+import com.xtremelabs.robolectric.res.AndroidResourcePathFinder;
 import com.xtremelabs.robolectric.res.ResourcePath;
 
 import java.io.BufferedReader;
@@ -25,7 +25,7 @@
 public abstract class TestUtil {
     public static final ResourcePath TEST_RESOURCE_PATH = new ResourcePath(R.class, resourceFile("res"), resourceFile("assets"));
     public static final String TEST_PACKAGE = R.class.getPackage().getName();
-    public static final ResourcePath SYSTEM_RESOURCE_PATH = ResourceLoader.getSystemResourcePath(DEFAULT_SDK_VERSION, asList(testResources()));
+    public static final ResourcePath SYSTEM_RESOURCE_PATH = AndroidResourcePathFinder.getSystemResourcePath(DEFAULT_SDK_VERSION, asList(testResources()));
     public static final String SYSTEM_PACKAGE = android.R.class.getPackage().getName();
     public static File testDirLocation;