【问题标题】:How can I generate an AndroidManifest.xml from an existing react-native project?如何从现有的 react-native 项目生成 AndroidManifest.xml?
【发布时间】:2020-02-25 17:36:51
【问题描述】:

我已经创建了一个 react-native 应用,我想访问用户的地理位置。好吧,我没有任何 Android 的文件夹,我需要在 AndroidManifest.xml 中添加一些权限。如何将其与我现有的项目联系起来?

Obs:我正在使用 expo 和 npm。

【问题讨论】:

    标签: android react-native npm expo


    【解决方案1】:

    AndroidManifest.xml 不可能用于 Expo 项目。要添加此权限,您必须使用 Bare workflow

    如果没有,您可以从 expo 中退出您的项目或使用react-native-cli 创建一个新项目并将您的源代码移至其中。

    希望这对您有所帮助。如有疑问,请随意。

    【讨论】:

    • 谢谢!这对我帮助很大!
    • @Ktj 如果这个答案已经解决了你的问题,请考虑接受它。
    【解决方案2】:

    以下代码对我有用!

    state = {
      isLoading:false,
      location:null,
      errorMessage:null,
      isDevice:"",
    }
    
    async componentDidMount() {
      if (Platform.OS === 'android' && !Constants.isDevice) {
        this.setState({
          errorMessage:"oops, this will not work on sketch in an android emulator.Try it on your device!"
        });
      } else {
        this._getLocationAsync();
      }
    }
    
    _getLocationAsync = async () => {
      let { status} = await Permissions.askAsync(Permissions.LOCATION);
      if (status !== 'granted') {
        this.setState({
          setError:'Permission to access location was denied'
        });
        
      }
      let location = await Location.getCurrentPositionAsync({});
      this.setState({
        location
      })
      
      console.log(location)
    
    }
    

    【讨论】:

      【解决方案3】:

      可以使用apktool 编辑AndroidManifest.xml,然后使用apksigner 使用来自expo credentials:manager 的凭据重新签名apk。

      编辑现有清单:

      apktool decode myapp-original.apk
      vim myapp-original/AndroidManifest.xml
      

      要重新构建一个新的签名 apk:

      apktool build myapp-original -o myapp.apk
      expo credentials:manager -p android
      /path/toAndroid/Sdk/build-tools/$VERSION/apksigner sign -ks @username__myapp.bak.jks myapp.apk
      

      【讨论】:

        【解决方案4】:

        Expo 近年来发生了相当大的变化,您现在可以(Expo SDK 41+)使用config plugins 更改您的AndroidManifest.xml 并且仍然保留在托管工作流程中。您将无法使用 Expo Go 应用程序,但您可以使用 EAS 构建来构建自定义开发客户端,这基本上是为您的项目量身定制的 Expo Go 版本。

        文档提供了一个example,说明如何使用withAndroidManifest mod 修改权限。请注意,您可以运行expo prebuild --no-install 来测试您的插件的效果,但请务必在运行 EAS 构建之前删除生成的本机文件夹,否则 EAS 将假定工作流。

        【讨论】:

          猜你喜欢
          • 2017-12-17
          • 1970-01-01
          • 2019-09-02
          • 2018-10-27
          • 2023-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多