如何构建 Android SDK 以便能够使用位于 sdk/add-ons 中的库

How to build an Android SDK to be able to use libraries located in sdk/add-ons

我目前正在尝试使用 android 中内置的库 OpenMobile API。 (并非适用于所有设备)。

我正在按照本教程将库添加到我的 android sdk 中:https://github.com/seek-for-android/pool/wiki/UsingSmartCardAPI

我已经通过 SDK 管理器添加了 OpenMobile API,现在我在 path-to-sdk/sdk/add-ons 中有了文件夹。我目前在 Android Studio 中使用最新版本的 android (25),位于 sdk/add-ons 中的 OpenMobileAPI 文件可用于版本 21。有21 岁以上没有可用的图书馆(请参阅 http://seek-for-android.github.io/repository/21/addon.xml)。

清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  <application android:label="@string/app_name">

    <uses-library android:name="org.simalliance.openmobileapi" android:required="true" />

    <activity android:name=".MainActivity">
      ...
    </activity>
  </application>
</manifest> 

主要活动

import org.simalliance.openmobileapi.*;

public class MainActivity extends Activity implements SEService.CallBack {
  ...
  public void serviceConnected(SEService service) {
    Log.i(LOG_TAG, "seviceConnected()");
  }
}

写着:

Build SDK: Open Mobile API (Giesecke & Devrient GmbH) (API 21)

org.simalliance 无法被 Android Studio 识别,所以我无法使用它。

如何构建 SDK 以便库 class 在 Android Studio 中可用?

在 Android 应用内 gradle :

compile fileTree(include: ['*.jar'], dir: 'libs', 'exclude': ['org.simalliance.openmobileapi.jar'])

provided files('libs/org.simalliance.openmobileapi.jar')

清单:在应用程序标签中添加:

<uses-library android:name="org.simalliance.openmobileapi" android:required="false" />

provided 而不是 compile 允许在代码中识别和使用库,但在构建过程中不会在 apk 中编译。

使用 Android Studio,这个解决方案对我很有效。首先,在 "File>Project Structure>SDKs" 中单击“+”图标并通过选择 "Android 5.0 Open Mobile API ..." 添加新的 Android SDK。然后转到 "File>Project Structure>Modules"、select 您的应用程序模块,在 "dependencies" 选项卡 select "Android 5.0 Open Mobile API ..." 中的 "Module SDK" 选项。单击“确定”,Android Studio 解析 类。

为了 gradle 工作,我必须将 "org.simalliance.openmobileapi.jar" 从 android sdk 的附加组件复制到我的应用程序模块的 "libs" 目录,然后使用 Kel H.上面的答案,通过将 "provided" 替换为 "compile" 来构建项目。希望对你有帮助。