You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo开发React Native支付应用:移除.DUMP权限与CropImageActivity方法

解决Expo React Native移除DUMP权限和CropImageActivity的问题

一、先定位权限/Activity的来源

首先通过Gradle命令确认是哪个依赖引入了目标权限和Activity:

./gradlew app:dependencies

在输出的依赖树里搜索DUMP和com.canhub.cropper.CropImageActivity,找到对应的依赖库,方便后续针对性处理。

二、针对Managed Workflow的解决方案(未预构建)

如果还在纯Managed模式下,必须通过Expo Config Plugin来修改AndroidManifest,因为直接修改app.json的blockedPermissions对部分特殊权限/第三方Activity无效:

1. 创建自定义Config Plugin

在项目根目录新建plugins/removeUnwantedElements.js,内容如下:

const { withAndroidManifest } = require('@expo/config-plugins');

module.exports = function withRemoveUnwantedElements(config) {
  return withAndroidManifest(config, async (config) => {
    const androidManifest = config.modResults.manifest;

    // 移除DUMP权限
    if (androidManifest['uses-permission']) {
      androidManifest['uses-permission'] = androidManifest['uses-permission'].filter(perm => {
        return !perm.$['android:name'].includes('DUMP');
      });
    }

    // 移除CropImageActivity
    if (androidManifest.application[0].activity) {
      androidManifest.application[0].activity = androidManifest.application[0].activity.filter(activity => {
        return activity.$['android:name'] !== 'com.canhub.cropper.CropImageActivity';
      });
    }

    return config;
  });
};

2. 在app.json中注册插件

修改app.json的plugins数组,添加自定义插件:

{
  "expo": {
    "plugins": [
      "./plugins/removeUnwantedElements.js"
    ]
  }
}

3. 重新构建

运行eas build或者expo prebuild,插件会在构建过程中自动修改AndroidManifest。

三、针对预构建后的Bare Workflow解决方案

如果已经执行过expo prebuild进入Bare模式,直接修改AndroidManifest并确保配置生效:

1. 确保tools命名空间存在

打开android/app/src/main/AndroidManifest.xml,在根节点manifest中添加tools命名空间:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="你的包名">

2. 添加移除规则

  • 移除DUMP权限:添加空的权限声明并标记移除:
<uses-permission android:name="android.permission.DUMP" tools:node="remove" />
  • 移除CropImageActivity:同样添加移除规则:
<activity android:name="com.canhub.cropper.CropImageActivity" tools:node="remove" />

3. 检查Gradle合并策略

如果仍无效,修改android/app/build.gradle,添加Manifest合并规则:

android {
  // ...其他配置
  manifestMerger.enabled = true
}

4. 清理并重新构建

执行以下命令清理缓存并构建:

./gradlew clean
./gradlew assembleRelease

四、验证结果

构建完成后,用Android Studio的APK Analyzer打开生成的APK,查看AndroidManifest.xml,确认DUMP权限和CropImageActivity已被移除。

内容的提问来源于stack exchange,提问作者Projétil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:40:14