0

我在这个位置包含了来自https://developer.here.com的sdk 文件my_plugin/src/platforms/android/HERE-sdk.aar。在java代码中我可以这样使用它:

package com.here.android.tutorial;
...
import com.here.android.mpa.mapping.MapFragment;
...
private MapFragment mapFragment = null;
private void initialize() {
    mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);
...

我试过这个:

// my-plugin.android.ts
import { Common } from './my-plugin.common';

declare var com: any;

export class MyPlugin extends Common {
    public mapFragment: any;

    constructor() {
        super();

        this.mapFragment = new com.here.android.mpa.mapping.MapFragment()
    }
}

但它显示错误:TypeError: Cannot read property 'android' of undefined

如何.aar在 Nativescript(JS) 代码中正确包含库文件并使用 MapFragment?

4

4 回答 4

1

问题解决了!这是解决方案:

  1. 要将原生 lib 与 Nativescript 插件一起使用,只需将 lib 放入MY_PLUGIN/src/platforms/android目录即可。无需编辑include.gradle文件!Nativescript 会自己找到库。所以目录结构应该是这样的:

    • MY_PLUGIN/src/平台
      • IOS
      • 安卓
        • AndroidManifest.xml
        • HERE-sdk.aar
  2. 要使 Here SDK 工作正常AndroidManifest.xml,请添加权限和凭据。所以它看起来像这样:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<application android:hardwareAccelerated="true">
    <meta-data android:name="com.here.android.maps.appid"
        android:value="{ YOUR_APPID }"/>
    <meta-data android:name="com.here.android.maps.apptoken"
        android:value="{ YOUR_APPTOKEN }"/>
</application>

于 2018-10-25T08:32:11.220 回答
1

除了其他答案之外,我还必须删除/添加平台

tns platform remove android
tns platform add android
tns run android
于 2018-11-26T16:32:43.267 回答
0

检查你的 gradle 属性,看看你是否包含了 Here-sdk,如下所示:

dependencies {
    implementation fileTree(dir: 'libs', include: ['HERE-sdk.aar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    compile 'com.google.code.gson:gson:2.8.0'
}

您也可以尝试以下方法

  • 从项目库文件中删除 .aar 文件
  • 删除这里的依赖项最后重建项目
  • 再次粘贴 .aar 文件添加了这里的依赖项
  • 清理并重建项目
于 2018-10-23T19:15:18.977 回答
0

您必须将 aar 文件作为依赖项添加到include.gradle

compile(name: 'HERE-sdk', ext: 'aar')
于 2018-10-23T14:34:35.900 回答