美文网首页Android Tech安卓开发经验Android项目
开篇介绍和工程目录结构【从零开始搭建android框架系列(1)

开篇介绍和工程目录结构【从零开始搭建android框架系列(1)

作者: 程序员Anthony | 来源:发表于2016-03-31 10:03 被阅读14179次

    本篇文章项目github地址:MVPCommon
    本博客原地址:http://www.jianshu.com/p/d0fee882a0fe

    项目效果 扫描二维码下载应用

    在好友的推荐下,准备开始在简书发表博客。停止在csdn那边更新博客。也会将之前在那边写的不错的博客做一个搬家。
    在写这个系列文章之前,就希望能从成熟的开发框架中引用和编辑的方式来构建一个android应用端的开发框架。这里的开发框架的意思是,搭建出一个以后的项目都可以应用的library库。

    (1)本博客系列文章目的:

    1.1 这里面包含了大多数app都需要的一些操作,以后开发的app都可以使用。
    1.2 利用这里面的思路可以进行自己公司和团队的android客户端框架的搭建

    (2)搭建框架的思路:

    2.1 利用成熟的开源库,开源jar包作为项目的依赖。
    2.2 将成熟的开源库引入本地库文件,并作出适当的修改。(有时候为了满足项目需求,必须对开源项目作出一定的自定义修改)
    2.3 利用以往项目经验对分模块分类别封装出一些父类,完成公共操作,后续开发只需要继承这些父类就可以完成大部分操作,并且可以做出适当修改。
    2.4 为一些常用操作提供模板代码,可以作为后续开发的参考
    进入正题:

    (3)项目目录结构:

    项目整体目录结构 可以看出整个工程分为四个部分。没看懂上面第一张图片的意思?那么换一种方式可能更好理解,请继续往下看。android studio的目录结构中,我们需要添加项目依赖,依赖开源库或者依赖我们自己写的库。具体的依赖关系是如下面两张图片:
    3.1 library依赖各种开源jar包,开源库,可自定义修改的开源库等:
    library依赖各种开源jar包,开源库等
    可以看到我们直接将所有的复杂的开源库jar包,以及可自定义修改的开源库都放到了library的依赖中,分别对应上图的1,3, 2。自己的项目(可以是我们以后编辑的任何的项目)都可以使用library了。如
    3.2 app(具体的项目)依赖框架library
    app(具体的项目)依赖框架library 这样以后我们依赖的什么v4,v7还是网络上的无论各种网络请求,还是图片加载,都放在library中。我们也只需要整理好library。在后面的项目开发中将会省心很多。

    (4)如何编辑library里面的框架内容:

    4.1 对于开源库,我们可以通过library下面的gradle文件进行修改,以 compile 'XXX.xxx.xxx' 这种形势,开源库里面的内容不可更改,

    编辑maven开源库 当然我们也可以在android studio中直接进行引入,也可以按照下图的步骤123进行添加:
    maven库添加步骤
    4.2 对于开源jar包,就直接放在library-libs文件夹下了。同样支持gradle文件和project structure中编辑的形式。 第三方jar包引入
    4.3 对于可自定义修改的开源库。这里直接上github下载最新版本的各种开源库,添加到ThirdPart 文件夹中,同样支持上面的两种编辑方式。 可编辑的开源库

    (5) android studio注意事项:

    5.1 使用本地jar没能编译的问题在AS中使用本地jar非常简单,只需要将jar文件放到libs目录下,然后点下工具栏中的Sync Project with Gradle Files图标即可。刚放到libs目录下,尚未编译

    尚未编译的jar包 按下工具栏中的Sync Project with Gradle Files图标,同步项目
    Sync Project with Gradle Files 编译好之后如下图所示: 已经编译的jar包 有没有正确编译的标志就是有没有出现三角箭头
    5.2 怎么让一个module成为library module的问题从github上面复制的项目过来可能不会有左边那个带有三个柱形图的小符号,而是普通文件夹的形式。所以需要做出两个配置,看下面两张图片 柱形图标代表library (在setting.gradle 中进行如图的配置)
    library的gradle代码 (在每个开源库的library中的gradle文件中,进行配置)apply plugin参数的值是com.android.application,就说明这是个app。如果apply plugin参数的值是com.android.library,就说明这是个library。
    5.3 关于maven库,jar包,开源包,aar的区别。
    请参考这篇文章,点击这里好了,项目的目录结构就介绍到这里,在这里再返回去看一下第一张图片,是不是瞬间明朗很多了。

    相关文章

      网友评论

      • 戴定康:回头再看
      • 76fb133613ae::joy: 没早点发现lz 走了好多弯路 多谢lz
      • 菜鸟考官:支持。 特地看一一个
      • JasonChen1195:啊,这下又学到了一点。感谢
      • 无极小屋:希望能看到更多好文
      • Yanqilong:博主想法很好,很值得学习和借鉴,感谢,期待博主更多关于架构上的文章
      • 张利锋:很不错的文章,学习了
      • aed5f7a1e1b5:你好!看了github上的项目,在AbsBaseActivity.java中引用了DaggerActivityComponent这个类,但是在相应的路径下没找到,是误删了吗?
        程序员Anthony:@Ronnys 嗯嗯 ,貌似是昨天没编译就上传了 :persevere: , 最近这个项目在重构,
      • 69fc7153f53f:看到dagger的文章回来从头开始看, :+1:
        程序员Anthony:@独善的黑 构建整个app的时候,最初的表达想法和后来的想法有点出入。 所以我都不忍心看我之前的文章,越看越觉得写得烂 :smiley:
      • IOXusu:感谢^_^
      • 沁浒:阿里悟空不能注册怎么破?
      • 御坂七十一号:感谢感谢
      • 失眠侠:同楼上,请问下老司机,那个ThirdPart下面加入多个第三方库是怎么干的。 还有就是如果这些第三方库也要引用其他的第三方,怎么处理这些重复的dependency。。
        程序员Anthony:@失眠侠
        1怎么加入第三方库 ?
        请看上方的回复。
        2 我这里整个项目只处理了,app模块依赖library,library模块依赖ThirdPart模块,但是没有处理ThirdPart里面的各种重复的dependency,这样虽然有重复,但是也不会有错误。如果需要处理这些重复的dependency,这篇文章还不错,你去看一下。
        http://www.jianshu.com/p/edd495d8efc8
      • 周公在世:请问多个三方库是怎么放入一个普通文件夹的? :smiley:
        周公在世:@CameloeAnthony 多谢,原来要指定路径。
        程序员Anthony:@zx993566077
        1 现在更多的采用Gradle导入,这样可以随时版本更新。除非真的需要自定义修改,才自己导入。
        2 第三方库,可以去github下载,基本所有开源库都会有library文件夹。(比如说https://github.com/astuetz/PagerSlidingTabStrip)我们就需要使用这个library文件夹(修改一下名字,比如说修改为pagerSlidingTabStrip),然后复制到ThirdPart下面。然后在整个项目的Setting.gradle下面进行全局配置。
        比如说我项目中就是这样配置的
        https://github.com/CameloeAnthony/MVPCommon/blob/master/MVPCommon/settings.gradle
        3 如果第三方开源库没有提供gradle版本,或者没有提供相应的library,(这种开源库也不建议使用)那么你就需要自己配置gradle,然后导入到ThirdPart里面了。
      • 天之大任:这个里聊天集成那家啊
        程序员Anthony:@天之大任 http://im.taobao.com/ 阿里的,OpenIM SDK
      • 浮华染流年:作者棒棒哒
      • 8262718ec56b:自学中,多谢楼主分享经验?
        8262718ec56b: @CameloeAnthony 加油,四月份马上转行做安卓,基本的知识差不多已经掌握,就差实际开发了。所以很喜欢。支持你!
        程序员Anthony:@wxk105 会持续更新的。最近工作项目有点紧张。更新的慢
      • 60ec62911b00:用什么软件编译
        程序员Anthony:@wsdeep android studio
      • jas0nHu:感谢;自学党纯靠你这种人
        程序员Anthony:@jas0nHu 好多也是自己工作和学习中遇到的问题。做一下整理。

      本文标题:开篇介绍和工程目录结构【从零开始搭建android框架系列(1)

      本文链接:https://www.haomeiwen.com/subject/aryelttx.html