第一天:Androidstudio引入自己的module作为Library(方法跟坑)

来源:互联网 发布:手机视频修复软件 编辑:程序博客网 时间:2024/06/05 11:19

第一天,不知道写啥。就把最新的笔记分享一下。有的是复制别人的(本来是要加引入的,但是往回找找不到了),有的是自己写的。

-------------------------------------------------------我是萌萌的分割线----------------------------------------------------------------------

方法:
1.设置成为library
让我们假设我们有两个工程:MyApplication和MyLibrary,我们想导入MyLibrary到MyApplication作为一个module。
首先我们需要从MyLibrary工程中找到module中的build.gradle文件,它通常在app目录下,除非你修改了module的名称。
注意builde.gradle文件的plugin是‘com.android.application’。为了使用这个工程作为一个library工程,我们需要修改为 ‘com.android.library’
删除gradle文件中的applicationId这行,在defaultConfig 括号里面。
2. 引入
在MyApplication 工程中, 点击File -> New -> Import Module。
从MyLibrary工程中找到你想要导入的Module目录。通常它是app module(就是app文件夹)除非你给了它另一个名称。
如果在MyApplication工程中Module使用相同的名称将会出现错误。为了从一个library工程导入一个修改的Module,我们可以给它一个版本号在Module名称设置框。(就是给你的library起个名字)
然后加入依赖
问题1:
它可能工作的挺好,但这有一个很重要的问题,MyLibrary工程有它自己的依赖。例如,MyApplication和MyLibrary使用support libraries,这有可能会发生冲突。
我们可以在gradle中通过transitive配置依赖避免这个问题。
我们可以修改这行
compile project(':my-library'):
compile(project(':my-library')){ transitive=false;}

问题2:
自己写的包,一般是按照如上方法从一个项目转变过来的,那么项目配置文件里的东西就要删除。
1.application的配置要删除,不然会和主项目冲突,通过tool:replace=""来解决,相当于你的依赖包的东西被替代,所以还是删了吧。
2 包里的activity不能包含
<category android:name="android.intent.category.LAUNCHER" />
不然就会安装两个相同的APP出现。

问题3:(注意注意)
第三方包的包名一定不要跟主项目包名一致。否则会报java.util.zip.ZipException: duplicate entry: 的错误,你百度会发现是类冲突,但是有的class是编译生成的,不可避免。那么这时候的原因就是你的包名问题,切记切记。

问题4:
在合作开发的时候,你把自己引入的Library提交到Git,但是别人down下来发现有问题,文件夹没有作为Library的图标,这时候就是你的settings.gradle文件没有提交的问题,引入的项目在这里都有include的。

问题5:
一个项目作为Library的时候,switch不能用ID。比如:case:R.id.button.这个是不允许的,作为替代方法,就是用if else 来代替。




阅读全文
0 0
原创粉丝点击