Learn more at https://d.android.com

由于我把主程序的build.gradle中的gradle版本改成了这个,具体指定哪个版本我也不知道,于是就写了个3.0+
?dependencies?{
????????classpath?‘com.android.tools.build:gradle:3.0+‘?
}
然后再次编译,又发现了毒。
提示:Error:All flavors must now belong to a named flavor dimension.Learn?more?at?https://d.android.com/r/tools/flavorDimensions-missing-error-message.html?
这个一个错误,意思是:所有的flavors都必须属于同一个风格。
=。=懵逼
去***看了它提供的地址才知道:
?Plugin?3.0.0?includes?a?new?dependency?mechanism?that?automatically?matches?variants?when?consuming?a?library.?This?means?an?app‘s?debug?variant?automatically?consumes?a?library‘s?debug?variant,?and?so?on.?It?also?works?when?using?flavors—an?app‘s?redDebug?variant?will?consume?a?library‘s?redDebug?variant.?To?make?this?work,?the?plugin?now?requires?that?all?flavors?belong?to?a?named?flavor?dimension?—even?if?you?intend?to?use?only?a?single?dimension.?Otherwise,?you?will?get?the?following?build?error:
Error:All flavors must now belong to a named flavor dimension.
The flavor ‘flavor_name‘ is not assigned to a flavor dimension.

?To?resolve?this?error,?assign?each?flavor?to?a?named?dimension,?as?shown?in?the?sample?below.?Because?dependency?matching?is?now?taken?care?of?by?the?plugin,?you?should?name?your?flavor?dimensions?carefully.?For?example,?if?all?your?app?and?library?modules?use?the?foo?dimension,?you‘ll?have?less?control?over?which?flavors?are?matched?by?the?plugin.?
// Specifies a flavor dimension.
flavorDimensions "color"

productFlavors {
red {
// Assigns this product flavor to the ‘color‘ flavor dimension.
// This step is optional if you are using only one dimension.
dimension "color"
...
}

blue {
  dimension "color"
  ...
}

}

大致是说,Plugin?3.0.0之后有一种自动匹配消耗库的机制,便于debug variant?自动消耗一个库,然后就是必须要所有的flavor 都属于同一个维度。
为了避免flavor 不同产生误差的问题,应该在所有的库模块都使用同一个foo尺寸。
= 。=还是懵逼。说一堆依然不是很理解。
但是我们从中已经知道解决方案了:
在主app的build.gradle里面的
?defaultConfig {
?targetSdkVersion:
minSdkVersion :

versionCode:
?versionName :

//版本名后面添加一句话,意思就是flavor?dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}

就直接解决这个问题。然后app 就可以happy的运行起来了

原文地址:https://blog.51cto.com/11585002/2450908

时间: 2024-08-04 20:47:16

Learn more at https://d.android.com的相关文章

nginx配置https及Android客户端访问自签名证书

前一篇随笔通过keytool生成keystore并为tomcat配置https,这篇随笔记录如何给nginx配置https.如果nginx已配置https,则tomcat就不需要再配置https了.通过以下三步生成自签名证书# 生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输,# 输入的话,以后每次使用这个key的时候都要输入密码,安全起见,还是应该有一个密码保护> openssl genrsa -des3 -out selfsign.key 4096 # 使用

记https在Android浏览器无法访问

问题描述 M站静态资源单独配置的https域名,在Android原生浏览器里面打开之后提示证书不安全,在chrome.UC之类的浏览器之下,静态资源都能够正常访问 问题原因 CA证书链不完整 https检测工具 https://myssl.com/ 解决方案 我是阿里云申请的证书,下载apache版本的证书之后,有key.public.crt.chain.crt这三个文件.配置证书时,将chain.crt文件追加到public.crt文件,然后配置https crt文件时,用追加的之后的publ

gradle tool升级到3.0注意事项

Gradle版本升级 其实当AS升级到3.0之后,Gradle Plugin和Gradle不升级也是可以继续使用的,但很多新的特性如:Java8支持.新的依赖匹配机制.AAPT2等新功能都无法正常使用. Gradle Plugin升级到3.0.0及以上,修改project/build.gradle文件: 修改global.gradle(自定义lib管理的gradle) tools = [ gradleTools : 'com.android.tools.build:gradle:3.0.1' ]

Android安全之Https中间人攻击漏洞

Android安全之Https中间人攻击漏洞 Android安全 Https 攻击漏洞 应用加固 御安全 MITM 0X01 概述   HTTPS,是一种网络安全传输协议,利用SSL/TLS来对数据包进行加密,以提供对网络服务器的身份认证,保护交换数据的隐私与完整性. 中间人攻击,Man-in-the-middle attack,缩写:MITM,是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全

Android 使用 Https问题解决(SSLHandshakeException)

title date categories tags Android 5.0以下TLS1.x SSLHandshakeException 2016-11-30 12:17:02 -0800 Android Android TLSv1.x 最近把App的所有请求都换成Https,在测试的时候,部分手机发现请求失败,失败的异常信息如下: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL hands

转 Android HTTPS详解

目录(?)[-] 前言 HTTPS原理 SSLTLS协议作用 基本的运行过程 握手阶段的详细过程 客户端发出请求ClientHello 服务器回应ServerHello 客户端回应 服务器的最后回应 握手结束 服务器基于Nginx搭建HTTPS虚拟站点 Android实现HTTPS通信 使用自定义证书并忽略验证的HTTPS连接方式 缺陷 使用自定义证书建立HTTPS连接 生成KeyStore 使用自定义KeyStore实现连接 参考文献 前言 最近有一个跟HTTPS相关的问题需要解决,因此花时间

HTTPS理论基础及其在Android中的最佳实践

我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险.为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全. 密码学基础 在正式讲解HTTPS协议之前,我们首先要知道一些密码学的知识. 明文: 明文指的是未被加密过的原始数据. 密文:明文被某种加密算法加密之后,会变成密文,从

Android HTTPS详解

前言 最近有一个跟HTTPS相关的问题需要解决,因此花时间学习了一下Android平台HTTPS的使用,同时也看了一些HTTPS的原理,这里分享一下学习心得. HTTPS原理 HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.所以,研究HTTPS协议原理,最终就是研

Android 7.0解决抓取不到https包的问题

问题:Android7.0系统,使用fiddler不能抓取https包 解决方法:  1.在源码res目录下新建xml目录,增加network_security_config.xml文件 (工程名/app/src/main/res/xml/network_security_config.xml) network_security_config.xml文件内容为: <network-security-config> <base-config cleartextTrafficPermitte