玩转Android studio 插件开发、测试、JCenter库发布(1)

来源:互联网 发布:苹果电脑系统删除软件 编辑:程序博客网 时间:2024/05/19 19:42

在安卓项目开发中,为了测试方便,将常用的测试函数,写成插件(或者模块),发布到JCenter仓库。这样带来的好处,避免了维护的繁琐,取而代之的是只需要一句简单的引用即可。

下面将分成android studio依赖库开发、依赖库的发布、android studio插件开发发布和插件的本地测试三个部分进行讲解。

一、android studio依赖库开发和发布

首先,需要说明的是“依赖库”这个名字是我自己起的。
依赖库的形式如下:

dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:23.0.1'    //compile 'com.myutils:app:latest.release'  //最新版本    compile 'com.myutils:app:0.2'               //指定了具体的版本号}

看到上面形式,大家应该明白了吧,就是build.gradle中的依赖库。其中com.myutils:app:latest.release和com.myutils:app:0.2便是我们开发的依赖库,需要注意的是,这两个其实是同一个依赖库,只是版本号不同而已,前一个表示获取最新版本号的依赖库,后者表示获取0.2版本的依赖库。

在了解了基本的概念后,此时可以进入依赖库的开发之旅了!!
首先,创建myutils安卓工程。
如下:
这里写图片描述

很简单一个工程,代码是自动生成的。关于代码,应该不用多说什么了吧!
另外,为了增加点难度,添加了NDK 代码,原因是,我们可以将关键代码写到NDK中,防止被破解。此时的工程结构如下:
这里写图片描述

观察目录结构,区别就是多了一个JNI目录,里面添加了c代码。c代码如下:

#include <string.h>#include <jni.h>#include "example_com_myutils_MainActivity.h"JNIEXPORT jstring JNICALL Java_example_com_myutils_MainActivity_stringFromJNI        (JNIEnv *env, jobject obj){    return (*env)->NewStringUTF(env, "Hello this is my utils");}

为了讲解的简单,此处我只返回简单字符串。
另外,我们还需要修改下MainActivity类的代码,如下:

package example.com.myutils;public class MainActivity {    private native String  stringFromJNI();    static {        System.loadLibrary("hello-jni");    }    public String getString(){        return stringFromJNI();    }}

上面的代码很简单,就是加载动态库,并从静态库获取字符串,其中public String getString()函数便是我们依赖库的核心功能,此处只是简单的获取一个字符串,更多功能,还是需要读者自己来实现了。
另外需要注意的是,此处我偷懒了,利用了原来的类MainActivity。真正开发时,需要换成自己的工具类。还有一点,由于只是个依赖库,如果里面的资源等等,没有应用到,可以把manifest.xml和资源文件全部删除,减小体积。

作为最后一步,来到build.gradle构建脚本。
首先,将

apply plugin: 'com.android.application'

修改为:

apply plugin: 'com.android.library'

添加依赖库的名称和版本号,具体代表什么意思,会在下一节讲解,如下:

group = "com.myutils"version = "0.2"

此时,完整的build.gradle脚本如下:

apply plugin: 'com.android.application'group = "com.myutils"version = "0.1"android {    compileSdkVersion 23    buildToolsVersion "23.0.3"    defaultConfig {        applicationId "example.com.myutils"        minSdkVersion 8        targetSdkVersion 23        versionCode 1        versionName "1.0"        ndk {            moduleName "hello-jni"            ldLibs "log", "z", "m"            abiFilters "armeabi", "armeabi-v7a", "x86"        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:23.1.1'}

其中,需要说明的是,里面原有的依赖库等等,都可以删除的。如果不需要编译依赖库的时候,编译NDK,可以把version = “0.1”以下的内容全部删除掉。

上面便是我们的依赖库的开发,简单,却五脏俱全。
下一章,我们接着讲解如何发布到JCenter库。

0 0
原创粉丝点击