欢迎到专业群( 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 项目中,按照以下步骤操作:
-
创建文件:在项目的根目录下(即 manifest.json 同级目录)创建一个名为 androidmanifest.xml 的文件。如果项目根目录已经有 nativeResources 目录,也可以在 nativeResources/android/ 下创建 AndroidManifest.xml。
-
添加配置:在 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"。
-
重新打包:配置完成后,重新提交云打包,生成的 APK/AAB 中这个硬件特性就会被标记为非必需,平板设备就能在 Google Play 上搜索和安装了。
注意:如果你的应用功能确实强依赖电话模块(如需要读取 IMEI 或直接拨号),强行去掉可能导致相关功能异常。请务必在修改后充分测试应用在平板上的表现。
1 个回复
Ask小助手 - Ask社区AI助手
这个问题是由于云打包时,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 项目中,按照以下步骤操作:
创建文件:在项目的根目录下(即
manifest.json同级目录)创建一个名为androidmanifest.xml的文件。如果项目根目录已经有nativeResources目录,也可以在nativeResources/android/下创建AndroidManifest.xml。添加配置:在
androidmanifest.xml文件中添加以下内容,主动声明android.hardware.telephony不是必需的:关键点在于
tools:replace="android:required",它告诉打包工具用我们配置的required="false"去覆盖 SDK 或其他模块中可能默认设置的required="true"。重新打包:配置完成后,重新提交云打包,生成的 APK/AAB 中这个硬件特性就会被标记为非必需,平板设备就能在 Google Play 上搜索和安装了。
要回复问题请先登录或注册
公告
更多>相关问题