为什么从AndroidManifest.xml删除权限无效? [英] Why does removing permission from AndroidManifest.xml not work?
问题描述
有一个名为没有任何权限在Play商店上的体重适中" .它也可以在git hub上使用: https://github.com/mazurio/bodyweight-fitness-android
There is an app called bodyweight fitness on the play store without any permissions. It is available on git hub as well: https://github.com/mazurio/bodyweight-fitness-android
我使用了git hub中的文件,并使用 Android Studio 自己编译了apk(无需更改文件).当我尝试安装自编译应用apk时,它告诉我尽管Play Store应用未安装,但它会使用Internet .没有理由为什么这个程序应该需要任何互联网连接.因此,我从 AndroidManifest.xml
I used the files from git hub and compiled the apk myself with Android Studio (without changing the files). When I try to install the self compiled app apk, it tells me that it will use the INTERNET though the play store app did not. There is no reason why this app should need any internet connection. Thus I removed this line from the AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
编译并安装该应用程序后,它仍然告诉我它将使用INTERNET.有人知道为什么以及如何删除此权限吗?
After compiling and installing the app, it still tells me that it will use INTERNET. Does someone know why and how I can remove this permission?
PS:我也问过开发人员,但是我还没有得到答复.
PS: I asked the developer as well, but I got no response yet.
更新:
- 您是对的,它也是从另一个部分添加的:crashlytics.
- 关于隐藏的权限,您也是正确的.它显示在 安装应用程序并在播放器中显示时该应用程序的详细信息 单击权限"按钮存储.
- You are right, it is added from another part aswell: crashlytics.
- And you are right aswell about the hidden permission. It is shown in the app details when the app is installed and it is shown in the play store when you click on the "permissions" button.
推荐答案
每个android lib包含带有包,权限,活动性等的清单文件,因此您的应用程序将显示依赖项中的所有权限.您可以在{projectDir}/{moduleDir}/build/outputs/logs/manifest-merger-*-report.txt
Each android lib contains manifest file with package, permissions, acitivities etc so your app will show all permissions from dependencies. You may check final manifest creation log at {projectDir}/{moduleDir}/build/outputs/logs/manifest-merger-*-report.txt
此日志将包含类似的内容
This log will contain something like that
uses-permission#android.permission.INTERNET
ADDED from {myModulePath}/app/src/main/AndroidManifest.xml:6:5-67
MERGED from [net.hockeyapp.android:HockeySDK:4.1.1] /Users/devindi/.android/build-cache/ce70c6f87efc05633a59a88fccdb712db509e22d/output/AndroidManifest.xml:12:5-67
MERGED from [com.crashlytics.sdk.android:crashlytics:2.6.8] /Users/devindi/.android/build-cache/424d420499b90aec0a26ab1b5f575e318d0342b9/output/AndroidManifest.xml:9:5-67
MERGED from [com.crashlytics.sdk.android:beta:1.2.5] /Users/devindi/.android/build-cache/be2498e53f6aa976b3927954da943b23f0a800f6/output/AndroidManifest.xml:9:5-67
MERGED from [com.crashlytics.sdk.android:crashlytics-core:2.3.17] /Users/devindi/.android/build-cache/e5b1b150113ac2f0789b76a886f379cdafa8af2b/output/AndroidManifest.xml:52:5-67
MERGED from [com.crashlytics.sdk.android:answers:1.3.13] /Users/devindi/.android/build-cache/c86f3a3daec296cb6a32deb0b3d0c3f1370a024f/output/AndroidManifest.xml:9:5-67
MERGED from [io.fabric.sdk.android:fabric:1.3.17] /Users/devindi/.android/build-cache/0a51b13dbc46dc870c598edab9d128bf8f26a8d4/output/AndroidManifest.xml:29:5-67
如您所见,我在清单上请求了网络许可,而hockeyapp,crashlytics,结构库也请求了相同的许可. https://developer.android.com/studio/build/manifest-merge.html
As you see I requested network permission at my manifest and hockeyapp, crashlytics, fabric libs requested same permission also. https://developer.android.com/studio/build/manifest-merge.html
要强制删除权限,只需在您的权限声明中添加tools:node=remove
即可,
To force permission remove just add tools:node="remove"
to your permission declaration like that:
<uses-permission android:name="android.permission.INTERNET" tools:node="remove" />
这篇关于为什么从AndroidManifest.xml删除权限无效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!