【问题标题】:Android using AndroidAnnotations in Library Project EclipseAndroid 在库项目 Eclipse 中使用 AndroidAnnotations
【发布时间】:2011-07-05 09:23:16
【问题描述】:

我正在制作我的应用的付费/免费版本,所以有一个两个应用都使用的“图书馆项目”。

我正在尝试使用 Android 注释来清理我的代码: http://code.google.com/p/androidannotations/

不幸的是,当我在共享库项目中使用它时,我的一个项目在 Eclipse 中出现错误: xActivity_ 类型已经定义 xActivity_.java /ProjectName/.apt_generated/lib/activities/

因为 Android Annotations 会在 .apt_generated 文件夹中自动创建一个带有额外“_”的新活动,因此允许其中一个应用程序创建此文件,但另一个应用程序会收到“已定义”错误。

Eclipse 中有没有办法解决这个问题?还是 Android 注释有问题?

【问题讨论】:

    标签: android eclipse annotations library-project android-annotations


    【解决方案1】:

    这似乎是一个 AndroidAnnotations 错误,应该在专用的bug tracker 上报告。

    AndroidAnnotations 在设计时并未考虑到这个用例,但这仍然是一个非常有效的用例。问题似乎是活动是在共享库项目中生成的,什么时候应该在每个依赖项目中生成,对吗?

    (请在错误跟踪器中回答)

    【讨论】:

    • 感谢您的输入,我将提交给错误跟踪器,但只是想检查它是否可以在 Eclipse 中修复。是的,活动应该在依赖项目中生成,否则两个依赖项目都试图在同一位置生成相同的活动。
    【解决方案2】:

    这个问题很老了,但我想我应该提一下android注解现在支持在库中使用:

    https://github.com/excilys/androidannotations/wiki/Library-projects

    需要注意的是,由于 android 库项目生成 R 类的方式,您不能直接在注释内引用资源。例如,你不能这样做:

    @EActivity(R.layout.myLayout)
    public class MyActivity extends Activity {
    
     @Click(R.id.myButton1, R.id.myButton2})
     public void someButtonClicked() {
     }
    }
    

    您必须这样做:

    @EActivity(resName="myLayout")
    public class MyActivity extends Activity {
    
      @Click(resName={"myButton1", "myButton2"})
         public void someButtonClicked() {
      }
    }
    

    【讨论】:

      【解决方案3】:

      我只知道 AndroidAnnotations(这似乎是一个很棒的工具!)但我认为如果您使用不同的项目(共享同一个库)执行此操作,您的问题应该得到解决。

      【讨论】:

      • 这正是我所拥有的。一个 Android 库项目 ProjectLib 说,它有一个使用 AndroidAnnotations 的活动。但是我有两个使用这个库的项目,其中一个能够成功构建项目。但是另一个在 Eclipse 中有一个错误:类型 xActivity_ 已经定义 xActivity_.java /ProjectName/.apt_generated/lib/activities/ 我猜是因为它正在尝试生成已经存在的相同文件。现在我在“注释处理”中看到路径设置为“.apt_generated”我应该为其中一个项目更改它吗?抱歉,我再清楚不过了!
      • 我没有使用过AndroidAnnotations所以我不知道它是如何工作的,但我认为如果你去eclipse并做File -> New -> Project,它不应该尝试创建同一文件夹中的文件。否则,如果可能的话,在其中一个项目中更改该路径也应该可以解决问题。在其中一个项目中更改命名空间也可以解决它。
      • 不幸的是,两个项目都使用共享库,它们都尝试在共享库中创建相同的文件。
      猜你喜欢
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 2015-12-01
      相关资源
      最近更新 更多