美文网首页
Android组件化(二)组件包配置

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

作者: 杰杰哥哥 | 来源:发表于2017-11-09 16:28 被阅读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,那么工程是无法运行的。
    这样就可以进行上一讲的上传操作了。

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

    相关文章

      网友评论

          本文标题:Android组件化(二)组件包配置

          本文链接:https://www.haomeiwen.com/subject/jdfmmxtx.html