Expo 使用配置插件从 android 清单中删除权限

Expo Removing Permission from android manifest with config plugin

我正在使用 config plugin 修改具有 expo 托管构建的应用中的内容 AndroidManifest

但看起来它什么也没做。 这是我的 app.config.js

import { AndroidConfig, withAndroidManifest } from "@expo/config-plugins";
const {

} = AndroidConfig.Manifest;
const {
  removePermissions,
} = AndroidConfig.Permissions;

const withCustomConfig = (config) => {
  config.name = "NEWNAME"
  return withAndroidManifest(config, async (config) => {
    config.modResults = await setCustomConfigAsync3(config, config.modResults);
    return config;
  });
};

async function setCustomConfigAsync3(config, androidManifest) {
  removePermissions(androidManifest,["android.permission.SYSTEM_ALERT_WINDOW"])
  return androidManifest
}

const config = {
  name: "TEST",
  plugins : [[withCustomConfig]],
  slug: "TEST",
  ...
}

export default config;

它创建了一个名为 NEWNAME 的包,这意味着插件被调用,但 withAndroidManifest 的操作中没有任何内容被调用。我还尝试更改 AndroidManifest 的其他道具,例如 meta-data 但那里没有任何效果

我正在使用 expo build:android 创建 apk。

有人知道这段代码有什么问题吗? 谢谢。

插件主要用于 expo prebuild(它生成 android 和 ios 文件夹,可以使用 Android Studio 和 Xcode与使用您自己的硬件的任何其他 Android 或 iOS 应用一样)或 eas build 命令

您不能将插件与 expo build

一起使用

参考:

  1. https://docs.expo.dev/guides/config-plugins/#plugin-module-resolution
  2. https://blog.expo.dev/turtle-goes-out-to-sea-d334db2a6b60