Android 23 未为使用权限元素生成清单文件

Android 23 Not Generating Manifest file for uses-permission elements

我有几个相互依赖的模块的项目,我们刚刚升级到目标 android-23。

问题是,当我在 AndroidManifest 中使用 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 时,应用程序似乎没有生成 Manifest.permission.ACCESS_FINE_LOCATION 等属性。

但是,当我执行 <permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 时它确实会生成属性,但这似乎与我见过的所有示例都不一样。

作为参考,我们的版本是:

minSdkVersion = 18
compileSdkVersion = 23
targetSdkVersion  = 23
buildToolsVersion = "23.0.2"

支持库是23.0.1

任何人 运行 对此感兴趣或知道发生了什么事?

更新 添加我在 build/generated/source/r/{flavor}/com/example/Manifest.java

中看到的生成的文件内容
public final class Manifest {
    public static final class permission {
        public static final String C2D_MESSAGE="com.example.permission.C2D_MESSAGE";
        public static final String RECEIVE_ADM_MESSAGE="com.example.permission.RECEIVE_ADM_MESSAGE";
        public static final String UA_DATA="com.example.permission.UA_DATA";
    }
}

试试这个。 与

一起工作
compileSdkVersion = 23
targetSdkVersion  = 23

您需要在 android 中在运行时请求权限。 请参阅此处以在运行时请求权限:- http://coderzpassion.com/android-new-runtime-permissions/

这是预期的。

当您在清单中添加 <permission> 时,您就是在定义 自己的权限。因此,这被添加到 class <your_package_name>.Manifest

但是,当您在清单中添加 <uses-permission> 时,您 不是 定义新权限,而是指定您 请求 已在其他地方定义的权限(大多数不在您的应用程序中)。因此,在这种情况下,权限不会添加到 class <your_package_name>.Manifest。相反,它可以在 <package_defining_the_permission>.Manifest class 中找到。对于ACCESS_FINE_LOCATION权限,定义在名为android的包中:http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/res/AndroidManifest.xml#540

为了让 Jiyong Park 提到的内容更加清晰。

您要使用的 Manifest

android.Manifest.permission

不是

com.myapp.Manifest

您可能正在查看(如果您刚开始输入 Manifest,这很可能就是您得到的,因为它在您的应用程序包中)。