React Native Maps集成报错求助:MapsPackage与airmap不存在问题
解决react-native-maps集成的两个核心问题
看起来你碰到了react-native-maps集成里很常见的版本适配和配置遗漏问题,我帮你一步步拆解解决:
一、解决MapsPackage构造函数参数不匹配的错误
这个报错是因为不同版本的react-native-maps对MapsPackage的构造要求不一样:
- 如果你用的是较新版本的react-native-maps(比如0.20+之后),
MapsPackage需要接收ReactApplicationContext作为参数,而不是无参构造。 - 旧版本可能支持无参,但你的React Native版本(
com.facebook.react:react-native:+是动态取最新)大概率和它不兼容。
修改MainApplication.java的代码:
// 导入正确的包 import com.airbnb.android.react.maps.MapsPackage; // 在getPackages()方法里修改 @Override protected List<ReactPackage> getPackages() { return Arrays.asList( new MainReactPackage(), // 这里要传入getApplicationContext()或者this(如果是Application类的话) new MapsPackage(getApplicationContext()) ); }
二、解决"airmap doesn't exist"的错误
这个错误说明你的Android项目没有正确引入react-native-maps的依赖或者资源配置,需要补全build.gradle的配置:
- 首先在项目根目录的
build.gradle里添加Google Maps的maven仓库(如果还没加):
allprojects { repositories { mavenLocal() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url("$rootDir/../node_modules/react-native/android") } // 新增这行 maven { url "https://maven.google.com" } jcenter() } }
- 然后修改app模块的
build.gradle,补全react-native-maps的依赖和Google Maps服务:
dependencies { compile fileTree(dir: "libs", include: ["*.jar"]) compile "com.android.support:appcompat-v7:23.0.1" compile "com.facebook.react:react-native:+" // 新增react-native-maps的依赖,版本要和你npm安装的一致 compile project(':react-native-maps') // 引入Google Maps服务,版本根据你的需求选,比如17.0.0 compile 'com.google.android.gms:play-services-maps:17.0.0' }
- 还要确保你已经执行过
react-native link react-native-maps(如果是RN0.60之前的版本),或者在0.60+版本里已经自动链接成功。如果自动链接有问题,可以手动在settings.gradle里添加:
include ':react-native-maps' project(':react-native-maps').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-maps/lib/android')
最后验证步骤
- 清理项目缓存:
cd android && ./gradlew clean - 重新运行项目:
react-native run-android
这样应该就能同时解决构造函数报错和airmap不存在的问题了。
内容的提问来源于stack exchange,提问作者user8202387
相关产品推荐
相关产品推荐

