現(xiàn)有項(xiàng)目接入RN(Android)

直奔主題赞赖,Here wo go

1.執(zhí)行命令npm init (可以全部按回車過(guò)掉,后面在package.json中修改)

2.執(zhí)行命令npm install --save react react-native

3.在package.json的scripts中加入

"start": "node node_modules/react-native/local-cli/cli.js start"

4.確保package.json中的react, react-native等依賴版本號(hào)和RN端一致蝠嘉。

5.執(zhí)行命令 curl -o .flowconfig https://raw.githubusercontent.com/facebook/react-native/master/.flowconfig

6.在app中 build.gradle 文件中添加 React Native 依賴:

// 版本號(hào)與package.json中的保持一致
compile "com.facebook.react:react-native:+"

7.在項(xiàng)目的 build.gradle 文件中為 React Native 添加一個(gè) maven 依賴的入口瑰妄,必須寫在 "allprojects" 代碼塊中:

allprojects {
        maven {
            // All of React Native (JS, Android binaries) is installed from npm
            url "$rootDir/node_modules/react-native/android"
        }
    }
}

8.在 AndroidManifest.xml 清單文件中聲明權(quán)限:

<uses-permission android:name="android.permission.INTERNET”/>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />

9.Android不能同時(shí)加載32和64位本機(jī)庫(kù)蕉鸳。 如果至少有一個(gè)依賴庫(kù)使用ARM64支持編譯的擴(kuò)展翅楼,而另外一些依賴庫(kù)僅支持ARM32尉剩,就會(huì)出現(xiàn)問(wèn)題。如果有運(yùn)行時(shí)異常需要在app中build.gradle 中加入:

java.lang.RuntimeException: An error occurred while executing doInBackground()

defaultConfig {
    ndk{
        abiFilters "armeabi-v7a","x86"
    }
    packagingOptions {
        exclude "lib/arm64-v8a/libimagepipeline.so"
    }
}

10.在Android項(xiàng)目中添加入口毅臊,創(chuàng)建一個(gè)Activity:

public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    @Override
    protected String getMainComponentName() {
        // RN的項(xiàng)目名
        return "ReactNativeModule";
    }
}

11.項(xiàng)目的application實(shí)現(xiàn)ReactApplication:

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
        protected String getJSMainModuleName() {
            // 入口文件名
            return "index";
        }

        @Override
        protected String getBundleAssetName() {
            // 打包bundle后的文件名
            return "index.android.jsbundle";
        }
    };

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

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

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

12.打包RN項(xiàng)目成bundle文件放入Android項(xiàng)目中的assets文件夾理茎,以下是打包命令參數(shù):
react-native bundle [參數(shù)]
Options:

-h, --help                   輸出如何使用的信息
--entry-file <path>          RN入口文件的路徑, 絕對(duì)路徑或相對(duì)路徑
--platform [string]          ios 或 andorid
--transformer [string]       Specify a custom transformer to be used
--dev [boolean]              如果為false, 警告會(huì)不顯示并且打出的包的大小會(huì)變小
--prepack                    當(dāng)通過(guò)時(shí), 打包輸出將使用Prepack格式化
--bridge-config [string]     使用Prepack的一個(gè)json格式的文件__fbBatchedBridgeConfig 例如:     ./bridgeconfig.json
--bundle-output <string>     打包后的文件輸出目錄, 例: /tmp/groups.bundle
--bundle-encoding [string]   打離線包的格式 可參考鏈接https://nodejs.org/api/buffer.html#buffer_buffer.
--sourcemap-output [string]  生成Source Map,但0.14之后不再自動(dòng)生成source map管嬉,需要手動(dòng)指定這個(gè)參數(shù)功蜓。例: /tmp/groups.map
--assets-dest [string]       打包時(shí)圖片資源的存儲(chǔ)路徑
--verbose                    顯示打包過(guò)程
--reset-cache                移除緩存文件
--config [string]            命令行的配置文件路徑

e.g.
react-native bundle --entry-file index.js --bundle-output ./android/bundle/index.android.jsbundle --platform android --assets-dest ./android/bundle/res --dev false

成功后會(huì)生成以下文件:


rn打包bundle生成文件.png

13.開(kāi)啟服務(wù) npm start,運(yùn)行項(xiàng)目宠蚂。
查看8081端口占用: lsof -i :8081
刪除端口占用: kill 9 PID(PID為上行命令查詢出的id)

End

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市童社,隨后出現(xiàn)的幾起案子求厕,更是在濱河造成了極大的恐慌,老刑警劉巖扰楼,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呀癣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡弦赖,警方通過(guò)查閱死者的電腦和手機(jī)项栏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蹬竖,“玉大人沼沈,你說(shuō)我怎么就攤上這事流酬。” “怎么了列另?”我有些...
    開(kāi)封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵芽腾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我页衙,道長(zhǎng)摊滔,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任店乐,我火速辦了婚禮艰躺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眨八。我一直安慰自己腺兴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布踪古。 她就那樣靜靜地躺著含长,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伏穆。 梳的紋絲不亂的頭發(fā)上拘泞,一...
    開(kāi)封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音枕扫,去河邊找鬼陪腌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛烟瞧,可吹牛的內(nèi)容都是我干的诗鸭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼参滴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼强岸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起砾赔,我...
    開(kāi)封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蝌箍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后暴心,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體妓盲,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年专普,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悯衬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡檀夹,死狀恐怖筋粗,靈堂內(nèi)的尸體忽然破棺而出策橘,到底是詐尸還是另有隱情,我是刑警寧澤亏狰,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布役纹,位于F島的核電站,受9級(jí)特大地震影響暇唾,放射性物質(zhì)發(fā)生泄漏促脉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一策州、第九天 我趴在偏房一處隱蔽的房頂上張望瘸味。 院中可真熱鬧,春花似錦够挂、人聲如沸旁仿。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枯冈。三九已至,卻和暖如春办悟,著一層夾襖步出監(jiān)牢的瞬間尘奏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工病蛉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炫加,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓铺然,卻偏偏與公主長(zhǎng)得像俗孝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子魄健,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,140評(píng)論 25 707
  • React Native嵌入Android原生項(xiàng)目中 開(kāi)發(fā)環(huán)境準(zhǔn)備 首先你要搭建好React Native for...
    呼呼哥閱讀 642評(píng)論 3 1
  • 普通人是打不了虎的赋铝,武松能打虎,說(shuō)明他不是普通人沽瘦。打虎是他的出場(chǎng)秀革骨,艷驚四座,見(jiàn)者皆驚為天人其垄。 關(guān)于武松來(lái)歷,書中...
    慕堯VIVIENNNE閱讀 1,080評(píng)論 3 9
  • 情深不壽卤橄。 太極致的東西只有一個(gè)后果:毀滅绿满。其實(shí)所有事物最終的結(jié)果都是毀滅,但對(duì)于愛(ài)情窟扑,我們要做的事其實(shí)只是讓它更...
    槳一閱讀 6,506評(píng)論 5 7
  • 今天看到一朋友發(fā)的朋友圈,然后平時(shí)也還可以橘霎,就問(wèn)了一句蔫浆,她的回答,讓我深感無(wú)奈姐叁,而且也讓我想起當(dāng)時(shí)為什么要離開(kāi)一些...
    豆豆在成長(zhǎng)閱讀 288評(píng)論 0 0