Mapview 无法通过 Expo React Native APK 文件在真实 Android 设备上运行

问题描述 投票:0回答:2

我的简单 Mapview 应用程序无法通过 Expo React Native 在真实设备上运行。 当我在真实的 Android 设备上通过 ExpoGO 进行测试时,它可以工作。 但是当我通过 EAS 门户生成独立的 APK 文件并在 Android 设备上执行时,它启动并立即消失,(但我仍然可以在后台运行看到它) 当我测试简单的 HelloWorld 应用程序时,这是有效的,所以问题是这个 Mapview 组件。

我也尝试注入这一行

provider={PROVIDER_GOOGLE}
,正如许多论坛上推荐的那样,即使对于Android也不需要accoding文档...但没有帮助。 https://docs.expo.dev/versions/latest/sdk/map-view/

我用这个命令构建这个应用程序:

eas build -p android --profile preview

这是代码:`

应用程序.js

import React from 'react';
import { View, StyleSheet } from 'react-native';
import MapView, { PROVIDER_GOOGLE } from 'react-native-maps';

export default function App() {
  return (
    <View style={styles.container}>
      <MapView
        provider={PROVIDER_GOOGLE}
        style={styles.map}
        initialRegion={{
          latitude: 37.78825,
          longitude: -122.4324,
          latitudeDelta: 0.0922,
          longitudeDelta: 0.0421,
        }}
      />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
  map: {
    width: '100%',
    height: '100%',
  },
});

app.json

{
  "expo": {
    "name": "SimpleMap",
    "slug": "SimpleMap",
    "version": "1.0.1",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "userInterfaceStyle": "light",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#ffffff"
      },
      "package": "com.expo_andrej.SimpleMap"
    },
    "web": {
      "favicon": "./assets/favicon.png"
    },
    "extra": {
      "eas": {
        "projectId": "8360acb8-6326-4690-bb67-18cd0ad6e9dc"
      }
    }
  }
}

eas.json

{
  "cli": {
    "version": ">= 7.1.2"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal",
      "android": {
        "buildType": "apk"
      }
      
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}
``

react-native
2个回答
0
投票

好的,通过添加 API KEY 解决了问题

app.json

      "package": "com.expo_andrej.SimpleMap",
      "config": {
        "googleMaps": {
          "apiKey": "API-KEY"
        }

0
投票

是的,这样做: 将 API 密钥添加到您的项目中 将您的 API 密钥复制到 android.config.googleMaps.apiKey 字段下的 app.json 中。 在您的代码中,从react-native-maps导入{PROVIDER_GOOGLE}并将属性provider = {PROVIDER_GOOGLE}添加到您的.此属性适用于 Android 和 iOS。 重新构建应用程序二进制文件(如果您的应用程序已上传,则重新提交到 Google Play 商店)。测试配置是否成功的一个简单方法是构建模拟器。 从文档中获取:https://docs.expo.dev/versions/latest/sdk/map-view/#deploying-to-a-standalone-app-on-android

© www.soinside.com 2019 - 2024. All rights reserved.