android studio升级到3.0之后的一些配置变化

Android Studio 3.0 升级 配置修改详解 更新完Android Stuido 3.0 稳定版之后,打开项目会收到如下提醒 谷歌强烈建议我们更新Android Gradle Plugin 3.0 和 Gradle 4.1,所以我就习惯性的点击了Update。   结果……导致了一系列的修改。 1、Flavor Dimensions 配置 项目中用了多渠道,3.0之前配置多渠道:productFlavors配置 阅读详情

        上周android 3.0稳定版终于面世,自己也是更新了一波。但是这次的版本算是一个大版本了,直接从2.3.3到了3.0。所以跟之前升级相比也有很多配置方面的变化,现在记录如下。

        1、升级完成之后首先是会提示升级gradle插件到3.0.0,而gradle版本升级到4.1,如下图所示:

 直接点击update就好了,其实这里修改的是两个地方,一个是project目录下的gradle文件(注意不是module目录下的),另外一个是项目gradle目录下的gradle-wrapper.properties文件里面的gradle版本;

       2、上面的升级完之后,不做其他修改的话,估计会遇到下面的错误       

意思就是之前module里面gradle文件里面配置的sdk build tools被忽略了,因为它低于gradle插件3.0.0版本要求的最低版本26.0.2,所以必须升级了,点击update就好

       3、上面升级完之后,估计会遇到下面的问题:

这里的意思就是我们平时不都是会打渠道吗?就是那个productFlavors,然后自己配置一些渠道,例如productFlavors里面直接写录入yingyongbao{}这样就代表这个打出来的包是应用宝渠道的包,但是现在人家要求所有的具体渠道必须属于一个命名的flavor dimension,这个属性干什么用的呢?正常情况下就是直接一个yingyongbao{}就代表应用宝渠道,但是如果想要在应用宝渠道下面再分渠道,但是又不想要在productFlavors里面增加很多个不同渠道的跟yingyongbao{}同级的配置,那该怎么办?这个时候这个dimension属性就派上用场了。好比我应用宝和其他所有的渠道都需要一个付费版的和一个免费版的,但是没有必要给所有渠道在增加一个属性吧,可以如下酱紫写:

然后我们尝试进行打包,然后打出来的包的确是如下所示的四个包:


没错,升级到android studio 3.0之后,打出来的包是一个文件夹,然后文件夹里面的才是具体的跟之前的一样子的渠道包和一个output.json,这个json文件是这个包的一些配置信息,例如包名呀之类的。但是其实我还是有个疑问,虽然前两个是xiaomiFree和xiaomiPay,但是根据我从包里面获取到的渠道是跟xiaomi这个字眼没关系的,因为flavorDimensions的后面的属性的优先级是从前往后的。不知道为啥要酱紫搞。其实要是用不到酱紫的功能,直接在外面写一个flavorDimensions "default",里面不用任何配置就好了。

        4、说的第四个不同就是打出来的包是一个文件夹了,如果之前有同学在打包时候给包重命名可能会遇到如下的错误了:

就是说outputFile这个属性是只读的,我们不能修改他,所以需要将重命名apk名字的代码改为output.outputFileName就好了,想想其实也是,我们没有必要去修改文件,只需要该文件的名字就好了。这样改后还有一个好处,就是可以直接run了,且不用注释掉打包时候重命名的方法调用了:

applicationVariants.all {
                variant -> generateAppName(variant)
            }

之前的话,直接run会因为时间差导致安装apk,失败了,会提示如下错误:

有同学可能会问,那把原来项目的outputFile属性改为outputFileName不就好了嘛,改过后会提示没有outputFileName这个属性,那是因为gradle插件低于3.0.0,且那时候没有outputFileName属性。

       以上就是本次内容,如果不对欢迎批评指正。

关于Android Studio配置Gradle生成不同的版本不同的渠道包 自己以前很懒,不想写博客,写了也只是对一些Bug的记录:只是问题简单的描述,以及在哪里搜索的答案,最后贴上解决办法完事;没有考虑别人是否能够读懂或者看懂。最近发生一件事情,让我对写博客,有了改观:自己查看自己的博客,还需要很久才能搞懂怎么样解决问题。因此,决定:以后写博客,做到简单易懂,血的教训。。。 好了,不再废话进入正题: 最近公司的项目需要根据不同的公司生成不成的应用(包名,应用名... 阅读详情

相关推荐

Android Studio2.2.直接导入config升级到3.0的

安装包的下载http://www.android-studio.org/开始安装升级说明一下子: 我一直在使用的是AS2.2.2版本,工作的需要,我想在电脑是有2.2.2的版本和3.0的版本.注意的是下面的那个选项就是选中会卸载掉已经安装的旧的版本,我们不要选择,后期会有AS的安装的目录我们选择我们单独的位置来区别,之后的就是next点击.点击安转完成后开始启动:我们看看我们的安转目录:我们在看看我

kunkun5love的博客 2632

Android Studio更新成2024.1.2版本后旧项目Gradle配置问题

这个版本的studio和之前版本的studio在gradle配置上差别很大,导致我搞了好久,说久是因为我看见就不想弄,今天抽时间弄了一下,在不牵扯自己导入的第三方依赖的情况下,还是很好配置的,简单的说就是你用新版studio新建一个项目,把旧项目的项目的gradle和APP gradle,改成新建项目的项目的gradle和新建项目的APP gradle。我改完这些,我的项目没有编译错误,但是不能运行,现在就剩下第三方文件了,暂时我还没搞定,就写到这里吧。

yijiaodingqiankun的博客 1184

TSmaster CANFD配置避坑指南:为什么你的PCAN盒不支持最新版本?

本文针对TSmaster配置PCAN硬件进行CANFD通信时的常见问题,提供了详细的避坑指南。重点解析了CANFD配置中TSEG1等关键参数的理解误区,并深入探讨了TSmaster新版本与PCAN硬件驱动之间的兼容性变化,帮助工程师快速定位并解决连接失败或无法发送CANFD报文等问题。

alpha的博客 541

Android Studio插件版本与Gradle 版本、kotlin版本等对应关系

Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。 虽然 Android 插件通常会与 Android Studio 的更新步调保持一致,但插件(以及 Gradle 系统的其余部分)可独立于 Android Studio 运行并单独更新。

fumeidonga的博客 1万+

人工智能,不止于模型:四步实现完整工作流

工程师越来越多地致力于将人工智能 (AI) 集成到自己的项目和应用中,同时不断着力提升自己的 AI 技能。面对 AI 问题,工程师首先要了解什么是 AI,以及如何将它纳入当前工作流,这看似简单,实则未必容易。在 Google 中搜索“什么是 AI?”会得到数百万条结果,包括不同程度的技术和相关信息。那么,对工程师而言,AI 意味着什么?人们对 AI 的关注主要集中在 AI 模型上,受此影响,工程师会迅速投入 AI 建模的研究。

r1832644594的博客 2810

GD32单片机开发环境搭建(Keil5安装)

1.安装MDK5 由于GD32 Keil 版本例程的工程是基于Keil MDK-ARM 5.25 uVision5 创建的,所以我在此也安装MDK5.25版本。 下载链接:https://pan.baidu.com/s/1E4tcDQvsVl0xezU3pEyJTA 提取码:s1fr 其他版本下载链接:https://cloud.tencent.com/developer/article/1605195 选择安装路径(不要装到中文路径下,避免不必要的麻烦): 用户信息随便...

fangye945a的博客 3万+

解决问题:Android Studio打包apk后突然变大很多

对升级Android Studio前后打包的Apk解压缩后进行了比较,发现是apk文件内的lib文件夹的尺寸差异,即那些so大小差异,用解压缩软件看,发现so统统没有压缩。脑海里瞬间以为是so变成16k page size了,所以不能压缩,后来一想不对:这些so肯定是解压后被调用的,所以可以压缩。此前,为了适配Android 15的16k内存分页而升级Android Studio至Koala,详见。验证:这样配置manifest后,运行到Android 15模拟器里,用到so的地方均正常。

piggy514的博客 1937

Veeam Backup 13 通过UI界面高效备份VMware ESXi虚拟机的完整指南

本文提供了一份使用Veeam Backup 13图形化界面高效备份VMware ESXi虚拟机的完整指南。内容涵盖从环境准备、添加vCenter/ESXi主机、配置备份存储库,到创建备份任务、设置保留策略与计划,以及执行备份和验证成功的关键步骤。通过直观的UI操作,管理员可以轻松实现虚拟机数据的可靠保护与快速恢复。

weixin_29322553的博客 436

Android studio Chipmunk 新的gradle规则变更

Android studio Chipmunk 新的gradle规则变更

雪狼人的宿命 1359

基于Simulink的双向DC-DC变换器在储能系统中的应用仿真

摘要:本文详细介绍了基于Simulink的双向DC-DC变换器在光伏储能系统中的仿真实现。主要内容包括:1)采用非隔离型双向Buck-Boost拓扑作为储能系统枢纽;2)针对750V直流微网中的20kWh锂电池接口场景进行建模;3)详细阐述双闭环控制器设计(电压外环+电流内环)、工作模式判断逻辑等关键步骤;4)通过仿真验证了系统在功率阶跃和模式切换下的性能。文章提供了完整的建模流程和控制方法,为储能系统接口设计提供了实用参考。

amy_mhd的博客 178

安卓中蓝牙免提HFP的一些分析

最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。 文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先...

底层码农 771

android studio 升级3.0之后打包输出apk文件的方法变更

android studio3.0升级之后,打完包直接输出apk包出现了变化。需要在build.gradle里面进行修改。然后再打包。 2.3.3的studio 打包输出apk为以下设置: // apk命名 android.applicationVariants.all { variant -> variant.outputs.each { output -> ...

lambert 3616

无线通信基础:调制与解调技术_(42).7.3.2多进制频移键控解调(MFSK解调)

MFSK解调是一种通过频谱分析和频率检测来恢复数字信号的技术。本文介绍了MFSK解调的基本原理,包括信号接收、频谱分析、频率检测和符号判决。在实际应用中,噪声会对解调性能产生影响,因此引入了信噪比优化和多步判决方法来提高解调的准确性。通过性能评估,可以更好地理解MFSK解调在不同噪声环境下的表现。这些方法和技术为MFSK在实际通信系统中的应用提供了理论和实践基础。

2401_87715305的博客 1316

升级Android Studio 3.0 遇到的问题

转载http://blog.csdn.net/u011315960/article/details/78365629 前言一大早还在北京拥挤的地铁里,我的CTO闫哥在微信里给我发了一条信息:Android Studio 3.0发布了。为什么会这么关注Android Studio 3.0

JOE 1034

化工热力学软件:Aspen Plus二次开发_(9).过程控制与动态模拟v1

Aspen Plus 提供了丰富的过程控制工具和方法,可以用于静态和动态过程的模拟和控制策略的开发。通过控制回路设计、动态模拟、优化工具和数据交换接口,用户可以设计和优化各种复杂的控制策略,提高化工生产的稳定性和效率。此外,结合外部软件(如MATLAB、Simulink、LabVIEW等),可以实现更高级的控制策略,如自适应控制和模型预测控制,进一步提升过程控制的精度和灵活性。希望本文的内容能帮助用户更好地理解和应用Aspen Plus中的过程控制功能。

kkchenjj的博客 405

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError

Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError 这个问题折腾了2个小时,最后解决了,Stack Overflow 上也有一次类似的问题,但是没有人提供解答。这个错误的意思是运行时没有找到类,所以一般是你编译通过了但是无法运行。写完这个就去解答,希望更多的人看到并避免,节省大家...

weixin_34194702的博客 163

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Glide 升级到 4.x 所遇问题

环境:Android studio 3.4 Gradle 5.1.1 最近有人反馈项目glide升级到3.4报错,现排查问题如下: 引入glide最新插件: classpath 'com.android.tools.build:gradle:3.4.0' 提示报错: 因为之前项目中引入的是基于glide的三方包:jp.wasabeef:glide-transformations:2.0.1 t...

jingbin_的博客 4476

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

build插件升级到gradle3.0+ 多渠道打包applicationVariants、compile语法更换

随着AndroidStudio升级到3.0+,自带的build插件也从2.x升级到3.x时代,有升级就会有调整,下面把遇到的语法改变列出: 针对依赖资源库: compile =》 implementation dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.an...

huch的博客 1万+

android gradle tools 3.X 中依赖,implement、api 和compile区别

前言2017 年google 后,Android studio 版本更新至3.0,更新中,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle 的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kot...

jieyuhua998的博客 308

解决Android studio无法引入GitHub三方库

使用Android studio 新建项目; 在引入GitHub三方库时报错: Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. 解决方法: settings.gradle默认是这样的 dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REP

小小小石头的专栏 3825

AndroidStudio升级3.x之后太坑了

由于手欠升级了As 3.0以上的版本,16年写的项目在打开,,彻底崩溃了,浪费了一天时间来整理这些烂摊子。 过程当中遇到的问题主要记录一下 The specified Android SDK Build Tools version (25.0.1) is ignored, as it is below the minimum supported version (26.0.2) for Andro...

qq_26843455的博客 4125

android gradle tools 3.X 中依赖,implement、api 指令

前言 2017 年google 后,Android studio 版本更新至3.0,更新中,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle 的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,K

知行合一 364

implementation、api、compileOnly区别详解

Android Studio3.0正式版已经出来了,相比2.x的版本,Gradle版本也升级为了3.x,编译速度提高了不少。 在gadle3.0之后,默认的依赖由之前的compile更改为implementation了。 如果我们依然使用compile的话会有如下提示 Configuration ‘compile’ is obsolete and has been replaced with ‘...

liangtianmeng的专栏 821

androidTestImplementation,testImplementation,implementation区别

android studio升级至3.0之后,依赖方式发生了变化。相关的变化可参照博文3.0依赖方式转变。还是回到本文话题。implementation其实就是之前的compile。在使用cucumber的时时候,发现@when,@and不被识别,但确认已经添加了dependency。仔细检查发现,cucumber被用在了test目录下,而dependency的引用方式却为androidTestI...

breakloop 1万+

Android studio 3.2 升级详解及Gradle配置

一直在使用Android studio 2.3.1版本,因为工作开发使用的都是这个版本,所以在经历了N次提示更新后,依旧还是没有升级,直到今天终于忍不住了,因为Android Studio 3.2版本在这个月发布了,增加了很多新特性,具体参见官方介绍吧: https://android-developers.googleblog.com/2018/09/android-studio-32.html...

Markus 2万+
上一篇: 关于推送push中notification的一点问题
下一篇: python之折线图绘制体验
和小胖
博客等级 码龄12年 8粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值