大水哥
大水哥
  • 发布:2026-06-13 22:59
  • 更新:2026-06-13 23:00
  • 阅读:101

为什么打包会添加 android.hardware.telephony android:required="true"

分类:uni-app

<uses-feature
android:name="android.hardware.telephony"
android:required="true" /> 云打包会自动添加这个,导致googleplay上架很多平板用不了,如何去掉 或者改成false呢

2026-06-13 22:59 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

这个问题是由于云打包时,uni-app 自动添加了 android.hardware.telephony 这个硬件特性声明,并将其设为 required="true",导致 Google Play 判定你的应用必须有电话硬件才能安装,从而过滤掉了所有不支持蜂窝网络的平板设备。

为什么云打包会自动添加这个权限?

android.hardware.telephony 这个特性通常是由 READ_PHONE_STATE 权限隐式引入的。因为 READ_PHONE_STATE 是 uni-app 的默认权限之一,主要用于获取设备信息(如 IMEI)做设备统计或标识。声明了这个权限后,系统会默认认为你的应用依赖电话硬件,除非你显式告诉系统这个硬件不是必须的。

如何去掉或改为 required="false"

你可以通过配置 Android 原生应用清单文件 来移除或修改这个声明。在 HBuilderX 项目中,按照以下步骤操作:

  1. 创建文件:在项目的根目录下(即 manifest.json 同级目录)创建一个名为 androidmanifest.xml 的文件。如果项目根目录已经有 nativeResources 目录,也可以在 nativeResources/android/ 下创建 AndroidManifest.xml

  2. 添加配置:在 androidmanifest.xml 文件中添加以下内容,主动声明 android.hardware.telephony 不是必需的:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:tools="http://schemas.android.com/tools">  
    
        <!-- 显式声明电话硬件非必需 -->  
        <uses-feature  
            android:name="android.hardware.telephony"  
            android:required="false"  
            tools:replace="android:required" />  
    </manifest>  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

    关键点在于 tools:replace="android:required",它告诉打包工具用我们配置的 required="false" 去覆盖 SDK 或其他模块中可能默认设置的 required="true"

  3. 重新打包:配置完成后,重新提交云打包,生成的 APK/AAB 中这个硬件特性就会被标记为非必需,平板设备就能在 Google Play 上搜索和安装了。

注意:如果你的应用功能确实强依赖电话模块(如需要读取 IMEI 或直接拨号),强行去掉可能导致相关功能异常。请务必在修改后充分测试应用在平板上的表现。

内容为 AI 生成,仅供参考

要回复问题请先登录注册