我要求这个来确认我对在 android 中使用 compileSdkVersion 的理解。
Android sdk 在路径 (Your sdk root)/Sdk/platforms/android-(sdk version) 下为每个版本提供了实现。因此,如果您将 compileSdkVersion 设置为 20 并且如果您在代码中添加了扩展 Activity 的类,则构建 apk apk 将使用取自(您的 sdk 根)/Sdk/platforms/android-20/andriod.jar 的 Activity.class 实现打包。
所以假设谷歌在 android-22/android.jar 的 Activity 实现中添加了一个方法说'public void f1()',我用 compileSdkVersion 22 编译我的代码,我从我的代码中调用方法 f1() 我要去在具有 android 版本 20 的设备中运行该应用程序。
问题 1:如果方法 f1() 是 java 层方法,而不是调用 C/C++ 实现的东西,它会在设备中正常运行吗?
当我在 compileSdkVersion 设置为 23 的 android studio 中打开 View.class 文件时,我可以在导入列表中看到一个项目 'android.widget.ScrollBarDrawable'。但是当我进入 (Your sdk root)/Sdk/platforms/ android-23/android.jar 我在小部件文件夹中找不到类“ScrollBarDrawable”(我遇到了许多这样的实现,这些实现在 android sdk 中不存在)
问题2:那么当apk被打包时,apk builder从哪里得到实现android.widget.ScrollBarDrawable.class?
对不起,我的英语不好 :(