2016-06-24 33 views
3

私はデバイス上でデバッグモードで反応しているネイティブアンドロイドアプリを起動しようとしていますが、devボックスをデベロッパーボックスで実行する必要はありません。私は両方のプラットフォームでデバッグバリアント/スキームを使用しています。これは、リリースとデバッグ以外のビルドモードでは反応のネイティブが親しみやすいものではありません。ネイティブAndroidに反応する - デバッグモードでデバイスでのみ実行する方法は?

AppDelegate.mを次のように変更することができました...基本的に、デバッグビルドでbuddybuildによって構築されたものであれば、jsバンドル用のdevマシンは探しません。デバイスを見て:

#ifdef DEBUG 
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary]; 
if (infoPlistDict[@"BUDDYBUILD_BUILD_ID"]) { 
    // deployed via buddybuild, don't use localhost 
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 
} else { 
    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; 
} 
#else 
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 
#endif 

...私はアンドロイドでこれを行う方法を探しています。私はAppDelegate.mのiOSで上記のようにアンドロイド上のjsバンドルの場所をプログラムで変更する方法を知りたいだけですので、私は必要なコードのbuddybuildビットを持っています。今、アンドロイド上のjsバンドルの場所に関連するすべてのコードは、反応ネイティブのパッケージ自体にあるようです。それを動作させるためには、むしろそれをハックしないでしょう。

これ以上の情報を提供できる場合は、教えてください。

答えて

2

Androidでは、​​を変更する必要があります。

apply from: "../../node_modules/react-native/react.gradle"行の前に、APSの配備時にjsアセットをバンドルして含めるように指示する必要があります。例えば

project.ext.react = [ 
    bundleInBuddybuild: true, 
] 
構文は bundleIn${productFlavor}${buildType}

であるか、あなただけのデバッグビルド用のためにそれを行うにしたい場合は

project.ext.react = [ 
    bundleInDebug: true, 
] 
+0

私はあなたが実際に '反応し、ネイティブ実行アンドロイドとしてデバッグバージョンを構築する方法を示すことによって、この答えを完了すべきだと思います'うまく動かない。あなたは 'cd android && ./gradlew assembleDebug'を実行する必要があります。 – ssomnoremac

+0

@ssomnoremac' react-native run-android'が動作するはずです。これはデフォルトでデバッグバージョンをビルドします。別のバリアント(例えば、リリース)をビルドする場合は、 'react-native run-android -variant = release'を使用します。 – Tspoon

+0

あなたが言ったことを実行した後に' run-android'を実行しました。しかし、 'assembleDebug'または' varient = debug'のいずれかを実行した後、バニラrun-androidでバンドルされ始めました。それでもあなたが言及すべきだと思います。 – ssomnoremac

2

私は解決策を要約したいと思いますデバッグビルド内のすべてをバンドルします。特にポイント2のヒントは私のためのトリックでした。ありがとう@Tspoon。

1. Androidのメーカー

  • 環境設定に行く - 実行、展開、ビルド・> - "オンデマンド設定">コンパイラ
  • チェックを外し

2. build.gradle

  • あなたのapp/build.gradleファイル内

    は、次のようにします。apply from ...声明上記の設定を反応させる定義することが重要であること

    project.ext.react = [ 
        // whether to bundle JS and assets in debug mode 
        bundleInDebug: true, 
    
        // whether to bundle JS and assets in release mode 
        bundleInRelease: true, 
    ] 
    
    apply from: "../../node_modules/react-native/react.gradle" 
    
  • NOTE、それ以外の場合は

3を動作しません。APKを作成

  • あなたandroidフォルダ内の./gradlew assembleDebugといつものようにあなたのdevのAPKを作成
関連する問題