在我的应用程序中,我想定位所有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 ...?
任何帮助表示赞赏。另外:我是初学者,因此高度重视一些背景信息的答案:)
谢谢!
答案 0 :(得分:1)
看起来不错。如ActionBarSherlock.com上的视频中所述,您希望将步骤#3设置为可用于您的ActionBarSherlock版本的最高“项目构建目标”。因此,如果你有ABS 4.1.0,你需要Platform 4.1,API 16。
您是否还将ABS项目设置为库?您的项目的依赖项应该同时具有:
答案 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,一切正常。