删除构建中不必要的 Android 权限

Removing unnecessary Android permissions in builds

我已经使用 Axway Appcelerator Titanium 开发了一个跨平台应用程序,但是在为 Android 构建时,一些不必要或未使用的权限被添加到 AndroidManifest.xml 文件中。以下示例来自 Google Play 版本的上述文件:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我唯一需要的权限是 android.permission.INTERNET,但是其他权限会导致安装时在 Google Play 上出现相当令人不安的权限对话框,因为此应用程序绝对不需要 reading/writing [到]外部存储。

我在 tiapp.xml 中设置了 <analytics>false</analytics>,并在应用程序的平台目录中手动创建了另一个 AndroidManifest.xml 文件,排除了这些权限,但所有构建仍然包含它们。构建一个新的示例 Alloy 项目也会导致包含上述四个依赖项。

有什么方法可以解决这些不需要的依赖项的问题吗?

我在 macOS 10.13 上使用 Android API 26,Ti SDK 6.2.2GA 和 Axway Appcelerator Studio,并且还尝试了 Ti SDK 6.1.1GA 和 Android API 23.

从 6.1.0 开始,您可以在 tiapp.xml 中设置 <override-permissions>true</override-permissions> 以删除所有内置权限。

<android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest android:versionCode="1" android:versionName="1.0">
        <application></application>
        <uses-permission android:name="android.permission.INTERNET"/>
    </manifest>
    <abi>armeabi-v7a</abi>
</android>

查看 PR 了解更多信息:https://github.com/appcelerator/titanium_mobile/pull/8881