安卓项目打包SDK实战

作者: 半岛铁盒1979 | 来源:发表于2019-10-30 15:19 被阅读0次

    前言:最近需要是将项目中的几个模块以SDK的方式提供给其他APP集成,总结如下。

一、jar和aar的区别:

       jar只包含源代码以及清单文件;aar不仅包括源代码及清单文件,还包含了布局以及资源文件等。由此可见,我们需要将项目打包成aar提供给其他APP集成。

二、项目打包aar的步骤:

1、修改AndroidManifest.xml
        去除<application>标签中的name,label,icon等属性,去除intent-filter启动项

<application>
        <activity
            android:name=".function.main.activity.YDSplashActivity"
            android:theme="@style/ydsdk_SplashTheme">
            <!--<intent-filter>-->
                <!--<action android:name="android.intent.action.MAIN" />-->

                <!--<category android:name="android.intent.category.LAUNCHER" />-->
            <!--</intent-filter>-->
        </activity>
</application>

2、修改build.gradle
        修改apply plugin, applicationId

//将application修改成library
apply plugin: 'com.android.library'
//apply plugin: 'com.android.application'

//去除applicationId
defaultConfig {
//applicationId "com.yunda.AgentApp"
        minSdkVersion 17
        targetSdkVersion 22
        versionCode 1220
        versionName "1.2.2"
        multiDexEnabled true
        buildConfigField("String", "API_HOST", "${API_TEST_HOST}")
        ndk {
            abiFilters "armeabi"
        }
    }

3、修改资源文件名
        防止和集成的APP有冲突,需要统一修改资源文件以及图片的名称,在build.gradle的android中添加如下代码:

//资源文件以ydsdk为开头,避免与待集成app冲突
    resourcePrefix "ydsdk_"

这个时候未修改的资源文件名会报红,需要自己手动修改,暂时没找到统一修改的方法,以及图片名也需要手动修改。

4、解决Application的问题
        由于一个APP只能有一个Application,所以需要解决SDK项目的Application初始化的问题。这里新建了一个类,用于集成之后进行初始化,以及获取全局的Application。

/**
 * 类名: YDMarketSDK
 * 描述: 初始化SDK
 * 日期: 2019/10/24
 *
 * @author: xxx
 */
public class YDMarketSDK {

    //提供给第三方调用,进行初始化
    public static void initSDK(Context context) {
        mContext = context;
    }

    public static Context getContext() {
        return mContext;
    }
}

5、解决compile引入的maven无法打到aar中
       需要下载对应的jar到本地项目的lib下面进行引入,注意:如果项目有引入aar的话,是无法打到aar中的

//    compile 'com.google.code.gson:gson:2.7'
//    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile files('libs/gson-2.7.jar')
    compile files('libs/okhttp-3.4.1.jar')
    compile files('libs/okio-2.2.1.jar')
    compile files('libs/kotlin-stdlib-1.3.11.jar')
// 无法将引入的aar打包到sdk中,下载对应的源代码拷贝到项目中即可
//    compile 'com.daimajia.swipelayout:library:1.2.0@aar'

7、aar代码混淆
        和APP代码混淆一样,参考我的另一篇文章

8、进行打包
        通过assembleRelease命令打arr


打包.png

在build->outputs->aar文件夹下面生成了对应release的aar


生成的aar.png
三、项目引入aar
1、将aar放到项目中的libs中 libs.png

2、在app->build.gradle中添加:

repositories {
    flatDir {
        dirs 'libs'  //系统将在lib目录下搜索依赖
    }
}
//在dependencies中添加
compile(name: 'app-release', ext: 'aar')

3、初始化SDK


初始化.png

4、打开SDK


打开SDK.png

    至此SDK的开发集成已告一段落,未完待续...

相关文章

网友评论

    本文标题:安卓项目打包SDK实战

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