一個原生的項目要求嵌入react native界面,於是我把打包好的bundle放到assets文件夾下本地加載,運行沒問題,但是沒辦法調試,搖一搖和長按Menu鍵都不行。
檢查代碼,主配置文件中註冊了
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
實例化ReactInsyanceManager的時候也setUseDeveloperSupport(true)了。
進到setUseDeveloperSupport這個方法看一看:
/**
* When {@code true}, developer options such as JS reloading and debugging are enabled.
* Note you still have to call {@link #showDevOptionsDialog} to show the dev menu,
* e.g. when the device Menu button is pressed.
*/
public ReactInstanceManagerBuilder setUseDeveloperSupport(boolean useDeveloperSupport) {
mUseDeveloperSupport = useDeveloperSupport;
return this;
}
註釋裏說了,參數爲true時可以debug。然後還需要調用showDevOptionsDialog。
好的,調用這個喚起debug菜單的showDevOptionsDialog方法,依然沒反應。上網找答案,原來實例化ReactInsyanceManager的時候還需要setCurrentActivity(this)。
所以,最終方案:
1.ReactInsyanceManager使用Builder實例化時setCurrentActivity(this).
2.監聽菜單鍵:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU){
openDevDialog();
}else {
return super.onKeyDown(keyCode, event);
}
return true;
}
private void openDevDialog() {
manager.showDevOptionsDialog();
}
如此操作後當前activity就可以長按菜單鍵喚出debug菜單了,不過別的activity還需要相同的操作才能支持debug。