使用Android Studio生成类库
来源:互联网 发布:网络114黄页 编辑:程序博客网 时间:2024/06/05 18:55
有时需要对项目进行重构,将与业务无关的基础类移入到单独的类库中,即将项目结构变成下图所示的样子,业务类表示主项目,保持了对基础类库的引用:
这篇文章主要记录如何使用Android Studio生产类库。
假设我们现在已经有了一个名为LibTest的项目,其项目结构如下图所示:
这个项目中,目前只有一个app Module,其中MainActivity为业务类,LogTools为与业务无关的工具类。
假设MainActivity简单地调用了LogTools类中的方法,如下面的代码所示:
package stark.a.is.zhangjian.libtest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LogTools.print("onCreate Finish"); }}
LogTools类的定义如下:
package stark.a.is.zhangjian.libtest;import android.util.Log;class LogTools { static void print(String log) { Log.d("LibTest", log); }}
随着项目变得越来越复杂,我们定义了越来越多的工具类,
此时我们就想将所有的工具放到一个单独的类库中。
于是,我们就开始利用AndroidStudio创建类库了。
1、创建类库
首先直接在项目下创建一个新的Module,将其的类型设置为Android Library即可,如下图所示:
创建成功后,项目的目录结构变成了:
可以看出,类库tools与主项目app的地位是一致的,都是单独的module,有独立的build.gradle文件。
build.gradle文件为不同类型的module进行了不一样的声明。
其中,app Module的声明如下:
apply plugin: 'com.android.application'
类库对应module的声明如下:
apply plugin: 'com.android.library'
2、修改build.gradle文件
创建出类库后,必须修改app Module的build.gradle文件,使得app Module在编译时可以找到tools Module。
这里就如同修改源码中的Android.mk文件一样,是一种编译需求。
我们首先看看项目对应的settings.gradle文件的内容:
include ':app', ':tools'
然后,就可以按照settings.gradle文件的内容,修改app Module的build.gradle文件了,在其中dependencies的部分增加依赖文件的路径:
............dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.1.0' //增加下面的内容即可 compile project(':tools') testCompile 'junit:junit:4.12'}
此时,app Module编译时就可以使用tools Module中的内容了。
3、代码移植
类库创建完毕后,我们就可以将所有tools相关的类添加到tools Module中了。
例如LogTools类移动到tools Module中变为:
package stark.a.is.zhangjian.tools;import android.util.Log;public class LogTools { public static void print(String log) { Log.d("LibTest", log); }}
相对的我们可以移除app Module中的LogTools类,改变MainActivity中的调用:
package stark.a.is.zhangjian.libtest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import stark.a.is.zhangjian.tools.LogTools;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //此时使用的就是toos Module中的方法了 LogTools.print("onCreate Finish"); }}
- 使用Android Studio生成类库
- android studio使用gsonformat直接生成类
- 使用Android Studio生成javadoc
- Android Studio生成.so库
- android studio 生成aar并使用
- 使用 Android Studio 生成jar包
- 使用android studio生成jar包
- 如何使用Android studio生成APK
- Android Studio aar文件生成及使用
- Android studio .aar生成及本地使用
- 使用android studio 生成jar包
- android studio 使用库
- Android Studio JNI生成so库
- Android Studio生成so库及运行
- Android Studio自动生成相关的类
- android studio 轻松自动生成实体类
- Android Studio生成数字签名
- Android Studio生成apk
- javascript二叉查找树
- button防止被重复点击的相关方法(详细版)
- iOS-蚂蚁金服面试题(一)
- QTP简明教程
- 初入Qt巨坑第二天
- 使用Android Studio生成类库
- 模拟Vue之数据驱动2
- UNIX环境高级编程--标准I/O
- Centos安装Docker
- 浅谈redis应用场景
- 2017年这10场大数据会议最值得参加!
- python基于selenium+PhantomJS实现用提交表单,并点击按钮功能,获取返回的页面源码和ur等信息l。
- SICP 2.2.3 对一种数据处理过程的抽象
- Java垃圾回收机制