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

时间:2017-11-01 15:04:05

标签: android appcelerator android-permissions

我使用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上产生相当令人不安的权限对话框,因为此应用程序绝对不需要读/写外部存储。

我在<analytics>false</analytics>中设置了tiapp.xml,并在应用的平台目录中手动创建了另一个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.

1 个答案:

答案 0 :(得分:1)

从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