react-native链接导致Android settings.gradle中的重复导入
出于某种原因,当我调用react-native链接时,它会向
android / settings.gradle添加重复包含,这反过来会向android / app / src / main / com /< projectName> /MainApplication.
java添加重复的导入.
它并不总是如此.当我手动添加一个特定的包时,它开始这样做,因为有些东西不起作用,但我不记得是哪一个. 我的预感是,react-native链接假定以某种顺序列出的包 – 它看起来像反向字母 – 但是因为npm包名称不一定与settings.gradle中的include项目名称匹配,这与导入不匹配在MainApplication.java中的名字,我很难弄清楚如何在settings.gradle中重新排序它们以便停止这种行为.或者它可能完全是另一回事. 的package.json { // ... "dependencies": { "events": "^1.1.1","flux": "^3.1.2","react": "~15.4.1","react-native": "0.42.0","react-native-datepicker": "^1.4.4","react-native-fs": "^2.1.0-rc.1","react-native-navigation": "^1.0.30","react-native-push-notification": "^2.2.1","react-native-sound": "^0.9.1","react-native-vector-icons": "^4.0.0","redux": "^3.6.0" },"devDependencies": { "babel-jest": "19.0.0","babel-preset-react-native": "1.9.1","jest": "19.0.2","react-test-renderer": "~15.4.1" },"jest": { "preset": "react-native" } } 这是文件应该是什么…… 安卓/ settings.gradle rootProject.name = // <projectName> include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-vector-icons/android') include ':react-native-sound' project(':react-native-sound').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-sound/android') include ':react-native-push-notification' project(':react-native-push-notification').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-push-notification/android') include ':react-native-navigation' project(':react-native-navigation').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-navigation/android/app') include ':react-native-fs' project(':react-native-fs').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-fs/android') include ':app' 机器人/应用/ SRC /主/ COM / [项目] /MainApplication.java package // com.<projectName>; import android.app.Application; import com.facebook.react.ReactApplication; import com.oblador.vectoricons.VectorIconsPackage; import com.zmxv.RNSound.RNSoundPackage; import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; import com.reactnativenavigation.RnnPackage; import com.rnfs.RNFSPackage; 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 VectorIconsPackage(),new RNSoundPackage(),new ReactNativePushNotificationPackage(),new RnnPackage(),new RNFSPackage(),); } }; @Override public ReactNativeHost getReactNativeHost() { return mReactNativeHost; } @Override public void onCreate() { super.onCreate(); SoLoader.init(this,/* native exopackage */ false); } } 运行react-native链接后,文件将更改为: 安卓/ settings.gradle rootProject.name = // <projectName> include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-fs/android') include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-fs/android') include ':app' 机器人/应用/ SRC /主/ COM / [项目] /MainApplication.java // ... import com.facebook.react.ReactApplication; import com.oblador.vectoricons.VectorIconsPackage; import com.zmxv.RNSound.RNSoundPackage; import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; import com.reactnativenavigation.RnnPackage; import com.rnfs.RNFSPackage; import com.oblador.vectoricons.VectorIconsPackage; import com.zmxv.RNSound.RNSoundPackage; import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; import com.reactnativenavigation.RnnPackage; import com.rnfs.RNFSPackage; 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(),); } }; // ... 如果我再次运行react-native-link,它会添加第三个包的副本. 有没有人对反应原生链接如何工作有任何见解?
这是React Native上的已知错误.目前有一个公关待处理此错误:
https://github.com/facebook/react-native/pull/18131
更新:错误已修复! 要解决此问题,您只需在运行react-native-link时手动梳理依赖项.我发现在运行它之前有一个干净的git状态是有帮助的,然后在之后使用git diff查看已更改的文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |