Load assets from same folder as JSbundle (Android)

Summary:
https://github.com/facebook/react-native/issues/3679 was only partially fixed as the behaviour only works on iOS. This implements the same behaviour for Android. If the JSBundle was loaded from the assets folder, this will load images from the built-in resources. Else, load the image from the same folder as the JS bundle.

EDIT: For added clarity:

On iOS,
Bundle Location: 'file:///Path/To/Sample.app/main.bundle'
httpServerLocation: '/assets/module/a/'
Name: 'logo'
type: 'png'
**Resolved Asset location: '/Path/To/Sample.app/assets/module/a/logo.png'**

On Android,
Bundle Location: 'file:///sdcard/Path/To/main.bundle'
httpServerLocation: '/assets/module/a/',
name: 'logo'
type: 'png'
**Resolved Asset location: 'file:///sdcard/Path/To/drawable_mdpi/module_a_logo.png'**
Closes https://github.com/facebook/react-native/pull/4527

Reviewed By: svcscm

Differential Revision: D2788005

Pulled By: mkonicek

fb-gh-sync-id: 3f6462a7ee6370a92dd6727ac422c5de346c3ff1
This commit is contained in:
Geoffrey Goh
2016-01-06 08:45:34 -08:00
committed by facebook-github-bot-9
parent ffd4f991f5
commit e730a9fdd0
6 changed files with 115 additions and 53 deletions

View File

@@ -37,7 +37,7 @@ public abstract class JSBundleLoader {
@Override
public String getSourceUrl() {
return fileName;
return (fileName.startsWith("assets://") ? "" : "file://") + fileName;
}
};
}