Android组件化(二)组件包配置

2017-11-09  本文已影响0人  杰杰哥哥

上次分享主要是组件包管理以及如何上传到自己私有库,今天主要是讲解如何配置组件库,包括自己调试以及发布后如何去使用。
首先,大家要清楚如果组件可以作为一个Application自己运行的,也可以作为aar/jar让使用方去引用的,而在自己的工程下面自己调试会方便很多,
这样可以有效的提高开发效率,而当发布后才作为aar/jar让其他人去使用。
所以,今天主要是介绍这两种使用方式的配置以及使用方法。
作为一个Application配置:

第一步,找到gradle.properties文件,增加

# 设置当前版本为application还是library,
# 如果当前是需要自己工程调试的,那么请设置为 false
# 如果当前是发布作为aar/jar,那么请设置为 true
isModule=false

第二步,找到app的 build.gradle文件,用如下代码替换apply plugin:'com.android.application'

if (isModule.toBoolean()) {
    // 表示当前包生成的是jar/aar
    apply plugin: 'com.android.library'
} else {
    // 表示当前项目中调试
    apply plugin: 'com.android.application'
}

第三步,还是在app的 build.gradle文件中,按照如下代码进行修改,这样做的目的是如果当前选择的是作为jar/aar方式
那么如果你设置了applicationId,那么gradle在编译的时候会报错,所以我们需要增加此判断。

defaultConfig {
        // 判断当前打包环境,如果是library那么不需要设置applicationId
        if (!isModule.toBoolean()) {
            applicationId "com.android.xxx.logger"
            versionCode 3
            versionName "1.0.2"
        }
        minSdkVersion 17
        targetSdkVersion 25

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

第四步,还是在app的build.gradle文件中,增加如下配置:
这个配置的目的是因为调试模式和jar/aar模式所需要的manifest的配置可能是不一样的,比如你在调试环境中
可以自己配置调试的activity,那么在jar/aar模式中是不需要的,这些调试的文件是没必要去打包到你的jar/aar中
的,所以通过这些代码来去区分。

android {
      ...
      sourceSets {
        main {
            if (!isModule.toBoolean()) {
                manifest.srcFile 'src/main/debug/AndroidManifest.xml'
            } else {
                manifest.srcFile 'src/main/release/AndroidManifest.xml'
                //release模式下排除debug文件夹中的所有Java文件
                java {
                    // 去掉debug模式下的调试的java代码
                    exclude 'com/android/xxx/logger/debug/**'
                }
            }
        }
    }
    // 为了避免jar/aar组件包资源重名问题
    resourcePrefix "logger_prefix"
}

第五步,删除你工程下面的AndroidManifest.xml文件,增加两个文件夹,debug以及release,
文件目录结构如下图所示:


image.png

其中,修改release下面的AndroidManifest.xml为如下代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.android.xxx.logger"
          xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:theme="@style/AppTheme">
        <activity android:name=".debug.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

第六步,在你的包下面增加debug文件夹,并且把你的MainActivity Copy到里面,这样做的目的是
我会在打包jar/aar的时候,剔除掉debug里面的所有内容,以后你自己的调试代码都必须放在debug
文件夹里面。

至此,所有的配置就都已经完成了,你可以试试,如果吧gradle.properties中的isModule设置成false或者true试试,
你会发现如果设置成false,那么你可以直接运行起来的,如果设置成false,那么工程是无法运行的。
这样就可以进行上一讲的上传操作了。

下一讲,我会介绍如何去使用以及相关的配置。

上一篇下一篇

猜你喜欢

热点阅读