Android Studio 使用Gradle多渠道打包
我们都知道国内应用市场非常多,为了统计各个应用市场的 app 下载量和使用情况,我们需要多渠道的打包。如果一个一个的手动去打包岂不烦死了,要多麻烦就有多麻烦。这就要求我们学会使用 Gradle 进行多渠道打包。废话不多说了,直接进入正题吧!
第一步:配置 AndroidManifest.xml
以友盟渠道为例,渠道信息一般都是写在 AndroidManifest.xml 文件中,大约如下:
1 | <meta-data android:name="UMENG_CHANNEL" android:value="xiaomi" /> |
如果不使用多渠道打包方法,那就需要我们手动一个一个去修改 value 中的值,xiaomi,360,qq,wandoujia 等等。
使用多渠道打包的方式,就需要把上面的 value 配置成下面的方式:
1 | <meta-data |
其中${UMENG_CHANNEL_VALUE}中的值就是你在 gradle 中自定义配置的值。
理解javascript中的原型
原型 prototype 是 javascript 中极其重要的概念之一,但也是比较容易引起混淆的地方。我们需要花费一些时间和精力好好理解原型的概念,这对于我们学习 javascript 是必须的。
原型的概念
真正理解什么是原型是学习原型理论的关键。很多人在此产生了混淆,没有真正理解,自然后续疑惑更多。
首先,我们明确原型是一个对象,其次,最重要的是,
Every function has a prototype property and it contains an object
这句话就是说,每个函数都有一个属性叫做原型,这个属性指向一个对象。
也就是说,原型是函数对象的属性,不是所有对象的属性,对象经过构造函数 new 出来,那么这个 new 出来的对象的构造函数有一个属性叫原型。明确这一点很重要。
javascript中的回调函数
javascript中的的闭包
闭包可以说是 javascript 中最令人迷惑的概念了。需要我们在实践中去慢慢理解,在实际编码中,由于闭包的效率和会产生大量无法销毁的内存,所以原则是尽量少使用闭包,但是作为 javascript 中的一个特别的概念,理解闭包是很重要的。闭包像是一种突破 javascript 中作用域限制的利剑。下面我们就从 javascript 中的作用域链谈起,简单讲讲闭包的概念和理解。
作用域链
javascript 中没有大括号级的作用域,但是 javascript 中拥有函数作用域。在某函数内部定义的变量,在函数外部是不可见的。
如下面这段代码:
1 | var a = 1; |