【问题标题】:Linking an Android project to another将一个 Android 项目链接到另一个
【发布时间】:2012-11-02 14:49:56
【问题描述】:

我将一个项目转换为库项目并将其链接到另一个项目,但出现这些错误(SearchFacebook 是库项目):

[2012-11-02 16:29:10 - FacebookFollower] G:\AndroidProjects\FacebookUpdaterFollower\SearchFacebook\res\layout\test_results_auto_complete.xml:2: error: No resource identifier found for attribute 'categories' in package 'shira.android.facebook.updaterfollower.search'
[2012-11-02 16:29:10 - FacebookFollower] G:\AndroidProjects\FacebookUpdaterFollower\SearchFacebook\res\layout\test_results_auto_complete.xml:2: error: No resource identifier found for attribute 'max_results' in package 'shira.android.facebook.updaterfollower.search'

我检查了 R 文件和资源标识符,当链接项目编译为独立项目(不是库)时,我没有收到这些错误。

顺便问一下,我可以链接一个 Android 项目而不将其转换为库吗?

更新: 正如建议的那样,我更改了使用它们的自定义属性的命名空间。我在项目中使用该库的布局文件现在看起来像这样(相关部分):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp"
xmlns:search="http://schemas.android.com/apk/res-auto">

<shira.android.facebook.updaterfollower.search.FacebookResultsAutoComplete 
    android:id="@+id/followed_type_auto_complete" android:layout_width="match_parent" 
    android:layout_height="wrap_content" android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" android:hint="@string/followed_type" 
    search:max_results="15"/>

但是,我仍然遇到与以前相同的错误,并且我将 Android 工具更新到了最新版本,那么可能出了什么问题?

【问题讨论】:

  • 您是否正在从您的主项目访问 max_results?如果是这样,你的库中是否有 max_results?
  • max_results 在我的库中,但我不是从主项目中访问它,而是从库项目中访问它。
  • 你在转换到库之前有这些错误吗?
  • 不,这就是为什么我不明白为什么我现在得到它们。
  • 您尝试清理项目了吗?

标签: android android-library


【解决方案1】:

您可能会遇到由库项目中的自定义属性引起的已知错误。

http://code.google.com/p/android/issues/detail?id=9656

幸运的是,r17 android 工具引入了一个修复程序。 Comment 71 在这个问题上应该为您指出一个可行的解决方案。

【讨论】:

  • 我更新了我的版本,更改了命名空间,但仍然遇到相同的错误...
【解决方案2】:

可能使用该方法的类,需要导入那个包

【讨论】:

    【解决方案3】:

    需要有关您的实施的更多信息。您可以在此处提供代码 sn-p(not complete) 来支持您的问题。

    1. 提供您正在使用的两个包(main、lib)。(need not to be original)。(必须是唯一的
    2. 确保您没有在库项目和主项目中重复相同的资源 ID。(以防选择不同)
    3. 检查R 文件的导入包查询。 (这很重要)正确的 R 文件在哪里导入。

    当我使用库项目时,R 文件经常被导入为 android.R,我在很长一段时间后通过导入它的相关 R 文件来解决。

    希望这会对你有所帮助。

    【讨论】:

    • 如何更改资源 ID?而且我正在使用对不在同一个应用程序包中的任何资源的显式引用,因此我不需要导入 R 文件。导致错误的布局文件附在上面。
    • 这里导入 R 文件的意思是“如果您的 IDE 导入了错误的(默认)R 文件,而您可能会期待别的东西。”这就是我想要确定的。无论如何,对不起,我错过了您的自定义属性。在我的项目中,我没有使用自定义属性:(。所以我怀疑您的问题可能是由于自定义属性造成的。尝试将属性 xml 复制到您的主项目(未从我的最终测试)。
    【解决方案4】:

    导航到库项目 gen 并删除它的全部内容。 对主项目执行相同的操作。 从 Eclipse 选项菜单中选择项目 -> 清理。 全部完成后选择构建,看看是否出现错误。

    【讨论】:

      【解决方案5】:

      尝试将项目导出为 jar,然后在另一个项目中作为 jar 文件使用。希望这会有所帮助..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-25
        • 1970-01-01
        • 2019-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多