Android CTS PrivateAttributeTest in M:如何正确使用private属性来解析它?

Android CTS PrivateAttributeTest in M:如何正确使用private属性来解析它?,android,android-6.0-marshmallow,aapt,android-cts,Android,Android 6.0 Marshmallow,Aapt,Android Cts,谷歌在M中添加了这个新的CTS案例,即CTS/tests/tests/content/src/android/content/res/CTS/PrivateAttributeTest.java 根据本测试用例的注释,它强制要求不得将供应商自定义属性(type=attr,id=0x0101*)添加到framework/base/core/res/res/values/public.xml: /** * Tests that private attributes are correctly pla

谷歌在M中添加了这个新的CTS案例,即CTS/tests/tests/content/src/android/content/res/CTS/PrivateAttributeTest.java

根据本测试用例的注释,它强制要求不得将供应商自定义属性(type=attr,id=0x0101*)添加到framework/base/core/res/res/values/public.xml

/**
 * Tests that private attributes are correctly placed in a separate type to
 * prevent future releases from stomping over private attributes with new public ones.
 */
似乎供应商应该改用私有属性机制,它已经内置在aapt中了。基本上,它是attr的别名,具有自己的id范围

它是有效的,除了一个警告:

javadoc的doclint检查被private属性打破,因为aapt(framework/base/tools/aapt/Resource.cpp::writeLayoutClasses)向private属性的注释添加了无效链接,如下所示:

假设我们在public.xml中添加了一个名为“foo”的私有属性:

<public type="attrprivate" name="foo" id="0x01110000"/>

这是一个可用于查看的样式:

<resources>
    <declare-styleable name="View">
        <attr name="foo" format="reference|float">
    </declare-styleable>
</resources>

aapt生成的R.java将是:

/*
  blabla
  <p>This corresponds to the global attribute
  resource symbol {@link android.R.attr#foo}.
  @attr name android:foo
*/
public static final int View_foo = 87;
/*
布拉布拉
这对应于全局属性
资源符号{@linkandroid.R.attr#foo}。
@属性名称android:foo
*/
公共静态最终int视图_foo=87;
但是,{@link android.R.attr#foo}无效,因为没有android.R.attr.foo符号,因此中断了javadoc的doclint检查

我是否正确使用私有属性?还是现在的框架问题

谢谢, 恒