Как правильно использовать ЗДЕСЬ карты SDK в пользовательском плагине Nativescript? - PullRequest
0 голосов
/ 23 октября 2018

Я включил SDK-файл из https://developer.here.com по этому адресу 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 файл библиотеки и использовать MapFragment в коде Nativescript (JS)?

Ответы [ 4 ]

0 голосов
/ 26 ноября 2018

В дополнение к другим ответам мне пришлось удалить / добавить платформу

tns platform remove android
tns platform add android
tns run android
0 голосов
/ 23 октября 2018

Проверьте свои свойства 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 из проектаlibs file
  • Remove Here зависимости, наконец, перестройте проект
  • Вставьте снова .aar файл, добавил сюда зависимости
  • Очистите и перестройте проект
0 голосов
/ 25 октября 2018

Проблема решена!Вот решение:

  1. Чтобы использовать нативный lib с плагином Nativescript, достаточно поместить lib в каталог MY_PLUGIN/src/platforms/android. Нет необходимости редактировать include.gradle файл! Nativescript найдет саму библиотеку.Таким образом, структура каталогов должна выглядеть следующим образом:

    • MY_PLUGIN / src / platform
      • 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>

0 голосов
/ 23 октября 2018

Вы должны добавить файл aar как зависимость в include.gradle

compile(name: 'HERE-sdk', ext: 'aar')
...