配置debug和release不同依赖

一、几种依赖方式

  • Compile 默认的依赖方式,任何情况下都会依赖。
  • Provided 只提供编译时依赖,打包时不会添加进去。
  • Apk 只在打包Apk包时依赖,这个应该是比较少用到的。
  • TestCompile 只在测试时依赖,对应androidTestCompile
  • DebugCompile 只在Debug构建时依赖
  • ReleaseCompile 只在Release构建时依赖

注意:关于测试依赖,在项目中有androidTestCompile和testCompile,如:

 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
  • androidTestCompile是用来测试api的,对应于目录是src/androidTest,运行在android设备或者虚拟机上.
  • testCompile 是用来单元测试的,对应于目录的src/test,允许一般的java JVM,可以坐脱离设备的测试.

使用:

可以直接在Project Structure中设定更改

依赖设定

二、项目中可能的问题

1、普通依赖时差异化构建的错误

例如:
在项目中引用了debugCompile 'com.facebook.stetho:stetho:1.5.0'
然后进行了初始化:

stetho初始化

这个时候直接运行是ok的,因为默认是debug模式,但是如果此时打release包的时候会出现如下错误:
错误

这是因为,stetho的引用为debugCompile,也就是说,这个第三方只有在debug的时候才会依赖,release包的时候不会被依赖,但是在TestApplication中又执行了初始化代码,所以会出现找不到类的错误,下面给出一种解决办法:

错误解决办法

也就是在src的目录下建立debug和release目录,并且两者的包结构要完全一致(其实main、test等包结构也要一致的)。这样的话看起来怪怪的,可以将debug和release不同的初始化放在各自下面,然后将TestApplication放在main下面并进行调用:

改造

debug下的SdkManager代码:

public class SdkManager {
    public static void init(Context context) {
        Stetho.initializeWithDefaults(context);
    }
}

release下的SdkManager代码:

public class SdkManager {
    public static void init(Context context) {
    }
}

TestApplication中的调用:

public class TestApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SdkManager.init(this);
    }
}

需要注意的是:SdkManager在debug和release中被调用的方法和参数是需要一致的,而且release下的代码的import需要自己手动添加。

2、module依赖时差异化构建的错误

例如:
主项目中引用了一个library:

compile project(':testLibrary')

在testLibrary中又引用了:

debugCompile 'com.facebook.stetho:stetho:1.5.0'

此时如果在主项目中的进行初始化并且进行debug运行的时候会发现如下错误:

错误

这是主工程依赖子module时默认依赖的是子module的release版本,那么library中的stetho引用为debugCompile,所以运行的时候就找不到类了,哪怕是主项目中的依赖改为:

debugCompile project(':testLibrary')

debug运行的时候也是会出现找不到类的错误

此时的解决办法是:让主工程在debug版本下依赖module的debug版本,在release下依赖module的release版本即可。

第一步:在module的build.gradle文件中,增加 publishNonDefault true ,让module不再按默认只构建release版本

android {
     ...
    publishNonDefault true
}
dependencies {
    ...
    debugCompile 'com.facebook.stetho:stetho:1.5.0'
}

第二步:
在主工程的build.gradle中,增加如下代码:

String test;
android {
    ...
    buildTypes {
        release {
            ...
            test = "release"
        }
        debug{
            test = "debug"
        }
    }
}
dependencies {
    ...
    compile project(path:':testLibrary',configuration:test)
}

这样在debug下就能运行了。但是这个时候发现打release包的时候stetho还是被打包进去了,有知道的请告知下。

END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容