"最低要求SDK"、"目标SDK"和"编译版本"应该设置为什么值?(涉及IT技术)

11
我知道这个问题已经有很多解答了,我也看过这个网页。然而,我仍然对具体的选择感到困惑。
如果我有一部运行Android 2.3.6的手机。
我知道Minimum Required SDK应该是我的应用程序支持的Android版本中最低的版本。例如,我会选择Android 2.2或低于此值的版本,如Android 1.5
混淆的点在于Target SDKCompile with
我安装了以下内容:(SDK管理器中没有Android 2.3.6可用)
Android 4.2.2(API 17)
Android 3.0(API 11)
Android 2.3.3(API 10)
Android 2.2(API 8) Target SDK应该设置为最大值,即Android 4.2.2,不考虑我的手机使用的是什么版本(Android 2.3.6)吗?
选择Android 4.2.2将覆盖所有低于它的手机,对吗?
还是应该将其设置为与我的手机最接近的可用值?在这里,可用的版本是Android 2.3.3?但不能超过我的手机Android 2.3.6Compile with必须设置为最大的Android 4.2.2或其他值吗?
2个回答

6
目标SDK应该设置为最高的Android 4.2.2,不考虑我的手机使用的是Android 2.3.6吗?这取决于您,但通常建议将最新的sdk作为目标。它只是说应用程序将在Min-SDK和Target-SDK之间工作,但仅针对Target-SDK进行测试,因此如果有任何兼容设置,系统必须处理它。选择Android 4.2.2会覆盖所有低于它的手机吗?是这样吗?您的应用程序始终涵盖从Min-SDK到Max-SDK。如果Min-SDK是1且未设置Max-SDk,则您的应用程序支持所有API。它是否应该设置为与我的手机相同/最近的值。这里可用的是Android 2.3.3吗?但不能超过我的手机Android 2.3.6吗?必须使用最新的SDK。编译必须设置为最高的Android 4.2.2还是什么?这只是您选择使用哪个SDK编译应用程序。但最好使用Target-SDK,这反过来又是最新的。

3
“你的应用程序仅覆盖了从Min-SDK到Target-SDK”的说法是不准确的。 应用程序可以安装并在运行高于目标SDK的API级别的设备上运行。 您只是无法获得来自更高API级别的所有好处,并且某些向后兼容模式可能适用。 - laalto
你能详细解释一下“Compile with”吗? - mavis

0

我一直将Compile with设置为与Target SDK相同。

Target应该是您已经测试和设计您的应用程序来处理的内容。随着Android的发展,API行为可能会发生变化,例如默认AsyncTask的串行/并行/串行性质(请参见:同时运行多个AsyncTasks-不可能吗?http://commonsware.com/blog/2012/04/20/asynctask-threading-regression-confirmed.html),这取决于您的应用程序的目标API和设备API。对于我们来说,那是有趣的时光。

此外,各种API也会被弃用,因此使用最新的API可以强制您仅使用当前维护的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接