2016-10-14 53 views
6

反應本土的init awesomeProject開始一個新項目後,我試着調整自己的項目,把index.ios.jsindex.android .ios位於名爲src的通用文件夾中。變化項文件路徑和iOS的反應本地項目

當我執行反應本地運行的Android,我得到以下錯誤:

Error on android device

在那裏我有改變反應母語入境文件的搜索在正確的道路?

+0

iOS版可以運行開發/ produc模式請參閱http://stackoverflow.com/questions/30694367/how-to-rename-react-native-entry-file-index-ios-js –

回答

17

我用的反應原生0.35

爲了發展,你需要打開一個文件

MyProject/android/app/src/main/java/com/MyProject/MainApplication.java

,並覆蓋叫getJSMainModuleNameReactNativeHost方法的步驟如下:

package com.MyProject; 

// ... 

public class MainApplication extends Application implements ReactApplication { 

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 

    // ... 

    // ADD THE LINES BELOW 

    @Override 
    protected String getJSMainModuleName() { 
     return "src/index.android"; 
    } 

    // ADD THE LINES ABOVE 

    }; 

    // ... 
} 

這種方式應用程序將知道從包裝服務器獲取模塊的位置。

對於生產,當你使用cd android && ./gradlew assembleRelease建立自己的APK你就必須修改文件

MyProject/android/app/build.gradle

,並添加自定義生成選項,之前apply from: "../../node_modules/react-native/react.gradle"線確保將它們放置:

apply plugin: "com.android.application" 

import com.android.build.OutputFile 

// ... 

// ADD THE LINES BELOW 

project.ext.react = [ 
    // the entry file for bundle generation 
    entryFile: "src/index.android.js", 
] 

// ADD THE LINES ABOVE 

// ... 

apply from: "../../node_modules/react-native/react.gradle" 

不幸的是,我現在還沒有iOS設置,我還是無法幫到你。

+0

在dev設置上工作得非常好。我現在不需要生產設置,但我認爲在我需要它時會工作。非常感謝。 –

+0

我將'index.android.js'和'index.ios.js'合併爲'index.js'。對我來說,它是'entryFile:「index.js」,'。工作順利btw! –

5

感謝Michael的信息! 我爲iOS做了這種情況,併爲Android和iOS完成了答案。

和Android一樣,開發和生產的答案也不同。

  1. 促進發展(調試模式)

    AppDelegate.m

    設定參數jsBundleURLForBundleRoot爲項文件的路徑和moduleName當你在RN JS註冊的組件。例如,如果我想更改的條目JS文件JS /屏幕/ LoginScreen.js和組件LoginScreen,做到以下幾點:

    jsCodeLocation = [[RCTBundleURLProvider sharedSettings] 
        jsBundleURLForBundleRoot:@"js/screen/LoginScreen" 
        fallbackResource:nil]; 
    rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation             
        moduleName:@"LoginScreen" 
        initialProperties:nil            
        launchOptions:launchOptions]; 
    
  2. 對於生產(釋放模式)

生產模式爲

,Xcode在生成時生成jsbundle文件。除了我們爲調試模式所做的工作之外,我們還需要告訴Xcode jsbundle的入口文件。

轉到當前目標的「構建階段」選項卡。 在「捆綁陣營本地代碼和圖片」階段,添加您的輸入文件結束外殼

enter image description here

信息有關如何在iOS here