天天看點

現有的Android 原生項目裡面內建RN 頁面的學習和踩坑之路方法2

1.前面幾個步驟都是一樣的一直到第8步內建RN的頁面代碼

上篇位址:

http://note.youdao.com/noteshare?id=3619fb52aae9cd06f3989b12e48b849a

上篇是內建一個Activity實作一個接口

本篇主要是這樣的內建一個類

代碼如下

package com.org.gsc.androidinrndemo;

import com.facebook.react.ReactActivity;

/**
 * .::::.
 * .::::::::.
 * :::::::::::  FUCK YOU
 * ..:::::::::::'
 * '::::::::::::'
 * .::::::::::
 * '::::::::::::::..
 * ..::::::::::::.
 * ``::::::::::::::::
 * ::::``:::::::::'        .:::.
 * ::::'   ':::::'       .::::::::.
 * .::::'      ::::     .:::::::'::::.
 * .:::'       :::::  .:::::::::' ':::::.
 * .::'        :::::.:::::::::'      ':::::.
 * .::'         ::::::::::::::'         ``::::.
 * …:::           ::::::::::::'              ``::.
 * ```` ':.          ':::::::::'                  ::::..
 * '.:::::'                    ':'````..
 * * 作者:jiangnanyizhou on 2018/2/12 10:53
 * 郵箱:[email protected]
 */
public class RNPage extends ReactActivity {
    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     *   //這裡的AndroidRnDemoApp必須對應“index.js”中的“AppRegistry.registerComponent()”的第一個參數
     */
    @Override
    protected String getMainComponentName() {
        return "AndroidRnDemoApp";
    }

}
           

2,這種需要重寫Application

核心代碼如下

package com.org.gsc.androidinrndemo;

import android.app.Application;

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.modules.network.OkHttpClientProvider;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.org.gsc.androidinrndemo.btns.MyReactBtnPackage.MyReactBtnPackage;

import java.util.Arrays;
import java.util.List;

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(),
              new MyReactPackage(),
              new MyReactBtnPackage()



      );
    }

    @Override
    protected String getJSMainModuleName() {
      return "index";
    }
  };

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

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

繼續閱讀