【问题标题】:Add local .aar files to Titanium SDK 9 Android module将本地 .aar 文件添加到 Titanium SDK 9 Android 模块
【发布时间】:2020-12-02 02:49:42
【问题描述】:

我正在使用 Titanium SDK 9 创建一个 Android 模块。我有 2 个 .aar 文件需要包含在我的模块中。根据文档,您不能再将它们添加到 lib 目录:

"使用 Titanium 6.1.1 - 8.3.1,您还可以将 AAR (Android Archive) 库文件复制到模块的 lib 目录。但是,从 Titanium 9.0.0 开始不支持此功能,需要您参考这些通过 build.gradle 文件代替 AAR 库。”

但是如何正确引用它们呢?我的 build.gradle 文件的以下配置可以编译,但是当我使用该模块时,当我使用某些 .aar 文件类时,我会立即看到类似“解析失败:Lpolar/com/sdk/api/PolarBleApiDefaultImpl”的错误:

implementation files('../../libs/polar-ble-sdk.aar')
implementation files('../../libs/polar-protobuf-release.aar')
// Below 2 lines also compile
// compile files('../../libs/polar-ble-sdk.aar')
// compile files('../../libs/polar-protobuf-release.aar')
implementation group: 'commons-io', name: 'commons-io', version: '2.4'
implementation 'com.google.protobuf:protobuf-java:3.1.0'
implementation 'io.reactivex.rxjava2:rxjava:2.1.5'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

我试图在我的 Titanium 项目中执行的调用并导致错误:

import polar.com.sdk.api.PolarBleApi;
import polar.com.sdk.api.PolarBleApiDefaultImpl;

// and then later on

PolarBleApi api = PolarBleApiDefaultImpl.defaultImplementation(this, 
PolarBleApi.FEATURE_HR);

【问题讨论】:

    标签: android gradle titanium


    【解决方案1】:

    https://github.com/polarofficial/polar-ble-sdk找到库

    使用这个 build.gradle

    repositories {
           maven { url "https://oss.jfrog.org/libs-snapshot" }
       }
    
    
    dependencies {
        implementation files('../../libs/polar-ble-sdk.aar')
        implementation files('../../libs/polar-protobuf-release.aar')
        implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
        implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
    }
    
    

    工作正常。使用 import polar.com.sdk.api.PolarBleApi; 或使用 Android Studio 自动完成没有问题。 编译工作正常(但我最后没有在 Titanium 中尝试该模块)。

    编辑:

    • 也将 build.gradle 添加到您的应用中:platform/android/build.gradle(相同的内容)
    • app:创建/build/libs并添加库
    • 模块:
        @Kroll.method
        public void create()
        {
            PolarBleApi api = PolarBleApiDefaultImpl.defaultImplementation(TiApplication.getAppCurrentActivity(), PolarBleApi.FEATURE_HR);
            Log.i("Polar", "Version: " + PolarBleApiDefaultImpl.versionInfo());
        }
    
    • 应用:
    var window = Ti.UI.createWindow({
        title: "Test"
    });
    var polar = require("ti.polar");
    
    polar.create();
    
    window.open();
    

    输出:[INFO] Polar: (main) [92,92] Version: 2.2.2

    【讨论】:

    • 感谢您的回答,这可以编译,但带有一些警告,例如 [ERROR] [GRADLE] /polar-ble-sdk-api.jar(polar/com/sdk/api/PolarBleApi.class): warning: Cannot find annotation method 'from()' in type 'IntRange': class file for android.support.annotation.IntRange not found。当我使用 Titanium 中的模块并从 Polar API 调用一个简单方法时,应用程序崩溃:Error: Failed resolution of: Lpolar/com/sdk/api/PolarBleApiDefaultImpl;。在我的原始答案中查看我的完整 gradle.build。
    • 我在应用程序内的/build/libs/ 中添加了 aars,并在那里使用了相同的 build.gradle。如果你遇到这个:github.com/polarofficial/polar-ble-sdk/issues/90 请查看 rxandroid 页面了解如何实现它。我已经更改了我的答案以显示完整的 build.gradle。模块和应用程序构建并运行良好。但是我使用了您在示例中添加的一行
    • 嗨,谢谢,这是有效的!我不知道您还必须将 build.gradle 和 .aar 文件添加到项目中。
    • 如果您使用在线实现,通常不必这样做。它们被捆绑到模块中。另一个 Ti 用户正在使用 adding a local repository into Titanium/mobilesdk/osx/[sdk-version]/android/m2repository to take the .aar libapi "NAME OF THE LIB" 作为 gradle 依赖项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多