Gradle 7.0 配置组件化开发模板

Posted -SOLO-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle 7.0 配置组件化开发模板相关的知识,希望对你有一定的参考价值。

通过属性配置

gralde.properties中配置属性,是否开启并行开发


#是否启动并行开发模式,如果开启的话,每个组件都可以单独运行
TRSParallelDevMode=true

在model的gralde中配置
主要区别是

区分项DevMode 为trueDevMode为false
插件idcom.android.applicationcom.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 配置组件化开发模板的主要内容,如果未能解决你的问题,请参考以下文章

AndroidStudio gradle 7.0+配置说明

Android使用Gradle统一配置依赖版本

Android使用Gradle统一配置依赖版本

Gradle 7.0 依赖统一管理的全新方式,了解一下

Gradle 模板配置

gradle常用配置模板集锦