最后
下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。希望能够帮助到大家提升技术
高级UI,自定义View
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。
不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
jniDebuggable true
}
}
}
构建源集
名词解析: 通常源代码是放在src/main 文件夹下的,但你想可以根据不同的构建类型(比如debug、release)区分不同的源文件,这样对应建立的文件夹就是一个不同的构建源。打个比方,debug的构建源为src/debug,release的构建源为src/release,而在src/main定义的为公共资源,最后在构建的时候会进行合并操作。
Android Studio 按逻辑关系将每个模块的源代码和资源分组为源集。模块的 main/ 源集包括其所有构建变体共用的代码和资源。其他源集目录为可选项,在您配置新的构建变体时,Android Studio 不会自动为您创建这些目录。不过,创建类似于 main/ 的源集有助于让 Gradle 只应在构建特定应用版本时使用的文件和资源井然有序:
构建源的命名规则如下:
productFlavor 表示渠道包,可以看下面的多渠道打包
-
src/main/ 此源集包括所有构建变体共用的代码和资源。
-
src// 创建此源即可加入特定构建类型专用的代码和资源。示例:src/jnidebug
-
src// 创建此源即可加入特定产品风味专用的代码和资源。比如百度渠道包:src/baidu
-
src// 创建此源集可加入特定构建变体专用的代码和资源。
例如,要生成应用的“完全调试”版本,构建系统需要合并来自以下源集的代码、设置和资源。比如:百度的开发环境包:src/baiduDebug
构建类型的依赖配置
很多时候我们会把sdk或者api接口单独做成一个库,一般会有生产环境和测试环境之分,但在依赖的时候往往我们会像这样去引用:compile project(‘:sdk’),这样依赖的环境就是release,在开发调试的时候测试环境的时候就不行了。我们得换另外一种方式:
Compile project()
这样会根据不同的构建类型去依赖不同的包,比如我们测试环境的依赖包:debugCompile project(‘:sdk’),再比如上面的jnidebug:jnidebugCompile project(‘:sdk’)
那么问题来了,我当前的构建类型怎么对应到其他的module去呢?比如你的app要依赖sdk module 的debug 环境,那么你可以这么做:
configuration:目标module的,比如你sdk 中的debug构建类型
debugCompile project(path: ‘:sdk’, configuration: ‘debug’)
综合示例
1、先看app这边的build.gradle配置:
apply plugin: ‘com.android.application’
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
debug {
applicationIdSuffix ‘.debug’
minifyEnabled false
}
// 自定义的构建类型,名字随便取,一定要有意义
raedebug {
initWith debug
applicationIdSuffix ‘.raedebug’
}
}
}
dependencies {
// 生成环境依赖
releaseCompile project(path: ‘:sdk’, configuration: ‘release’)
// 测试环境依赖
debugCompile project(path: ‘:sdk’, configuration: ‘debug’)
// 自定义构建类型依赖
raedebugCompile project(path: ‘:sdk’, configuration: ‘uutest’)
}
2、sdk module的build.gradle配置:
apply plugin: ‘com.android.library’
android {
buildTypes {
debug {
debuggable true
minifyEnabled false
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
// 注意这里,跟第一点的 raedebugCompile project的configuration要匹配。
uutest {
initWith debug
}
}
}
多渠道打包 productFlavors
先看看build.gradle配置你就懂了
android{
// 渠道包定义,默认定义的名称就是渠道名称
productFlavors {
dev {} // 测试
baidu {} // 百度手机助手
yinyongbao {} // 应用宝
m360 {} // 360手机助手
pp {} // PP助手
anzhi{} // 安智市场
xiaomi {} // 小米商店
letv {} // 乐视商店
huawei {} // 华为商店
lenovomm {} // 联想乐商店
other {} // 其他市场
official{} // 官方版本
}
// 批量渠道包值替换
productFlavors.all { flavor ->
// 友盟、极光推送渠道包, UMENG_CHANNEL 是根据你AndroidManifest.xml来配置的,请看下面。
flavor.manifestPlaceholders = [UMENG_CHANNEL: name, JPUSH_CHANNEL: name]
}
}
AndroidManifest.xml 配置:
<?xml version="1.0" encoding="utf-8"?><activity
最后
以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。
后面我就自己整理了一套资料,还别说,真香!
资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!