2015-11-04 46 views
4

對於我的Android應用程序,我需要能夠在運行時動態更新軟件包,並在我的資產中使用預先保存的軟件包作爲回退。我在Official Documentation.如何在Android中從網絡加載反應原生JS包?

中找不到任何有關此信息的信息在iOS版的react native中,有一種方法可讓您指定一個用於加載JS束的URL,但我還沒有看到相應的Android的選項。 Android對此有何可能?

更新 它看起來像RN團隊一直在做這個很特點,將是下一個版本的一部分: https://github.com/facebook/react-native/commit/3a743ef228a14e07c77c5488b080413643ec9c4b

回答

2

是的,這是可能的。你可以試試Code Push(但是他們的android版本還不穩定),或者找出如何在他們的代碼中做到這一點。

+0

代碼推送是dynamicaly加載JS非常好的工具和更新發布到它 – John

1

1.下載軟件包文件並管理路徑。

2.new一個ReactNativeHost在您的應用程序:

public String mBundleFilePath = ""; 
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 
    @Override 
    protected boolean getUseDeveloperSupport() { 
     return BuildConfig.DEBUG; 
    } 

    @Override 
    protected List<ReactPackage> getPackages() { 
     return Arrays.asList(new MainReactPackage(), new MyReactPackage()); 
    } 

    @Override 
    protected String getJSBundleFile() { 
     return mBundleFilePath; 
    } 
}; 

3.before開始ReactActivity,分配烏爾捆綁文件的變量的路徑:mBundleFilePath。

public class ReactNativeActivity extends ReactActivity { 
    public static void launchSelf(...) { 
     MyApplication.getInstance().mBundleFilePath = path; 
     COMPONENT_NAME = ...; 
     Intent intent = new Intent(activity,ReactNativeActivity.class); 
     activity.startActivity(..); 
    } 
    ... 
} 

源代碼:

com.facebook.react.ReactNativeHost#createReactInstanceManager 
com.facebook.react.ReactInstanceManager.Builder#setJSBundleFile 
com.facebook.react.cxxbridge.JSBundleLoader#createFileLoader 

...

它可以幫助U:)

+0

上午能夠下載和設置捆綁包,但沒有圖像顯示,同樣工作正常如果我從資產文件夾 – Bytecode

+0

設置捆綁我面臨同樣的問題圖像未加載我knwe這是老問題,但任何提示如何使圖像顯示高度讚賞。我的RN版本是0.51 –

相關問題