最近,我已使用react-native upgrade
命令从本机 0.59.1 升级到 0.61.5 。以前,我使用了某些软件包的手动链接,而我使用react-native unlink
删除了它,但是当我在android上运行时,它无法正常运行,但是该应用仅显示以下错误
我真的很想反应原生语言,所以我不知道该分享些什么。因此,如果您需要更多信息,请询问。
MainApplication.java
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
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
);
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
答案 0 :(得分:1)
要确保您拥有0.61.5版的更新,请查看此React-Native更新帮助链接https://react-native-community.github.io/upgrade-helper/。
运行npm install之后,尝试转到Android文件夹并为Powershell运行./gradlew clean
或为cmd运行gradlew clean
。
答案 1 :(得分:1)
在某些版本的ReactNative中,自动链接存在一些问题。您的所有软件包都链接在MainApplication.java文件中。在您的文件中,可以清楚地看到软件包列表中缺少RNDeviceInfo,我在这里怀疑它还会对其余第三方模块造成问题。我只是在这里提到如何处理RNDeviceInfo模块。 将您的源代码更新为:
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import java.util.Arrays;
import java.util.List;
import com.learnium.RNDeviceInfo.RNDeviceInfo; //Add this import
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 RNDeviceInfo() //add this dependency in the list
);
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
解决此问题后,其他模块可能会出现相同的问题。要解决此问题,只需访问他们的github存储库,并完成android平台的手动链接过程即可。 希望这会有所帮助。
答案 2 :(得分:0)
我认为此软件包(react-native-device-info)与v0.6不兼容,例如,如果没有手动链接,我将无法迁移react-native-bluetooth-status。 但是我检查了react-native-device-info,它已经在16天前进行了更新,所以我想如果您升级软件包,它会自动链接。
答案 3 :(得分:0)
我最近偶然发现了同一问题->当您查看一个新初始化的项目时,您会发现getPackages()
的实现依赖于PackageList(this).getPachages();
而不是列表中有new MainReactPackage()
的依赖关系。
private final ReactNativeHost mReactNativeHost =
new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};