android - 无法从 XML 中的 AAR 中找到资源标识符

标签 android android-studio android-library aar

我为应用程序开发了自定义首选项。它有两个自定义属性。我正在尝试将首选项移至库项目以在其他项目中重用。我移动了 Java 文件以及相应的布局和 attr XML 文件。这是库项目中的 attr 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="NumberPickerPreference" >
        <attr name="minValue" format="integer" />
        <attr name="maxValue" format="integer" />
    </declare-styleable>
</resources>

这是 list :

<manifest package="com.mydomain.androiduilibrary">
</manifest>

肯定是一个看起来很奇怪的 list 。当我生成库项目时,Android Studio 放入 list 中的唯一内容是 SDK 信息,然后生成一条警告,提示它已在 build.gradle 文件中指定,因此我删除了 list 中的条目。

我使用 bundleRelease 任务生成 AAR 文件并获得一个名为 androiduilibrary-release.aar 的文件。然后我转到需要使用此首选项的项目并选择“新模块 | 导入 .JAR 或 .AAR 包”,导航到 AAR,它现在作为一个名为 androiduilibrary-release 的模块出现在我的项目中。我在 Project Structure 对话框中建立了模块依赖关系,现在可以在 Java 代码中引用 Preference。到目前为止,还不错。

但是,当我尝试在 XML 中引用首选项时,我的自定义属性出现以下错误:“错误:(9) 在包‘com.mydomain.androiduilibrary’中找不到属性‘minValue’的资源标识符” .这是 XML:

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:title="@string/location_service_settings_preference_header_title"
    xmlns:custom="http://schemas.android.com/apk/res/com.mydomain.androiduilibrary">

<com.mydomain.androiduilibrary.NumberPickerPreference
    android:title="@string/update_interval_preference_title"
    android:key="@string/update_interval_preference_key"
    android:defaultValue="@integer/update_interval_preference_default"
    android:summary="@string/update_interval_preference_summary"
    custom:minValue="@integer/update_interval_preference_min"
    custom:maxValue="@integer/update_interval_preference_max"
    android:dialogMessage="@string/update_interval_preference_dialog_message"
    android:dialogTitle="@string/update_interval_preference_title" />

我可以查看 AAR 内部并看到值正在填充到 R.txt 中:

int attr maxValue 0x7f010001
int attr minValue 0x7f010000

并且其 list 正在正确创建:

<?xml version="1.0" encoding="UTF-8"?>

<manifest android:versionName="1.0" android:versionCode="1"
    xmlns:android="http://schemas.android.com/apk/res/android" package="com.mydomain.androiduilibrary">

    <uses-sdk android:targetSdkVersion="21" android:minSdkVersion="11"/>

</manifest>

我在调出自定义首选项时也收到警告:“此处不允许使用元素 com.mydomain.androiduilibrary.NumberPickerPreference”,所以我猜这也会是个问题。

我是否遗漏了允许我在我的 XML 中引用 AAR 中的元素的步骤?我正在使用 Android Studio 1.0.2。提前致谢。

最佳答案

this 解决了它发布,在谈论外部库的底部。本质上,在代码中引用 AAR 元素时,您使用 AAR list 中指定的包来执行此操作,但在 XML 中引用 AAR 元素时,您引用项目的命名空间(而不是 AAR)。

关于android - 无法从 XML 中的 AAR 中找到资源标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28533067/

相关文章:

Android Studio 的内存监视器显示即使在完成后 Activity 仍在内存中()

android - Android Studio 安装的重复应用程序

java - 如何将 .jar 依赖项包含到最终的 .aar 库文件中? (安卓工作室1.5)

android - 应用程序模块与库模块

java - 菜单项中的 OnActionExpandListener 不起作用。如何解决?

交换 fragment 时 Android FAB anchor 发生变化

android - 构建新的 APK 版本时,新的更改不适用

android - 如何在 Eclipse 的 Android 包中查看库依赖项的源代码或 javadoc?

安卓启动画面

java - Android 原生 UPnP 服务发现