美文网首页Android技术知识Android知识手机移动程序开发
Android根据release和debug模式调用不同的类

Android根据release和debug模式调用不同的类

作者: LeoYe168 | 来源:发表于2017-01-06 18:49 被阅读1813次

    前言

    一般情况下我们apk有debug和release两种包,这是因为buildTypes有debug release两种类型,gradle还提供了多渠道打包区别打不同功能apk版本,在productFlavors中设置,我们项目中三个版本,因此道理上讲我们可以打出6种类型的apk。在AS左下角的buil variant工具栏可以查看。

    需求

    根据productFlavors的不同,不同版本可以配置各种的appname packname applocationid 等等,这些配置都是在gradle文件中配置即可,那是否能实现不同版本调用不同的java代码么。答案也是肯定的,同理debug和release版本也可以实现编译不同的代码。

    原理

    gradle在编译之前,会对工程进行合并(merge),其中Java代码的merge方式是目录整合。具体是把main目录的Java文件 + 当前buildType目录的Java文件 + 当前productFlavor目录的文件直接整合到同一个目录。

    实现


    在src目录下新建main的同级目录debug和release,分别在里建java目录,java目录放各种不同的java代码。

    注意

    • 编译会经常会出现报类名重复错误,release目录下的java目录未变色。此时只需注意原理中所讲的,比如打包是debug包会首先讲debug和main目录下的代码merge再编译,因此当然debug和main下不能存在相同的类名。release包也同理
    • debug和release下代码报名路径必须一致,比如main中调用了MySettingActivity.java这个类,impor导包时如果报名不一致debug包可以导,release包必然倒不了啦。

    总结

    怕出锅,就老实切换build variant模式,看编译是否通过。。因为默认都是debug模式的,一般往往release模式需要特别调。

    相关文章

      网友评论

        本文标题:Android根据release和debug模式调用不同的类

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