文章目录
组件化介绍
让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选项,运行!