前言

  Module项目,顾名思义就是作为app的独立的单元模块的项目。

  在小型app项目里因为没有这么多页面与java文件,所以模块意义不大,所以在小型项目里意义更多是用于管理libs,毕竟将所有的第三方库都放到主项目的libs下,如果第三方库多了管理这个libs文件夹会特别费劲,因为文件太多了。我们可以将一些重量级的第三方库独立用一个Module管理。

  而在大型项目里意义就很大了,因为Android开发是不建议在主项目里放入大量的文件来管理各个模块的,一方面很乱各种依赖,另一方面也违背了插拔模块与面对对象的思想。所以将一些模块独立开放到module里意义重大,这样在分工开发的时候各自的开发人员只需要关注自己的module项目就行了。 另外各个java文件也可以很平面化管理(只在项目里创建几个类别文件),而不是根据一个模块在主项目里创建一个这个模块名称的文件夹,然后在里面又创建类别文件夹在来区分放入各种这个模块的activity、adapter、util、widget、bean。正确做法应该将这个模块独立成一个module项目。

添加一个新的Module项目

    第一步:在Android studio的菜单栏 找到 > File > New > New Module... 点击进入 Create New Module

    

    选择Android Library 点击 Next

    第二步:输入项目名称

    

    

导入一个旧的Module项目

  第一步:在Android studio的菜单栏 找到 > File > New > Import Module... 点击进入

  

  第二步:导入一个自己需要的项目,并且设置名称,点击Finish。我这里选择了一个叫MyModule的项目

成功导入后我们可以在目录下面看到这个项目。

第三步,导入完成后并不是结束了,现在需要配置这个项目成为library项目

  1.首先我们需要进入我们的app主项目的build.gradle下添加这个项目

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation project(':MyModule')//在这里引用项目 注意别忘记:号 }

  2.修改根目录下的settings.gradle文件 添加上你导入的项目名称

include ':app', 'MyModule'
rootProject.name='FragmentDemo'

3.打开MyModule项目下的build.gradle,我们将在这里配置相关属性,首先我们看看如果没有配置过的build.gradle是什么样的并且标注要修改的点

  没有修改过过的build.gradle

apply plugin: 'com.android.application' //这里要修改成 'com.android.library'

android {
compileSdkVersion 28
defaultConfig {
applicationId "com.zh.mymodule" //这个id要去掉
minSdkVersion 27 //注意这里的最低版本,需要与主项目一致
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

  修改后

apply plugin: 'com.android.library'

android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 27
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

  4.重新编译整个项目,就可以看到我们的项目变成library项目了

删除一个Module项目

  1.去掉settings.gradle文件里,需要删除的项目名称。 这步很重要如果不删除这个项目名称,你无法在Android studio里删除这个导入的项目,并且就算手动在文件夹里删除目录Android studio依然自动生成这个项目的目录

  2.去掉app主项目的build.gradle文件里,implementation project()的项目

  3.然后就是重新编译一下项目,这个时候项目的library属性就被去除了,然后直接删除这个项目即可。

设置Module项目的Libs的Jar在主项目里使用

1.在项目里添加libs包,并且加入jar

2.设置这个module项目的build.gradle

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
api files('libs/xxxxxxxx.1.0_L.jar') //关键点 api files
}

这样就可以在主项目上使用这个jar包了,而不是jar只局限在这个module项目里

    

END

Android studio 添加引用Module项目 与 设置Module项目的Libs的Jar在主项目里使用的更多相关文章

  1. Android Studio 添加引用Module项目

    新建Android项目,修改为Module 新建一个android项目 给项目命名,这里命名为MyLibrary,作为可引用的Module项目 点击下一步,选择一个Activity,点击ok 下面将这 ...

  2. Android studio 添加引用新建类库

    1.新建一个工程包 2.修改AndroidManifest.xml 将AndroidManifest.xml 修改为 <manifest xmlns:android="http://s ...

  3. 在Android Studio添加本地aar包引用

    1.如何在Android Studio添加本地aar包引用 https://jingyan.baidu.com/article/2a13832890d08f074a134ff0.html 2.完成上述 ...

  4. Eclipse / android studio 添加第三方jar包 步骤

    eclipse 将第三方包放到libs文件夹后并没有引用. 基本步骤分为3步,具体介绍如下: 打开自己的Eclipse,在自己的Android工程上名上右键->Build Path ->C ...

  5. Android Studio(六):Android Studio添加注释模板

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  6. 在Xcode5和Android Studio添加工程间的依赖

    正在编辑中,尚未完成 先看看ios的target是什么,请先参看http://www.cocoachina.com/bbs/read.php?tid-10884.html做个大概了解 这里有一篇文章, ...

  7. Android studio 中引用jar的其实是Maven?(二)

    上一篇:Android studio 中引用jar的其实是Maven?(一) 搭建maven仓库: 去了解一个新的事物的时候,最好的方式就是去使用它.例如去了解一座城市的时候,最好的方式就是乘坐公共交 ...

  8. Android studio 中引用jar的其实是Maven?(一)

    由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显 ...

  9. 【Android Studio安装部署系列】十五、Android studio添加Assets目录

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio新建项目时是没有assets目录,需要自己手动创建. app右键——New——Folder——Asset ...

随机推荐

  1. ArcGis基础—shapefile矢量文件与lyr图层文件之间有何区别?

    shapefile (.shp) 是一种矢量数据存储格式,用于存储地理要素的位置.形状和属性. shapefile 存储在一组相关文件中,并包含一个要素类. 图层文件 (.lyr) 是存储源数据集路径 ...

  2. 10种JavaScript特效实例让你的网站更吸引人

    我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架(可以让编写代码变得更容易些);使用能工作于现有的JavaScript框架下的提前预 ...

  3. JQ基本

    jQuery的入口函数: 特点:1. 等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完毕,jQuery帮我们完成了封装. 2. 相当于原生js中的DOMContentLoaded. ...

  4. vacuumdb - 收集垃圾并且分析一个PostgreSQL 数据库

    SYNOPSIS vacuumdb [ connection-option...] [ --full | -f ] [ --verbose | -v ] [ --analyze | -z ] [ -- ...

  5. actionlib学习

    ROS中的服务service是一问一答的形式,你来查询了,我就返给你要的信息. action也有服务的概念,但是它不一样的地方是:不是一问一答,而多了一个反馈,它会不断反馈项目进度. 如navigat ...

  6. API Gateway和Route 53及CloudFront的连携使用

    API Gateway部署出来之后的url网址对于普通用户并不友好,所以肯定是需要一个正常的域名来作为url进行访问. 主要有以下几点, API Gateway可以自定义域名 自定义的域名要从Rout ...

  7. selenium IDE的安装及录制回放的简单使用

    1.Selenium IDE下载地址为http://docs.seleniumhq.org/download/(需要翻墙) 2.直接单机“Download version”后面的版本号即可开始下载 3 ...

  8. Jenkins添加Windows自动化构建方案

    一.为Jenkins添加Windows节点 这里需要填写远程工作目录,启动方法一项一定要选择"Launch agent via Java Web Start"一项,其它的保持默认. ...

  9. CAS -- ABA问题的解决方案

    我们现在来说什么是ABA问题.假设内存中有一个值为A的变量,存储在地址V中. 此时有三个线程想使用CAS的方式更新这个变量的值,每个线程的执行时间有略微偏差.线程1和线程2已经获取当前值,线程3还未获 ...

  10. linux秘钥登录

    秘钥登录首先要了解四个文件: 公钥文件,私钥文件, authorized_keys, 还有/etc/ssh/sshd_config配置文件. 公钥文件存放在被登陆的机器上, 要将公钥添加进author ...