为我的项目配置正确的Android-API级别

时间:2012-07-29 15:44:43

标签: android actionbarsherlock

在我的应用程序中,我想定位所有Android版本> = 8 (需要推送通知),但我很难理解我需要的API /依赖项的正确组合我的项目设置。

该项目需要使用Google API来实现基于位置的服务,我需要/想要使用ActionBarSherlock来支持ActionBar。

这个设置是否正确?


的AndroidManifest.xml:

(1)

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

<application
    android:theme="@style/Theme.Sherlock.Light" >
    ...

利布斯:

(2) 我添加了android-support-v4.jar

项目属性:

(3) 设为 Google-APIs 16

ActionBarSherlock:

(4) 我按照ActionBar-FAQ中的视频将ABS设置为库项目,并将其设置为项目proberties中的Android Level 16,并在其lib文件夹中添加了android-support-v4.jar


我知道这是一个基本问题,但我不确定我是否选择了正确的设置。我特别想知道(3)是否正确或我是否应该将整体API级别设置为8?

更新1 :我也很难理解support.jar的机制。如果我将构建目标设置为最大值 - 系统如何确保高级功能(如片段)在较低的API(如8)中工作。这是自动完成的,还是我必须手动编写支持包的代码? 更新2 关于support.jar我将不得不知道我正在使用哪些功能,并且必须针对support.jar进行编码。如果我失败并使用太高级的功能,则会抛出较低API级别的ClassCastException ...?

任何帮助表示赞赏。另外:我是初学者,因此高度重视一些背景信息的答案:)

谢谢!

3 个答案:

答案 0 :(得分:1)

看起来不错。如ActionBarSherlock.com上的视频中所述,您希望将步骤#3设置为可用于您的ActionBarSherlock版本的最高“项目构建目标”。因此,如果你有ABS 4.1.0,你需要Platform 4.1,API 16。

您是否还将ABS项目设置为库?您的项目的依赖项应该同时具有:

  • &LT;你的ABS库&gt; .jar
  • 机器人支撑-v4.jar

答案 1 :(得分:1)

您的设置是正确的。如果将其设置为版本8(3),则无法编译它。由于ActionBarSherlock至少需要api级别14。

但是以这种方式设置,需要考虑的一件事是,您使用的所有Android API都必须是API&lt; = level 8.也就是说,您无法使用API​​级别8中未包含的功能,否则应用程序将因ClassNotFoundException或MethodNotFound异常而崩溃。

对于Fragment,您应该始终选择支持库Fragment。那就是你应该导入android.support.v4.app.Fragment,而不是android.app.Fragment。

更新2:

是的,它会在运行时抛出,它会使你的应用程序无法运行。但是你可以通过检查当前的手机API级别来避免这个陷阱。

例如

if(android.os.Build.VERSION.SDK_INT >= 11) {
    // API that supported in API >= 11
}
else {
    // API that supported in API < 11
}

我实际上已经验证了这一点。您也可以尝试使用模拟器验证它,例如运行版本8模拟器和运行API版本&gt; = 8代码的代码。

答案 2 :(得分:0)

我建议你将Build SDK设置为API 15.我也使用Sherlock ActionBar,一切正常。