androidStiduo如果使用run就不需要拷贝资源,如果是build就需要拷贝资源到这两个目录


常见的sdk版本
从下面这个图可以看出,api23以上就是android6.0时代了,了解设备固件版本也非常重要,我们要把我们打包后的软件安装到不同设备上,每个设备的固件版本是一定的,如果我们的版本过高就会导致一些设备固件版本低的无法安装,或者运行时报错

compileSdkVersion, minSdkVersion 和 targetSdkVersion区别
compileSdkVersion:告诉 Gradle 用哪个 Android SDK 版本编译你的应用。使用任何新添加的 API 就需要使用对应 Level 的 Android SDK,编译的时候用,不会打包到APK中
minSdkVersion:最小的sdk,是应用可以运行的最低要求。minSdkVersion 是 各大Android应用商店用来判断用户设备是否可以安装某个应用的标志之一,这个和moudle依赖关系非常强,假如你有三个moudle,他们的minsdkversion的版本分别是【15,18,20】,那你的主moudle必须大于20
targetSdkVersion:目标的sdk,这个sdk是经过充分测试的,举个例子,你将targetSdkVersion 设置为22,涉及某个(或某几个)权限,你直接在mainfest中配置权限即可,然后在java代码中进行获取权限后的逻辑处理即可。
但如果你将targetSdkVersion 设置为23或更高,你除了在mainfest中配置权限外,还需要在java代码中判断用户是否同意权限,如果同意,执行什么业务操作;如果不同意,执行什么业务操作(一般是提示某某权限被拒后,某某功能无法正常使用).如果你只在mainfest中配置了权限,targetSdkVersion 又大于等于23,Java代码中不进行运行时权限的代码,你的应用程序就直接报错了
android6.0以前。用户必须同意所有权限才可以安装apk
android6.0以后,出了运行时权限这个功能,就是不需要一次性同意所有权限,只有在软件使用中使用到某个功能才会调出是否开启权限这个功能,用户同意后才可以进入这个功能,如果你将targetsdkversion设为23,那系统就会为你的应用开启这个运行时权限这个功能,但你必须在java代码和mainfest中都做逻辑判断
比如7.5.5.3460版本的qq就使用了运行时权限,一些权限可以安装时或者使用特定功能时决定是否允许

三者之间的大小关系如下:
//用较低的 minSdkVersion 来覆盖最大的人群,
//用最新的 SDK 设置 targetSdkVersion 和 compileVersion 来获得最好的外观和行为
minSdkVersion<=targetSdkVersion<=compileSdkVersion
上面说的三个版本都是值sdk的level,这个在sdk的目录中都是可以找到的

buildToolsVersion
CompileSdkVersion:是告诉gradle 用哪个SDK版本来编译,和运行时要求的版本号没有关系;使用任何新添加的 API 就需要使用对应 Level 的 Android SDK。
buildToolsVersion: android构建工具的版本,在SDK Manager中安装选择版本,buildToolsVersion的版本需要>=CompileSdkVersion; 高版本的build-tools 可以构建低版本编译的android程序

下载完以后,可以在我的sdk目录下就会放着对应版本的构建工具,如下:

sync报错
1:
Sync时警告:build.gradle: API 'variant.getMergeAssets()' is obsolete and has been replaced with 'variant.getMergeAssetsProvider()'.
解决方案:
改变
variant.mergeAssets.doLast {
为:
variant.mergeAssetsProvider.get().doLast {
2:
Android Studio - Could not determine Java version
error:Could not determine java version from 'JavaVersion.VERSION_1_6'
给出的解决方案:
targetCompatibility 'JavaVersion.VERSION_1_8'
sourceCompatibility 'JavaVersion.VERSION_1_8'
将gradle文件中的java8支持换种写法,去掉单引号。
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
本文深入解析Android开发中compileSdkVersion、minSdkVersion和targetSdkVersion的区别及应用,讲解如何合理设置这些版本号以确保应用兼容性和用户体验,同时介绍运行时权限的概念及其在不同SDK版本中的实现方式。
3130

被折叠的 条评论
为什么被折叠?



