是否可以Android在library中使用dagger2及butterknife等框架?

我希望构建一个完整的library,这样再有新项目的时候,直接依赖库就能直接进行开发了,用作框架使用。但是我不确定是不是可以把像dagger2这种库放进library中,我自己试了试,但是出现了编译错误提示。

Error:Execution failed for task ':baseprojectlib:compileReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

构建项目的方法比较简单粗暴,就是在library中的build.gradle中直接添加依赖了。我是觉得这样肯定会有问题,但又不知道该怎么办。

或者那位大神有制作框架库的方法也可以直接告诉我,不胜感激

阅读 6.8k
4 个回答

放在一个Module中

我之前也这么想过,但是仔细想想其实是不太现实的。因为依赖了很多库,只要有其中一个有更新的话,我们自己制作的这个库就要重新打包。

所以我觉得最好的解决办法就是维护一个build.gradle文件,每次有库更新的时候,直接修改这个文件就好了。也比较方便,处理依赖也没那么麻烦。

另外,我觉得楼上说的也有道理呀。。

不要用butterknife 用android studio的插件 使用findviewbyid生成Holder很方便
而且你的模块提供给其他人也能用 一旦用了butterknife虽然写起来方便 但是不能作为Library使用
而且后期维护很麻烦

可以的。
在你的lib工程里的build.gradle里加入apply plugin: 'com.jakewharton.butterknife'

同时添加依赖

    compile 'com.google.dagger:dagger:2.9'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
    compile 'com.jakewharton:butterknife:8.5.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' 

有一点要注意的是,lib项目里使用butterknife的时候不能用R.id.***来绑定,需要

    @BindView(R2.id.toolbar)
    Toolbar toolbar;

其实github上的使用说明已经提到了如何使用https://github.com/JakeWharto...
Now make sure you use R2 instead of R inside all Butter Knife annotations.

我自己在lib中使用Dagger2Butterknife都是正常的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题