Android 模块引入 android模块化开发 您所在的位置:网站首页 组件化与模块化的区别与联系 Android 模块引入 android模块化开发

Android 模块引入 android模块化开发

2023-06-24 03:27| 来源: 网络整理| 查看: 265

1.为什么要模块开发

     1.解耦性强:随着业务的增多,代码变的越来越复杂,每个模块之间的代码耦合变得越来越严重,解耦问题急需解决。

     2. 编译时间大大减少:以为业务场景对,代码越来越大,同时编译时间也会越来越长。

     3.提高团队协同开发:  团队协同开发存在较多的冲突.不得不花费更多的时间去沟通和协调,影响开发效率 。

   模块化的定义:   

    Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

      英文好的同学自己就自己看英文了,具体意思就是,模块化就是将一个程序按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能相关的内容。比如登录功能可以是一个模块。

主要的思想:(从网上找的)

Android 模块引入 android模块化开发_Android 模块引入

  android 模块化开发主要是以module来拆分,觉的来代码直接一点。

首先看一下demo的studio结构:

Android 模块引入 android模块化开发_Android   _02

简单说明一下,这里我只要是分成三个部分,一个肯定是我们的宿主APP模块,第二个就是Base模块,这个模块是我们的基础模块,也就是各个module的库,第三个是FirstModule(module的写错了),这个是我模拟的一个功能模块module(实际的业务模块)。

 在FirstModule的gradle文件中

//在文件的顶部 if(isBuildModule.toBoolean()){ apply plugin: 'com.android.application' }else{ apply plugin: 'com.android.library' } //在Android模块中 sourceSets { main { if (isBuildModule.toBoolean()) { manifest.srcFile 'src/main/debug/AndroidManifest.xml' } else { manifest.srcFile 'src/main/release/AndroidManifest.xml' } } } //isBuildModule是在gradle.properties中声明 isBuildModule=false

在然后是配置AndroidManifest.xml文件,以为当isBuildModule=true时,FirstModule是一个可以运行的模块,为false时是一个库,所以要配置一个AndroidManifest.xml

Android 模块引入 android模块化开发_模块化_03

false就是debug的AndroidManifest.xml,true就是release的AndroidManifest.xml

两个代码是分别是

//debug //release

FirstModule 基本就完成了,APP的宿主和我们平时一样,不用改什么,我在APP中创建MainActivity,在FirstModule中坚决了firstActivity。然后用intent跳转

Intent intent = new Intent(MainActivity.this, FristActivity.class); startActivity(intent);

单isBuildModule=false是项目成功了跳转到FirstActivity了,可单isBuildModule=true时,也就是FirstModule为一个可运行的demo时,APP模块FirstActivity应用爆红了,找不到这个class。原因就是FirstModule不是一个库所以在不到这类,所以我们不能用intent,当然可以用隐式跳转,但是麻烦容易出错,所以在这里我采用了阿里的路由,GitHub的地址:https://github.com/alibaba/ARouter,具体内容的自己去看。

        我把这个ARouter依赖带Base module库中,配置的时候有2个需要注意的是:

     1:gradle的版本2.2的用api。

     2:api 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar' 这个是阿里的插件,每个module都要添加同样还有在gradle的Android模块加

javaCompileOptions { annotationProcessorOptions { arguments = [ moduleName : project.getName() ] } }

然后在各个module中应用Base库

implementation project(':Base')

最后就按ARouter的规则来跳转。

button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ARouter.getInstance().build("/frist/fristactivity").navigation(); } }); @Route(path = "/frist/fristactivity") public class FristActivity extends AppCompatActivity {...}


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有