最近項(xiàng)目即將上線或听,但是遇到了一個(gè)問題探孝,安裝之后第一次打開時(shí),在有的Android手機(jī)上崩潰誉裆,之后再次運(yùn)行就好了顿颅,好多Android機(jī)型都遇到這種情況,定位問題找御,發(fā)現(xiàn)是之前加載的第三方開源控件:react-native-update(熱更新)導(dǎo)致的元镀,為了軟件的穩(wěn)定性绍填,不得不把剛剛沒集成多久的熱更新刪除掉霎桅。
一. RN部分
- 輸入:npm uninstall react-native-update
注:這里的react-native-update是你要?jiǎng)h除的組件名,我這里統(tǒng)一用這個(gè)來演示讨永。
但是你會(huì)發(fā)現(xiàn)滔驶,在RN項(xiàng)目目錄下的package.json文件中,這個(gè)組件的依賴依舊存在卿闹。
- 刪除掉在RN的package.json文件中的依賴
- 輸入:npm uninstall --save
如果是組件作為devDependencies揭糕,需要加上-D,
如果是從optionalDependencies中刪除锻霎,還需要加上-o的參數(shù)著角,
我為了保險(xiǎn)能刪干凈,直接輸入一下命令旋恼,見第四部:
- 輸入:npm uninstall -s -D -O
然后進(jìn)入node_modules文件夾內(nèi)吏口,你會(huì)很高興的發(fā)現(xiàn)終于你的這個(gè)組件包不在了。
二. Android部分
然后編譯運(yùn)行在 android 上,發(fā)現(xiàn)产徊,各種編譯失敗昂勒,所以還需要在native中刪除相應(yīng)的依賴。
- 進(jìn)入項(xiàng)目下的android目錄下舟铜,然后打開setting.gradle戈盈,刪除下面兩行依賴:
include ':react-native-update'
project(':react-native-update').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-update/android')
- 然后進(jìn)入 android/app 目錄下,打開build.gradle谆刨,刪除dependencies代碼塊內(nèi)的一行依賴:
compile project(':react-native-update')
- 打開android/app/src/main/java/com/包名/MainApplication.java,找到 RN 調(diào)用的原生方法
new ReactUpdatePackage()
有的第三方不需要塘娶,屬于RN調(diào)用原生那塊代碼
刪除這行代碼。
- 去 MainApplication 文件中刪除相關(guān)引入包痊夭。
三. RN代碼部分
如果你在RN項(xiàng)目中已經(jīng)用了這個(gè)組件血柳,在你調(diào)用的js文件中還要?jiǎng)h除相關(guān)代碼。
四. ios部分
注:這部分我沒有用到生兆,主要是為了文章完成性难捌,直接從參考文章拷過來的。
- 打開xcode鸦难,找到AppDelegate.m根吁,然后刪除以下導(dǎo)入的代碼:
#import <AVFoundation/AVFoundation.h> // import
同時(shí)還要?jiǎng)h除下面代碼塊內(nèi)的導(dǎo)入代碼:具體需要參考開源組件的說明:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
... [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; // allow
...
}
對于react-native-video來說就是上面代碼快中紅色標(biāo)記的那行代碼,刪之合蔽。
- 此時(shí)編譯ios击敌,你會(huì)發(fā)現(xiàn)報(bào)了10多個(gè)錯(cuò)誤,頭大了拴事,下面再繼續(xù)刪除:打開xcode沃斤,進(jìn)入左側(cè)主目錄的Libraies中,右鍵刪除這個(gè)庫:RCTVideo.xcodeproj
Paste_Image.png
- 點(diǎn)擊左側(cè)你的第一個(gè)根目錄(我的是first)刃宵,接著點(diǎn)擊右側(cè)的Build Phases衡瓶,打開下面的Link Binary With Libraties,找到你的依賴:我這里是libRCTVideo.a, 點(diǎn)擊選中,最后點(diǎn)擊下面的‘-’刪除
Paste_Image.png
- 點(diǎn)擊build Phases同一行中的Build Setting牲证,找到Header Search Paths,點(diǎn)擊左側(cè)小箭頭展開哮针,然后雙擊右側(cè)的第一行目錄,找到你的組件路徑坦袍,點(diǎn)擊下面的十厢,減號刪除你的組件的路徑,如下所示:
Paste_Image.png
最后在xcode中編譯捂齐,成功蛮放。
最最最后,文章參考:http://blog.csdn.net/liu__520/article/details/52801139