我已经看了看文档与摇篮建设,但我仍然不知道什么之间的差异compileSdkVersion,并targetSdkVersion为.
它只是说:
该
compileSdkVersion属性指定编译目标.
那么,"汇编目标"是什么?
我看到两种可能的解释方式:
compileSdkVersion在构建应用程序所使用的编译器的版本,同时targetSdkVersion是"API级别的应用程序的目标".(如果是这种情况,我认为compileSdkVersion必须大于或等于targetSdkVersion?我看到之前已经问过这个问题,但是一个答案只引用了文档,这对我来说是不清楚的.
我想将Android Studio中的最低SDK版本从API 12更改为API 14.我尝试在清单文件中更改它,即
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
Run Code Online (Sandbox Code Playgroud)
并重建项目,但我仍然得到Android Studio IDE抛出一些错误.我认为我必须在"项目属性"或类似的东西中设置min SDK,以便IDE识别出更改,但我无法在Android Studio中找到这样做的地方.
我正在尝试将Android异步Http客户端的依赖项添加到我的项目中.所以项目中有两个build.gradle文件.

根据我的理解,有不同类型的依赖:
这个问题是关于buildScript的依赖关系的存储库,解释一下前两种类型.
另外build.gradle(Project:My-app)说
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Run Code Online (Sandbox Code Playgroud)
所以我想Android Asynchronous Http Client的依赖代码应该在build.gradle(Module:app)中添加.
如果有人能够清楚地了解所有这些以便更好地理解,那就太棒了.
我创建了一个新的 Flutter 项目,文件中的 minSdkVersion 如下所示app/build.gradle:
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.projectname"
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
Run Code Online (Sandbox Code Playgroud)
set的值在哪里flutter.minSdkVersion?
请注意,以前,该配置值如下所示:
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.projectname"
minSdkVersion 19 //*** This is the part that needs to be changed, previously was 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Run Code Online (Sandbox Code Playgroud)
另外,这是文件的内容android/local.properties:
sdk.dir=/Users/usernaem/Library/Android/sdk
flutter.sdk=/Users/username/flutter
flutter.buildMode=release
flutter.versionName=1.0.0
flutter.versionCode=1
Run Code Online (Sandbox Code Playgroud)
可以看到,flutter.minSdkVersion …
关于这一点我没说太多.那好吧.谷歌发布了一个名为Nougat(android N)的新版android.它是compileSdkVersion 24.但是,在官方文档中的构建工具页面上,没有提到它.
我想让我的应用程序100%的人使用Google Play商店,其中包括Android N用户.
tl;博士:我应该在buildToolsVersion字段中填写什么?
谢谢.
如果有人能帮助我理解有关Android Studio的一些事情,那将是最具启发性的.
所以,我已经在一个月前从Eclipse切换到Android Studio,到目前为止我只处理过迁移的应用程序.因此,我一直在修补Eclipse中常见的AndroidManifest.xml文件.
然而,最近,我开始创建一个新项目,以便从头开始学习Android Studio与Eclipse的差异.除了我遇到的非常恼人的appcompat_v7问题之外,我还对build.gradle的一些事情感到困惑.
以下是从Android Studio创建的应用中的gradle代码块:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig {
applicationId "com.myapp"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:mediarouter-v7:22.2.0'
}
Run Code Online (Sandbox Code Playgroud)
另一方面,下面是迁移的Eclipse项目的build.gradle中的代码块:
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':google-play-services_lib')
}
android {
compileSdkVersion 21
buildToolsVersion '22.0.1'
sourceSets {
main { …Run Code Online (Sandbox Code Playgroud) 关于SO的压倒性建议是编译SDK通常应该与目标SDK匹配.
同样,建议将此[compileSdk]与目标sdk版本匹配.
... CompileSDK(通常等于目标SDk版本)版本.
通常,您应该针对应用程序可以支持的最低版本的平台编译应用程序.
我总是编译sdk匹配目标sdk,但自从阅读以来我意识到我和许多SO答案都是错误的.
我的问题是,使它们匹配有什么害处,或者反过来说,拥有最低编译sdk版本的优势是什么?
我关心我应该怎么设置compileSdkVersion,minSdkVersion以及targetSdkVersion要.
我首先关心的是,如果我将现在设置compileSdkVersion为最新的23,旧设备能够运行吗?
我如何确切地知道我应该怎样做minSdkVersion以确保运行较低api或版本的手机无法访问它(我不想将最小sdk设置得太高,因为这会阻止可能运行应用程序的手机)?
我该如何设置targetSdkVersion?
我在网上搜索这个非常基本的问题,但找不到答案。Jetpack Compose 是否只能在 sdk 31 上工作,还是可以在以前的 Android 版本上工作?如果它是半向后兼容的,我如何在以前的版本中使用它?
我将 Target SDK Version 从 30 更改为 31,Min SDK Version 从 19 更改为 22。在 build.gradle 中,minSdkVersion、targetSdkVersion 和 targetSdk 相应更改,除了 minSdk 之外。现在还是19岁。
android {
compileSdk 31
defaultConfig {
applicationId "com.example.studentsacademicmanagementappsama"
minSdk 19
targetSdk 31
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
targetSdkVersion 31
minSdkVersion 22
}
}
Run Code Online (Sandbox Code Playgroud)
minSdkVersion、targetSdkVersion和minSdk、targetSdk有什么区别?
我应该将 minSdk 更改为 22 还是忽略它?
android ×10
sdk ×2
build ×1
build-tools ×1
build.gradle ×1
eclipse ×1
flutter ×1
java ×1
target-sdk ×1
xml ×1