【问题标题】:Compile different android modules using different android APIs使用不同的 android API 编译不同的 android 模块
【发布时间】:2013-01-25 20:07:48
【问题描述】:

我有两个模块:我的应用程序模块,我想使用 Android 2.3 平台 编译,以及 ActionBarSherlock 库模块,它必须使用 Android 4.0 平台 编译>。当我以这种方式设置项目结构并运行应用程序(并且 ActionBarSherlock 设置为我的模块的依赖项)时 - IDEA 尝试使用 2.3 API 编译所有内容,并显示如下错误:

android-apt-编译器: action-bar-sherlock\res\values-v14\abs__themes.xml:32:错误:错误 检索项目的父项:未找到与给定匹配的资源 名称 'android:Theme.Holo.Light.Dialog'

如何正确设置IDEA?

【问题讨论】:

  • 在每个模块中您可以设置所需的版本。问题是为什么每次编译项目时都要编译 ABS。为什么不链接 Jake git repo 或在本地构建库并将其添加到项目中?
  • 因为使用 ABS 作为 Intellij 模块是在项目中包含它的唯一方法。该模块被设置为主模块的依赖项。它总是重新编译。
  • 基于 Maven 的 Android 项目,您可以将其包含为依赖项

标签: android intellij-idea


【解决方案1】:

您可以使用 4.0 库编译所有内容,但使用以下清单声明支持 2.3:

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

在示例中,17 是当前最新的 API 版本,但您可以使用 15 或任何您需要的版本。

【讨论】:

  • 但是 Intellij 允许使用来自第 14 个 SDK 的 API 类(例如,android.util.LruCache),即使 minSdkVersion 设置为 10。这是误导。
  • @Taras,这与这个问题无关。提供的答案将解决您的构建问题。关于它是否具有误导性,我完全同意 - 当您在“兼容性”应用程序中使用高级 API 时,Eclipse 会警告您。但是,我猜这是你必须忍受的编辑器问题。
  • 此外,即使您由于 SDK 本身的错误修复和改进而支持较低级别的 API,也最好使用最新版本的 SDK 进行编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多