我的问题出现了一个非常相似的问题this one。但是接受的答案(单一的)指向另一个问题,this one,它并没有真正回答原始问题。
Android文档声明:
Build Target指定您喜欢的Android平台 应用程序构建。
但这究竟是什么意思?
我看到它的方式,我可以拥有minSdkVersion=4
和targetSdkVersion=10
,但将构建目标设置为API级别4.会发生什么? Eclipse假设我正在为API Level 4开发,任何方法,常量或任何在4级以上API级别上定义的将无法使用。如果我尝试使用它们,应用程序将无法编译。我知道这件事。
但是让我换一种说法......
假设我只设置了minSdkVersion=4
,targetSdkVersion
未定义。我也没有使用任何方法或仅在4级以上API级别上可用的常量。在这种情况下,我选择的构建目标真的很重要吗?它会在最终的APK中产生什么影响吗?
答案 0 :(得分:6)
构建目标
构建目标是API级别Eclipse / IntelliJ /您正在使用的IDE正在构建。这个 IDE /构建系统简单地使用它来了解要提供的API 您。如果您针对API级别14构建,则应用程序仍将是 能够在API级别7上运行,只要您不调用任何API 不适用于API级别7。
我主要将构建目标设置为与android:targetSdkVersion相同, 虽然这不是必需的。
来源:http://simonvt.net/2012/02/07/what-api-level-should-i-target/
答案 1 :(得分:2)
如果您使用更高的构建目标,那么您可以使用反射编写将在早期版本上运行的代码。如果您希望仅限于API 4,则不必担心构建目标。
有关在编译较高版本时定位较早api级别的示例,您可以查看以下问题:
答案 2 :(得分:2)
The way I see it, I can have the minSdkVersion=4 and targetSdkVersion=10 but set the build target to API Level 4. What will happen? Eclipse assumes I'm developing for API Level 4 and any method, constant or whatever defined on API Levels above 4 will not be available to me. If I try to use them, the application will not compile.
当您将构建目标设置为API级别4时,Eclipse将不允许您编译任何高于此值的方法,因为它严格使用API级别4.但是,当您将构建目标设置为更高的API级别时,在您的案例API级别10中,您的APK可用于API级别4到10的手机。
第二个问题的答案回答了您的问题,即Android构建目标,minSdkVersion
和targetSdkVersion
都会影响能够使用您的应用程序的用户范围。
修改强>
由于您不打算定义targetSdkVersion
并且您没有使用任何高于API级别4的功能,因此targetSdkVersion
将与minSdkVersion
相同。无论您选择的构建目标是什么,都将自动指定。除非它低于API级别4,否则您选择的构建目标并不重要。
来自targetSdkVersion
的Android文档:
An integer designating the API Level that the application targets. If not set, the default value equals that given to minSdkVersion.
This attribute informs the system that you have tested against the target version and the system should not enable any compatibility behaviors to maintain your app's forward-compatibility with the target version. The application is still able to run on older versions (down to minSdkVersion).