美文网首页框架【库】各种喜欢的
【Android组件化】app壳工程

【Android组件化】app壳工程

作者: 秀叶寒冬 | 来源:发表于2019-08-14 23:45 被阅读33次

组件化中需要一个app壳工程,这个壳工程中不处理任何业务,就只是一个空壳,由它将所需要的各个组件模块组合起来,构成一个完整的应用。

  • 直接new一个module


    1565701603073.png
    1565701638480.png
    1565701662148.png
  • 接着进入app的AndroidManifest文件将注册Activity的相关代码也搬到ModuleMain模块的AndroidManifest中去,只留下application标签。

这里注意组件化项目中每个Module都会有自己的AndroidManifest文件,最后打包时会将这些文件合并成一个文件,所以会出现application标签中的属性重复问题,要在app的AndroidManifest文件中添加如下两行代码:

//加在manifest标签里
xmlns:tools="http://schemas.android.com/tools" 
//加在application标签里
tools:replace="android:name,android:label,android:icon, android:theme,android:allowBackup"

这里的namelabeliconthemeallowBackup都可能会有重复,所以全部写上之间用逗号隔开。 完整AndroidManifest如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:name,android:label,android:icon, android:theme,android:allowBackup">

    </application>

</manifest>

接着将app目录下的build.gradle内容复制到mainmodule下的build.gradle里面,然后将app下的res资源目录及文件拷贝到mainmodule的res目录下。

需要在project下的自定义的gradle文件里加入一个判断是模块还是应用的boolean值,如本项目在fjs.gradle里添加一个布尔类型的isModule值

ext{
    isModule = false //true:作为Lib组件存在, false:作为application存在
    android = [
            compileSdkVersion :28,
            buildToolsVersion :"29.0.0",
            minSdkVersion :18,
            targetSdkVersion :28,
            versionCode :1,
            versionName :"1.0"//必须是int或者float,否则影响线上升级
    ]

    version = [
            androidSupportSdkVersion:"28.0.0",
            constraintLayoutVersion:"1.1.3",
            rxJavaVersion:"2.0.1",
            junitVersion:"4.12",
            runnerVersion:"1.0.2",
            espressoCoreVersion:"3.0.2",
    ]

    dependencies = [
            "appcompat-v7":"com.android.support:appcompat-v7:${version["androidSupportSdkVersion"]}",
            "constraint-layout":"com.android.support.constraint:constraint-layout:${version["constraintLayoutVersion"]}",
            "rxjava":"io.reactivex.rxjava2:rxjava:${version["rxJavaVersion"]}",
            "junit":"junit:junit:${version["junitVersion"]}",
            "runner":"com.android.support.test:runner:${version["runnerVersion"]}",
            "espresso-core":"com.android.support.test.espresso:espresso-core:${version["espressoCoreVersion"]}"
    ]
}
  • 在mainmodule里的build.gradle里添加一个判断,如下所示:
1565704209493.png
  • 然后在app的build.gradle里面的dependencies里添加如下内容:
    if (rootProject.ext.isModule){
        implementation project(":mainmodule")
    }
  • 在app和其它模块里分别新建一个Application,并在各自的模块里的AndroidManifest.xml文件里的application标签下引入新建的Application。
  • 然后同步即可。

源码:https://github.com/Yedongsheng/Jianshu/tree/develop

相关文章

  • 【Android组件化】app壳工程

    组件化中需要一个app壳工程,这个壳工程中不处理任何业务,就只是一个空壳,由它将所需要的各个组件模块组合起来,构成...

  • App 组件化

    项目简介 项目整体架构模式采用:组件化+MVP+Rx+Retrofit 项目构成:app壳工程 ,一个业务组件,一...

  • 组件化实践

    想要实现的组件架构如下 应用层:APP(壳工程) 生成APP和加载初始化操作。 模块层:Login Pay Liv...

  • 组件化

    组件化 1.如何实现组件化1)首先创建壳工程。2)在壳工程内集成不同的功能模块以及业务模块。3)使用cocoapo...

  • Android组件化开发实践(二):组件化架构设计

    先说说我自己的组件化架构设计方案,请看下图: 图中可以看到,从上往下分为4层:APP壳工程、常规业务组件层、基础业...

  • Android实现组件化开发的详细步骤

    新建一个项目,该项目中包含:app(壳工程)、common(功能组件)、login(业务组件)。其中common组...

  • iOS组件化--壳工程

    新建工程LZDemo作为壳工程 1、添加Podfile文件cd到你刚创建的工程目录下,执行以下语句 然后会发现你的...

  • 移动架构<第十二篇>:Android组件化架构

    模块化、组件化、插件化是当前Android工程的三大架构,市场上组件化和插件化使用最为广泛。起初,Android工...

  • APP组件化实践(二):组件划分

    上篇分析了组件的通信方案,本篇继续来讨论如何将项目组件化。 第一层:壳工程 壳工程就是最终交付项目(也可以是临时的...

  • Android快速迭代设计与实践

    目录 基础建设 基础建设 组件化,插件化,跨平台,壳view组件化:便于修改,提供其它APP使用;插件化:各个业务...

网友评论

    本文标题:【Android组件化】app壳工程

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