您的位置:首页 > 其它

组件化配置

2020-01-15 12:08 267 查看

文章目录

组件化介绍

让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选项,运行!

  • 点赞
  • 收藏
  • 分享
  • 文章举报
qqq408208995 发布了5 篇原创文章 · 获赞 1 · 访问量 126 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: