Android Studio 依赖库版本应该写死
2016-11-24 本文已影响1665人
CalvinNing
** 以下内容并非本人原创,只是网友提供,转载不详,此处仅作备忘 **
dependencies {
compile 'com.google.code.gson:gson:2.+'
}
这样的写法可以保证库每次都是最新的,但也带来了不少的问题:
- 每次build时会向网络进行检查,国内访问仓库速度很慢
- 库更新后可能会更改内部逻辑而带来bug,动态版本无法通过git的diff来规避此问题
- 每个开发者都可能会得到不同的最新版本,带来潜在隐患
推荐写成固定的库版本:
dependencies {
compile 'com.google.code.gson:gson:2.2.1'
}
为何会牵扯到此问题?#####
某一天,我将compile 'com.android.support:appcompat-v7:23.0.1
改为compile 'com.android.support:appcompat-v7:23.0.2
,然后就出错了,原因是根本没有23.0.2这个版本。
- 那我们怎么知道到底有哪些版本呢?看这里Support Library Revision History
- 那要是改成24.0.0会怎么样?22.0.0又会怎么样?前提:
compileSdkVersion 23
24.0.0 报错,但是能run,app在模拟器上可以运行
22.0.0 报错,但是能run,app在模拟器上可以运行
Paste_Image.png
Paste_Image.png
** 错误提示很明确,就是告诉你这里的版本号如果和compileSdkVersion版本不一致,就可能导致bugs,这是每个程序员都不想要的,所以我们在编程的时候要保证compileSdkVersion、targetSdkVersion以及依赖库的版本一致 **
SDK说明#####
- tools目录:包括测试、调试、第三方工具。模拟器、数据管理工具等。
-
platform-tools目录:包含开发app的平台依赖的开发和调试工具。从android2.3开始划出此目录,存放公用开发工具,比如adb、sqlite3等,被划分到了这里。
包括:
adb:android调试工具
fastboot:boot工具 -
build-tools目录:编译工具目录,包含了转化为davlik虚拟机的编译工具。
包括:
1、aapt(Android Asset Packaging Tool):编译应用程序的资源文件(包括AndroidManifest.xml和你的Activities的xml文件),生成R.java文件,这样你就可以从你的java代码中引用资源。
2、aidl:把.aidl 接口转换成java接口.
3、dx:转化.class中间代码为dvlik中间代码,所有经过java编译的生成.class文件都需要此工具进行转换,最后打包进apk文件中.
4、dexdump:dump devlik中间代码 - platforms/<android-version>目录:包括android的平台。包含在android.jar库中。你必须指一个平台为你的编译目标。
- system-images目录:编译好的系统映像。模拟器可以直接加载。
- sources目录:android sdk的源码目录
- samples目录:sdk例子
Android开发环境配置(win7_64bit)
Android SDK Manager和AVD Manager使用(win7_64bit下测试)
Android关于buildToolVersion与CompileSdkVersion的区别
Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分