如何在自定义Nativescript插件中正确使用HERE Maps SDK?

时间:2018-10-23 14:02:59

标签: android nativescript here-api nativescript-plugin

我在此位置my_plugin/src/platforms/android/HERE-sdk.aar包含了https://developer.here.com的sdk文件。在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 个答案:

答案 0 :(得分:1)

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

  1. 要通过Nativescript插件使用本机lib,将lib放置到MY_PLUGIN/src/platforms/android目录就足够了。 无需编辑include.gradle文件! Nativescript会找到库本身。因此目录结构应如下所示:

    • MY_PLUGIN / src / platforms
      • ios
      • android
        • AndroidManifest.xml
        • HERE-sdk.aar
  2. 要使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>

答案 1 :(得分:1)

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

tns platform remove android
tns platform add android
tns run android

答案 2 :(得分:0)

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

shuf: extra operand ‘someWord’

答案 3 :(得分: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'
}

您也可以尝试以下

  • 从项目libs文件中删除.aar文件
  • 在此处删除依赖项最后会重建项目
  • 再次粘贴.aar文件,在此处添加依赖项
  • 清理并重建项目