必威体育Betway必威体育官网
当前位置:首页 > IT技术

Android 浅谈BuildTypes

时间:2019-08-19 06:42:09来源:IT技术作者:seo实验室小编阅读:89次「手机版」
 

types

简介

buildtypes 位于模块级build.gradle文件的Android{}代码块内,它是用来创建和配置构建类型的。新建一个项目在模块的buildTypes代码块中会默认生成debug和release两个版本。

代码块

这是我代码里的配置,大家可以按需所配。

/**
 *	APP模块下的build.greadle
 */
android {
		//签名配置
		signingConfigs {	        
	        release {
	            、、、、、、、、、、、、、
	        }
	
	        debug {
	            、、、、、、、、、、、、、
	        }
    	}
		//构建类型配置
		buildTypes {
			//测试版本
	        debug {
	            /* 签名类型 */
	            signingConfig signingConfigs.debug
	            /* 是否开启代码混淆,默认false */
	            MinifyEnabled false
	            /* 是否应该生成可调试的apk */
	            debuggable true
	            /* 混淆规则配置文件 */
	            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
	            /* 自定义buildType */
	            buildConfigfield 'String', 'BASE_URL', '"http://api-debug.**/"'
	        }			
	
	        //生产版本
	        release {
	            /* 签名类型 */
	            signingConfig signingConfigs.release
	            /* 是否开启代码混淆,默认false */
	            minifyEnabled false
	            /* 是否应该生成可调试的apk */
	            debuggable false
	            /* 移除无用的resource文件 */
	            shrinkresources true
	            /* 混淆规则配置文件 */
	            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
	            /* 自定义buildType */
	            buildConfigField 'String', 'BASE_URL', '"http://api-release.**/"'
	        }  
	           
			//预生产版本
	        /* 从给定的构建类型复制所有属性 */
	        pre.initwith(release)
	        pre {
	            buildConfigField "String", "BASE_URL", "http://api-pre.**/"
	            matchingFallbacks = ['pre', 'debug', 'release']
	        }
        }  

}

如何调用自定义buildType

public static final String BASE_URL = BuildConfig.BASE_URL;

打包

在控制台输入

gradle assembleDebug

gradle assemblePre

gradle assembleRelease

会生成相应版本的apk。比如控制台输入gradle assembleRelease,会生成下图apk。

在这里插入图片描述

Android Studio 3.0 和 Gradle 3.0带来的问题。

在 Gradle 2.x 时代,如果 app 中定义了 pre 类型,而子模块中没有定义,是不会报错的。但在 Gradle 3.0 下,如果你的 app 包含了新的自定义的 buildType,而依赖库中却没有相应的自定义 buildType,则编译阶段就会报错。

解决方案一:

在子模块中同样定义一个空pre{}类型

解决方案二:

matchingFallbacks,它可以指定在子模块中没找到对应的构建类型时要加载哪个类型

看如下代码:

	//预生产版本
    /* 从给定的构建类型复制所有属性 */
    pre.initWith(release)
    pre {
        buildConfigField "String", "BASE_URL", "http://api-pre.**/"
        matchingFallbacks = ['pre', 'debug', 'release']
    }

相关阅读

Android EditText的使用

在Android开发中少不了输入框的使用,今天就输入框EditText进行详细的讲解,也是为了以后开发总结经验。本人在开发过程中要求对输入

Android O Launcher3-Workspace加载

一.简述: Launcher这里我们研究主要是Launcher3(Android O平台),各个手机公司自家的ROM Launcher,咱们也看不到,但是八九不离十啦,他

Android N 新特性

2016年5月19日,谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布。2016年6月,Android N正式命名为“牛轧糖” 本届I/O开

Android Freeline加速编译App方案 使用和总结

Freeline简介 在Android Studio还没推出Instant Run功能之前,每次修改Android 工程项目时都要将整个项目重新编译一次,然后再将资

Android 8.0 SurfaceFlinger

一、SurfaceFlinger编译模块组成 码路径:frameworks/native/services/surfaceflingerSurfaceFlinger二进制分成surfaceflinger(main

分享到:

栏目导航

推荐阅读

热门阅读