组件化配置

组件化介绍

让lib_module能独立运行(通常创建的Android Library应该都是“lib”+”_”+“特效” )
在这里插入图片描述

配置4步骤
步骤1 :创建config.gradle

直接右键项目创建File,命名config.gradle
说明:既然使用到组件化,那么随着使用的深入,后面也会需要统一管理。
下面代码:是否组件化、使用的sdk配置版本、单独模块的appID

ext{
    //false 集成模式
    //true  组件模式(可独立运行) 
    isComponent =true
    androidConfig=[
            compileSdkVersion:28,
            minSdkVersion:15,
            targetSdkVersion:28,
            versionCode:1,
            versionName:"1.0"
    ]
    appIdConfig=[
            app :"com.zzn.app",
            moudle1:"com.zzn.moudle1"
    ]
    supportLibrary = "28.0.0"
    dependencies = [
            appcompatv7:"com.android.support:appcompat-v7:${supportLibrary}"
    ] }
步骤2 :在项目的Gradle中引用,创建的config.gradle
//Gradle配置文件引用
apply from: "config.gradle"
buildscript {
    repositories {
        google()
        jcenter()
    }
步骤3 :module创建AndroidManifext和Application

在module的main目录下:
创建文件夹:

  • module
  • module/java
    创建文件:
  • module/AndroidManifest.xml (这个可以直接复制原来的,再修改)
  • module/java/Moudle1App.class

Application

package com.zzn.moudle1;   //package这里可能会有语法提醒,可以忽略,默认的路径冲突不影响运行
import android.app.Application;
public class Moudle1App extends Application {
}

自己创建的AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zzn.module1">
    <application
        android:name="com.zzn.moudle1.Moudle1App" //Application路径设置
        android:theme="@style/AppTheme">		 //这里复制app的style资源过来或者自己创建	
        <activity android:name=".OneActivity">
            <intent-filter>						//启动过滤创建
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
步骤4 :module的build.gradle配置

根据config.gradle的isComponent 的true/false判断使用:
1.插件 library/application
2.是否appId
3.设置资源文件应用路径

if (!isComponent){
    apply plugin: 'com.android.library'
}else {
    apply plugin: 'com.android.application'
}
def config = rootProject.ext.androidConfig //将config.gradle的ext下的变量赋值给这里的config,就可以使用了
def appIdConfig = rootProject.ext.appIdConfig
android {
    compileSdkVersion config.compileSdkVersion //这里
...
...
        }
        //配置组件的app ID
        if (isComponent) {
            applicationId appIdConfig.moudle1
        }
        //配置BuildConfig 代码中可以调用判断
        buildConfigField("boolean", "isComponent", String.valueOf(isComponent))
        //配置资源文件
        sourceSets {
            main {
                if (isComponent) {
                    manifest.srcFile 'src/main/module/AndroidManifest.xml'
                    java.srcDirs 'src/main/java', 'src/main/module/java'
                } else {
                    manifest.srcFile 'src/main/AndroidManifest.xml'}}}}
    buildTypes {
...
...
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
...
...
...
}

其他:
buildConfigField可以配置项目编译时将isComponent这个boolean值写入BuildConfig
编译之后的BuildConfig路径:
module1\build\generated\source\buildConfig\debug\com\zzn\module1\BuildConfig.java

/**
 * Automatically generated file. DO NOT MODIFY
 */
package com.zzn.module1;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.zzn.moudle1";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
  // Fields from default config.
  public static final boolean isComponent = true;
}

最后再贴个目录图:
在这里插入图片描述

最后,最后,编译之后,在运行按钮项目选着就会多出module选项,运行!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值