Android一套代码打不同的包工程配置详解_上-gradle基本知识介绍

有这样一个场景:一个项目正在开发,后来领导说有另外一个项目跟当前项目很像,只要在上面改些东西就可以了,然后你一听立刻把代码复制一份在上面改,改完以后领导又说要加一些功能,两个项目都要加,累死累活做完以后领导又说,后面可能还会有第三个项目,只需要在上面改点东西就可以了, 并且后面加功能这三个项目都要,是不是很崩溃?这该怎么办?有没有一种简单的方法只需要配置一下就可以了? 答案是有的,请看:

一、gradle配置要求

	ownCompile project(path: '':carddesk_module'', configuration: ''ownRelease'')
	voresCompile project(path: '':carddesk_module'', configuration: ''voresRelease'')

      当我们使用compile来引用包,或者如上使用它的变种来引用包的时候,gradle会有一些版本限制,否则就会报错:

(1)首先找到gradle/wrapper/gradle-wrapper.properties,双击打开,替换gradle版本为:  distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

(2)打开根目录下的build.gradle文件,把没有翻墙的话把google()注释掉,否则会报错,把classpath的3.2.0版本换成2.3.3版本 如下:

buildscript {
    
    repositories {
//        google()
        jcenter()
    }
    dependencies {
//        classpath ''com.android.tools.build:gradle:3.2.0''
        classpath ''com.android.tools.build:gradle:2.3.3''

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
//        google()
        jcenter()
    }
}

(3)gradle高版本创建的工程不需要显示的指定buildToolsVersion "25.0.3",现在我们把它降低了, 所以要手动把它加上,否则会报没有指定buildToolsVersion的错误。

二、配置工程签名文件

1、创建签名文件,然后把签名文件放到工程中的app目录下:

2、然后在android {}下面添加如下代码,注意顺序,脚本代码从上至下执行,如果signingConfigs和buildTypes写反了则buildTypes里面debug中的sigingConfigs.release中的release就找不到了,添加好以后同步gradle

signingConfigs {
    release {
        keyAlias ''dongjie''         // key别名
        keyPassword ''dongjie''      // 别名密码
        storeFile file(''proj_aos_key.jks'')         // 签名文件路径
        storePassword ''dongjie''                   // 签名文件密码
    }
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
        debuggable true
        signingConfig signingConfigs.release
    }
    debug {
        signingConfig signingConfigs.release
    }
}

如下图在工程中Signing里面就可以看见配置信息了

3、上面实现以后,我们就可以来回切换debug和release了 

如果工程中有分享微信的功能,那这时候运行安装的就是签名过得,不必刻意去签名来测试分享微信功能。 

但是注意一个问题,debug和release来回切的时候有可能release会报错,这样设置一下就好了:

三、multiDexEnable true 和 平台支持

1、随着公司业务不断的变多, 工程中的代码会越来越多,到一定程度的时候运行代码直接崩溃, 查原因发现是某个类找不到。在android5.0之前,每一个android应用中只会含有一个dex文件,但是因为Android系统本身的BUG,使得这个dex的方法数量被限制在65535之内,这就是著名的”64K(641024)事件。 如何解决呢? 请看下图,只需要加一行代码就可以了突破64k限制了, 由于篇幅原因,这里只给解决方案

 

2、经常会碰到这样一种情况,我们每次引用的第三方库里面的so包含很多个平台,armeabi、x86、mips、armeabi-v7a等,这样打包后发现体积特别大,有没有一种办法能让包小一点呢? 请看上图, 有一种方式可以设置我们支持的平台,其他的会直接被忽略, 这样就减小了包的体积,大多数手机现在是arm架构,模拟器是x86架构,所以只需要支持这两个就可以了。

四、一些设置

1、lintOptions

lintOptions {
    checkReleaseBuilds false     // true 如果有崩溃停止构建, false不停止
    abortOnError false           // true错误发生停止gradle构建, false错误发生不停止gradle构建
}

将上面两个选项设置为false, 这两个选项作用是在打包的时候不会因为一些莫名其妙的问题中断gradle,导致包打不出来。

如果想查看更多的lintOptions配置,请看:https://blog.csdn.net/berber78/article/details/60766091

2、dex方法超过64k限制和gradle编译oom问题解决:

dexOptions {
    javaMaxHeapSize "4g"
    jumboMode = true
}

3、引用aar文件

android {
    repositories {
        flatDir {    // 指定aar路径
            dirs ''libs''
        }
    }
}

dependencies {
    compile(name: ''lyx-library-1.0.3'', ext: ''aar'')
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值