2017-03-21 17 views
0

のカスタムURLからjsbundleを私は最近ので、私は自分自身jsBundleをダウンロードして、アプリの起動時にこれを使用することができますiOSの中AppDelegate.swiftでjsBundle URLを変更する方法を見つけた:リアクト - ネイティブのAndroid

bundleLocation = URL(string: "http://www.example.com/myJsBundle.js")! 

let rootView = RCTRootView(bundleURL: bundleLocation, moduleName: "ReactApp", initialProperties: nil, launchOptions:launchOptions) 

self.bridge = rootView?.bridge 

self.window = UIWindow(frame: UIScreen.main.bounds) 
let rootViewController = UIViewController() 

rootViewController.view = rootView 

self.window!.rootViewController = rootViewController; 
self.window!.makeKeyAndVisible() 

return true 

私は今、私はMainApplication.javaファイルを開いて、このコードを参照してくださいAndroidのプロジェクトで同じことをやりたいとき:

public class MainApplication extends Application implements ReactApplication { 

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

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

    @Override 
    public ReactNativeHost getReactNativeHost() { 
    return mReactNativeHost; 
    } 

    @Override 
    public void onCreate() { 
    super.onCreate(); 
    SoLoader.init(this, /* native exopackage */ false); 
    } 
} 

私の質問は、どこで、どのように、今私は、AndroidにjsBundleのカスタムURLを定義することができます?

答えて

1

それは意図された使用は、生産に使用するデバッグ用であるかどうかによって異なります。

デバッグ

は、Android用urlportを切り替える方法でconnecting-to-the-development-serverを参照してください。私の知る限り、あなたが最初にバンドルをダウンロードして、オーバーライドされたメソッドgetJSBundleFileReactNativeHostインスタンス上で使用する必要が認識していますよう

生産

(問題の提供のコードスニペットごとに作成)

@Override 
protected String getJSBundleFile() { 
    return pathToBundleFileDownloaded; // change this 
} 

本番用であれば、この種の機能を提供するライブラリのいくつかを検討することをおすすめします。 CodePushは良い例であり、無料です。

+0

私のテストバンドルは現在assetsフォルダにあります。だから私はURLを試した:file:///android_asset/index.android.bundle。しかし、これはエラーを生成します:そのようなファイルやディレクトリはありません。どのようなアイデアが正しい道になるでしょうか? – ManzMoody

+0

アセットフォルダにバンドルを 'index.android.bundle'という名前で追加する場合、これはデフォルトの場所です。私は 'getJSBundleFile'をオーバーライドせず、' getUseDeveloperSupport'メソッドでfalseを返すか、 'release'をビルドします。 – Stewart

関連する問題