我正在尝试为我的简单React Native应用程序创建本机Java包。
我使用react-native init
创建了项目,添加了一些屏幕和react-navigation
。
之后我跟着The Toast Module。
我的手机通过USB连接,每个React代码运行完美,但Java代码没有。
在render()
方法的一个屏幕中,我添加了简单的
import React, { Component } from "react"
import { NativeModules } from "react-native"
export default class TestScreen extends Component {
render() {
console.log(NativeModules, NativeModules.ToastModule)
return (
// something
)
}
}
在这段代码的结果中,我获得了React Native提供的所有本机模块和我的个人模块的undefined
值的对象。
我转到android/app/src/main/java/com/myproject/MainApplication.java
并将getPackages()
方法替换为此
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList( // Disable all modules for example
// new MainReactPackage(),
// new ManagerPackage()
);
}
通常情况下,这两个包都是未注释的。
之后我尝试在手机上运行应用程序
$ react-native run-android --deviceId MYDEVICEID
控制台输出的某些部分是
Building the app...
BUILD SUCCESSFUL in 8s
52 actionable tasks: 2 executed, 50 up-to-date
应用程序启动但我得到console.log(...)
- 对象和undefined
值的相同结果。
我执行时
$ cd android/
$ ./gradlew clean
$ cd ..
$ react-native run-android --deviceId ...
我收到app/build/outputs/apk/app-debug.apk
下的文件不存在的错误。
当我按this回答时,我还必须将android/app/build/outputs/apk/debug/app-debug.apk
文件复制到android/app/build/outputs/apk/app-debug.apk
。
它没有解决我的问题 - 当我在MainApplication.java
文件中取消注释我的包时,我的原生模块无效,而且我也无法禁用MainReactPackage
。
我的问题是:如何成功重建我的项目(包括Android版本的Java文件)?