Gradle 7.0 配置组件化开发模板
Posted -SOLO-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle 7.0 配置组件化开发模板相关的知识,希望对你有一定的参考价值。
通过属性配置
在gralde.properties中配置属性,是否开启并行开发
#是否启动并行开发模式,如果开启的话,每个组件都可以单独运行
TRSParallelDevMode=true
在model的gralde中配置
主要区别是
区分项 | DevMode 为true | DevMode为false |
---|---|---|
插件id | com.android.application | com.android.library |
defalutConfig | 必须配置applicationId,versionCode和versionName | 不需要 |
清单文件 | 必须配置图标,app名称等 | 只能有application |
参考gradle
boolean devMode = TRSParallelDevMode.toBoolean()
if (devMode)
apply plugin: 'com.android.application'
else
apply plugin: 'com.android.library'
android
namespace 'com.trs.app.module_login'
compileSdk 32
defaultConfig
minSdk 21
targetSdk 32
if (devMode)
applicationId "com.trs.app.aroutertest2.login"
versionCode 1
//组件化一定要配置versionName,Arouter初始化会检测versionName
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
javaCompileOptions
annotationProcessorOptions
arguments = [AROUTER_MODULE_NAME: project.getName(), AROUTER_GENERATE_DOC: "enable"]
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
compileOptions
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// 配置资源路径,方便测试环境,打包不集成到正式环境
sourceSets
main
if (devMode)
// 如果是组件化模式,需要单独运行时
manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
else
// 集成化模式,整个项目打包apk
manifest.srcFile 'src/main/AndroidManifest.xml'
dependencies
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation project(path: ':module_base')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.github.jadepeakpoet.ARouter:arouter-api:1.0.1'
annotationProcessor 'com.github.jadepeakpoet.ARouter:arouter-compiler:1.0.1'
module 形式的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<activity
android:name=".LoginActivity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
</application>
</manifest>
以application运行的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:name="com.trs.app.module_base.app.BaseApp"
android:icon="@drawable/ic_launcher"
android:label="login"
android:roundIcon="@drawable/ic_launcher"
android:supportsRtl="true"
android:theme="@style/Theme.ARouterTest2"
tools:targetApi="31">
<activity
android:name=".LoginActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
</application>
</manifest>
注意如果activity要设置为启动的activity那么android:exported属性必须为true
必须设置versionName Arouter需要获取versionName,否则会报空指针异常,不容易调试出来
以上是关于Gradle 7.0 配置组件化开发模板的主要内容,如果未能解决你的问题,请参考以下文章