使用Eclipse,我如何构建&编译一个针对1.5的Android项目,该项目使用1.6+功能?

时间:2010-10-30 13:45:32

标签: android eclipse

可能是一个简单的问题,但我开发了一个应用程序,它始终使用1.5的构建目标而没有问题。但是,现在我正在添加1.6中引入的TextToSpeech。我已经创建了一个封装TextToSpeech代码的TextToSpeech包装器,并且我对活动进行了检查,这样当它运行时,它应该只适用于1.6及更高版本的设备。但诀窍是让代码在Eclipse中运行,构建目标为1.5。当我尝试这样做时,当然,我得到以下错误与我的TextToSpeech包装类相关联:

“无法解析TextToSpeech。”

我已经玩过jar作为jar,创建了一个库项目等,但我似乎无法让它们工作。对于库项目,它表示依赖项目必须具有相同或更高的API级别,因此它不起作用。一些相关的代码摘录:

的AndroidManifest.xml

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

活动类

static {
      try {
        TextToSpeechWrapper.checkAvailable();
        androidTextToSpeechAvailable = true;
      } catch (Throwable t) {
        androidTextToSpeechAvailable = false;
      }
    }

包装类

import java.util.HashMap;
import java.util.Locale;

import android.content.Context;
import android.speech.tts.TextToSpeech;

/*
 * A wrapper class for the newer Android text-to-speech library that is only found in
 * Android OS 1.6 and above (Donut and above).  This is useful so that the app can
 * be loaded on pre-Donut devices without breaking the app.
 */
public class TextToSpeechWrapper {

  private TextToSpeech mTextToSpeech;

  // class initialization fails when this throws an exception
  static {
    try {
      Class.forName("android.speech.tts.TextToSpeech");
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }

  // Some static vars from the text-to-speech class
  public static int SUCCESS = TextToSpeech.SUCCESS;
  public static int QUEUE_FLUSH = TextToSpeech.QUEUE_FLUSH;  <--- Eclipse errors point here cause it does not exist in 1.5.

所以我的问题是如何让项目再次使用1.5的构建目标和模拟器,这样我就可以测试并确信我的应用程序仍适用于1.5及以上版本?

3 个答案:

答案 0 :(得分:0)

  

但诀窍是让代码在Eclipse中运行,构建目标为1.5。

这是不可能的。您需要至少构建您正在调用的最低API级别。

  

所以我的问题是如何让项目再次使用1.5的构建目标和模拟器,这样我就可以测试并确信我的应用程序仍适用于1.5及以上版本?

你没有。您使用1.6或更高版本的构建目标,然后在Android 1.5设备/模拟器上测试应用程序。

答案 1 :(得分:0)

马克说的话。使用4(Android 1.6)的构建目标而不是8,minSdk为3(Android 1.5)。你仍然需要进行那种检查,以便你优雅地处理没有TTS的1.5设备。你不能简单地在1.5中包含一个jar文件,因为TTS需要你尝试的jar文件中没有的许多其他组件。

答案 2 :(得分:0)

如果您的目的是在1.5设备/ AVD上测试您的应用,您可以尝试针对Android 1.6(API级别4)构建它,并在清单中设置minSdkVersion = 3。我不确定,但我认为你应该能够以这种方式在Android 1.5(API 3级)设备上运行它。如果这不起作用,我有另一个解决方案,但它有点复杂,所以如果你需要它,请告诉我,我会向你解释。