ReactInstanceManager在我的MainActivity.java文件中的什么位置?

ReactInstanceManager在我的MainActivity.java文件中的什么位置?,java,react-native,Java,React Native,对于此组件的android安装: 第一个安装步骤是: 修改中的ReactInstanceManager.builder()调用链 android/app/main/java/../MainActivity.java包括: .addPackage(新的RCTCameraPackage()) 但是我的MainActivity.java文件位于 android/app/src/main/java/com/.../MainActivity.java 似乎没有任何对ReactInstanceManag

对于此组件的android安装:

第一个安装步骤是:

修改中的ReactInstanceManager.builder()调用链 android/app/main/java/../MainActivity.java包括:

.addPackage(新的RCTCameraPackage())

但是我的MainActivity.java文件位于

android/app/src/main/java/com/.../MainActivity.java
似乎没有任何对ReactInstanceManager的引用

这里是它的整体:

package com.app;

import com.facebook.react.ReactActivity;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;

import com.rssignaturecapture.RSSignatureCapturePackage;
import java.util.Arrays;
import java.util.List;

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() {
        return "app";
    }

    /**
     * Returns whether dev mode should be enabled.
     * This enables e.g. the dev menu.
     */
    @Override
    protected boolean getUseDeveloperSupport() {
        return BuildConfig.DEBUG;
    }

   /**
   * A list of packages used by the app. If the app uses additional views
   * or modules besides the default ones, add more packages here.
   */
    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
        new RSSignatureCapturePackage(this),
        new MainReactPackage()
      );
    }
}
package.com.app;
导入com.facebook.react.ReactActivity;
导入com.facebook.react.ReactPackage;
导入com.facebook.react.shell.MainReactPackage;
导入com.rssignaturecapture.rssignaturecapture包;
导入java.util.array;
导入java.util.List;
公共类MainActivity扩展了ReactActivity{
/**
*返回从JavaScript注册的主组件的名称。
*这用于计划组件的渲染。
*/
@凌驾
受保护的字符串getMainComponentName(){
返回“应用程序”;
}
/**
*返回是否应启用开发模式。
*这将启用例如“开发”菜单。
*/
@凌驾
受保护的布尔getUseDeveloperSupport(){
返回BuildConfig.DEBUG;
}
/**
*应用程序使用的包的列表。如果应用程序使用其他视图
*或者除了默认的模块之外,在这里添加更多的包。
*/
@凌驾
受保护的列表getPackages(){
返回数组.asList(
新的RSSignatureCapturePackage(本),
新的main包()
);
}
}
编辑: 这似乎与反应0.18的变化有关 以下是另一个模块上的类似问题/解决方案:


我也尝试过将相同的更改应用于此模块,但没有成功。

这与React Native 0.18中所做的更改有关:

为了解决这个问题,我必须确保在正确的位置导入包:

import com.lwansbrough.RCTCamera.RCTCameraPackage;
并在包列表中引用:

new RCTCameraPackage(),
像这样:

package com.myapp;

import com.facebook.react.ReactActivity;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;

import com.lwansbrough.RCTCamera.RCTCameraPackage; // IMPORT REACT-NATIVE-CAMERA
import java.util.Arrays;
import java.util.List;

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() {
        return "myapp";
    }

    /**
     * Returns whether dev mode should be enabled.
     * This enables e.g. the dev menu.
     */
    @Override
    protected boolean getUseDeveloperSupport() {
        return BuildConfig.DEBUG;
    }

   /**
   * A list of packages used by the app. If the app uses additional views
   * or modules besides the default ones, add more packages here.
   */
    @Override
    protected List<ReactPackage> getPackages() {

      return Arrays.<ReactPackage>asList(
        new RCTCameraPackage(), // ADD REACT-NATIVE_CAMERA
        new MainReactPackage()
      );
    }
}
package com.myapp;
导入com.facebook.react.ReactActivity;
导入com.facebook.react.ReactPackage;
导入com.facebook.react.shell.MainReactPackage;
导入com.lwansbrough.RCTCamera.RCTCameraPackage;//导入本地摄像头
导入java.util.array;
导入java.util.List;
公共类MainActivity扩展了ReactActivity{
/**
*返回从JavaScript注册的主组件的名称。
*这用于计划组件的渲染。
*/
@凌驾
受保护的字符串getMainComponentName(){
返回“myapp”;
}
/**
*返回是否应启用开发模式。
*这将启用例如“开发”菜单。
*/
@凌驾
受保护的布尔getUseDeveloperSupport(){
返回BuildConfig.DEBUG;
}
/**
*应用程序使用的包的列表。如果应用程序使用其他视图
*或者除了默认的模块之外,在这里添加更多的包。
*/
@凌驾
受保护的列表getPackages(){
返回数组.asList(
新建RCTCameraPackage(),//添加REACT-NATIVE\u摄像头
新的main包()
);
}
}

更新:这修复了错误,但模块无法正常工作。

我通过以下步骤解决了相同的问题:

  • 已从github安装react本机摄像头,但版本不是“最新”,而是github链接

    npm安装本机摄像头@--保存

  • (谢谢)

  • 在文件“/node_modules/react native camera/android/src/main/AndroidManifest.xml”中,我添加了以下权限

  • 在文件“/node_modules/react native camera/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraViewManager.java”中,我修改了该部分

  • 公共类RCTCameraViewManager扩展了SimpleViewManager

    (谢谢你的第2条和第3条)

  • 在文件“/android/app/src/main/java/com/myapp/MainActivity.java”(不要忘记用正确的路径名交换“myapp”)中,我在“@Override”部分添加了以下行:

    新的RCTCameraPackage()

  • 为了看起来像:

    @Override
        protected List<ReactPackage> getPackages() {
          return Arrays.<ReactPackage>asList(
            new RCTCameraPackage(),
            new MainReactPackage());
        }
    
    @覆盖
    受保护的列表getPackages(){
    返回数组.asList(
    新的RCTCameraPackage(),
    新的MainReactPackage());
    }
    
    @Override
        protected List<ReactPackage> getPackages() {
          return Arrays.<ReactPackage>asList(
            new RCTCameraPackage(),
            new MainReactPackage());
        }