Android Studio导入依赖工程

以前一直纠结于android studio依赖工程application和library的问题,直到某天在AOSP想同时支持AS编译和android.mk编译以后忽然意识到了一个问题,这里作一些记录,并验证过可行。android

==============================================================================app

其实无论项目里面有什么文件,关键是咱们配置时想让项目被编译成什么包。单元测试

通常咱们常会有这么两种需求:测试

一、建立一个AS的Application A项目,而后再建立一个library的model B,估计大部分的朋友都是这么作的,这也是AS默认支持的模式,没有什么大问题,可是gradle自己会把这两个项目建立在同一个目录下,这不利于分模块维护。gradle

二、若是别人事先已经建立了一个Application项目 B,在Application项目A中想把B做为Library引入也是能够的,并且我以为这种方式更好,首先B既能够是库也能够是独立的app这样才能单独去对A作单元测试和运行到设备上测试,须要的时候又能够把B做为Librry来用,作法以下:ui

  • 首先建立好app A和app B项目,在AS中File-New-Import Model


  • 由于两个项目都是app会提示已经包含了一个app的module,那么咱们只要选中import按钮,而后将module name改成B就能够了
  • 打开B项目的build.gradle文件,按照以下修改
  • //apply plugin: 'com.android.application'
    apply plugin: 'com.android.library'
    //applicationId "com.mxnavi.mxnavibasiclib"
    以后File-Project Structure选择A项目的app选项,在Dependecies中选择Model Dependency在弹出的对话框中选择B模块便可。
注意:以前若是编译过B项目,须要把B项目下的build目录删除,不然编译出错。其次这种方式引入的项目B代码会被拷贝一份到A目录下,这样两套代码维护仍是不方便,貌似AS目前还不知道比较灵活的项目组织方案,但愿后面能改善啊。