源兼容性和目标兼容性如何影响受支持设备的数量?我所知道的我感到困惑的是总结
我所知道的
我非常熟悉在build.gradle
minSdkVersion 21
- 意味着Android设备至少需要具有Android API级别21或更高版本才能安装我的应用程序
(这应该尽可能低,以便在保留所有关键任务应用程序功能的同时达到最大用户数量)
targetSdkVersion 26
- 意味着我的应用程序是针对此版本的Android API“设计”的,以便设备知道是否在兼容模式下运行等。
(这应该尽可能高,并且开发人员可以与任何已弃用的API调用一起更新)
我感到困惑的是
但是,指定要使用的JDK版本呢?我似乎收到了相互矛盾的信息。sourceCompatibility
targetCompatibility
例如,当我在Android工作室中查看我的项目结构设置时,我似乎得到了使用Android Studio附带的默认JDK的建议 - 。version 1.8
但是,当我阅读其他在线资源时,例如以下内容:
我似乎得到的信息是,Android主要运行在Android上,并且只支持一小部分 - 这表明这是合乎逻辑的选择。version 1.7
version 1.8
version 1.7
总结
问题 1)
我应该使用哪个版本才能与新旧Android设备的最大兼容性? 或?(这重要吗?请参阅问题 #2)version 1.7
version 1.8
问题 2)
和(和 JDK 版本)是否仅在从文件到文件的编译过程中使用?因此,在生成java字节代码之后,无论版本(vs)都不再重要 - 因为字节代码将是相同的并且无论如何都可以互操作。sourceCompatibility
targetCompatibility
.java
.class
version 1.7
version 1.8
或者,这是否会一直持续到最终用户(例如,如果他们的Android手机的JVM不知道如何读取字节码,它就会爆炸)version 1.8
问题 3)
如果我在设置时设置为非常低(例如)的东西和非常高的东西(例如)会发生什么?minSdkVersion
10
sourceCompatibility
targetCompatibility
version 1.8
我可以盲目地依靠Android Studio来捕捉所有可能的不兼容性吗?例如,如果它成功构建了APK,我可以保证它会起作用吗?
或者它仍然会构建并让用户安装它,但如果用户设备JVM无法运行,它将在运行时爆炸?API >= 10
version 1.8