在Eclipse和清单中为Android应用程序选择API级别

时间:2014-01-27 11:43:51

标签: android api eclipse-adt

我不完全确定在Eclipse下开发时设置API级别时我没有犯任何错误,所以这里有一些我不是100%肯定的例子。

  1. 在Eclipse中开发Android应用程序时,我总是将Eclipse下的BuildProjectTarget和清单中的android:targetSdkVersion设置为最新的Android版本。这种做法是否正确?注意:我根据项目设置了android:minSdkVersion(通常值为10)

  2. 我知道,当使用android下的版本中没有的东西时,执行上述操作会触发关于不支持的API的警告:minSdkVersion(例如使用没有支持库的片段)有什么例子,当这些不应该被信任时如果使用Gradle / Ant脚本或手动构建项目会发生什么?

  3. 如果我将BuildProjectTarget和android:targetSdkVersion设置为16,然后使用一些弃用的API(如WebView setCertificate()(在API级别17中已弃用))会发生什么。这种方法是适用于所有设备还是仅适用于Android 4.1,它会使应用程序崩溃还是被忽略?

  4. 我知道Eclipse使用来自SDK / platforms文件夹的Java库android.jar,并且在设备应用程序上链接到存储在设备上的那个库但是我没有得到的是这个库的多个版本在Android手机或只有一个(最新的Android版本)?还有一个版本的framework.jar在这个中起作用吗?

  5. 当您使用google_play_services之类的库时,库会发生什么?这些是打包到apk还是引用设备上已有的库?我知道当你使用Facebook sdk时,jar会被装入apk但不知道这些谷歌库有什么不同吗?

2 个答案:

答案 0 :(得分:1)

  1. 是的,这种做法是正确的,以确保支持最新的Android版本。

  2. 当您设置minSdkVersion时,那么您的应用程序支持的最低版本的Android将使用ant / gradle进行编译将显示错误,您将使用较新的api级别中引入的方法进行旧版本。

  3. 不推荐使用意味着另一种方法已经取代了这个方法,而且这个方法将从Android源代码中删除,因此鼓励开发人员不要使用它们。但是,他们会一直工作,直到他们留在源头。

  4. android.jar是android OS中包含的方法和东西的依赖项,你可以调用的东西,不,我不认为framework.jar在这个中起作用。< / p>

  5. 引用所有外部库并将其添加到apk。但只有一些谷歌的,那些不是主要的。 (看看gapps软件包,它会给你一些细节。链接:http://goo.im/gapps

  6. 我希望我能做到这一点并帮助你理解。

答案 1 :(得分:0)

  

在Eclipse中开发Android应用程序时,我总是将Eclipse下的BuildProjectTarget和清单中的android:targetSdkVersion设置为最新的Android版本。这种做法是否正确?注意:我根据项目设置了android:minSdkVersion(通常值为10)

是。这样你就可以确保你总是使用最新版本的sdk。

  

我知道上面的操作会在使用android下的版本中没有的东西时触发Eclipse警告:minSdkVersion(例如使用没有支持库的片段)有什么例子,当这些不应该被信任时会是什么如果使用Gradle / Ant脚本或手动构建项目会发生什么?

只需使用Build.Version.SDK_INT确保旧设备无法访问该部分代码。这将为您提供设备的当前SDK。

  

如果我将BuildProjectTarget和android:targetSdkVersion设置为例如16,然后使用一些弃用的API(如WebView setCertificate()(在API级别17中已弃用))会发生什么。这种方法是适用于所有设备还是仅适用于Android 4.1,它会使应用程序崩溃还是被忽略?

弃用的方法将继续有效,但可以使用更好的替代方案。如果您可以选择使用更好的替代方案,请使用它。当您支持由于旧版本而没有此替代方案的设备时,请继续使用已弃用的方法。您可能需要根据if else值进行一些Build.Version.SDK_INT分支。

  

我知道Eclipse使用来自SDK / platforms文件夹的Java库android.jar,并且在设备应用程序链接到存储在设备上的那个库但是我没有得到的是Android手机上有这个库的多个版本或只是一个(最新的Android版本)?还有一个版本的framework.jar在这个中起作用吗?

较新的设备包含较旧设备的代码。因此,没有必要保留对其他版本的引用。

  

当您使用google_play_services之类的库时,库会发生什么?这些是打包到apk还是引用设备上已有的库?我知道当你使用Facebook sdk时,jar会被装入apk但不知道这些谷歌库是不同的吗?

jar中的类文件将打包在.apk中。设备上的Google Play服务会使用这些类与您的应用进行通信。

相关问题