0

Could help me. I tried implement Android library in Nativescript.

I create Android Project -> New Module -> Andorid library.

Create Java Class platforms\android\nativescript-serial-port\serialport\src\main\java\com\nativescript\serialport\Toaster.java

 package com.nativescript.serialport;

import android.content.Context;
import android.widget.Toast;

public class Toaster {
    public Toaster() {}

    public void show(Context context) {
        Toast.makeText(context, "Hello NativeScript!", Toast.LENGTH_SHORT).show();
    }
}

Add in file nativescript project platforms\android\settings.gradle

include ':app', ':serialport'
project(':serialport').projectDir = new File('nativescript-serial-port/serialport')

Add in file nativescript app app\App_Resources\Android\app.gradle

dependencies {
  implementation project(":serialport")
}

Add in JS file nativescript project some-file.js

import * as app from 'application';

const context = android.content.Context;

const toaster = new com.nativescript.serialport.Toaster();
toaster.show(context);

And if I run this code appear error

System.err: TypeError: com.nativescript.serialport.Toaster is not a constructor System.err: File: "file:///data/data/org.nativescript.application/files/app/bundle.js, line: 372, column: 22 System.err: System.err: StackTrace: System.err: Frame: function:'onPrint', file:'file:///data/data/org.nativescript.application/files/app/bundle.js', line: 372, column: 23 System.err: Frame: function:'invoker', file:'file:///data/data/org.nativescript.application/files/app/vendor.js', line: 4168, column: 18 System.err: Frame: function:'Observable.notify', file:'file:///data/data/org.nativescript.application/files/app/vendor.js', line: 17698, column: 15 System.err: Frame: function:'Observable._emit', file:'file:///data/data/org.nativescript.application/files/app/vendor.js', line: 17726, column: 12 System.err: Frame: function:'ClickListenerImpl.onClick', file:'file:///data/data/org.nativescript.application/files/app/vendor.js', line: 29193, column: 15 System.err: System.err: at com.tns.Runtime.callJSMethodNative(Native Method) System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1120) System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1000) System.err: at com.tns.Runtime.callJSMethod(Runtime.java:987) System.err: at com.tns.Runtime.callJSMethod(Runtime.java:967) System.err: at com.tns.Runtime.callJSMethod(Runtime.java:959) System.err: at com.tns.gen.java.lang.Object_vendor_29183_26_ClickListenerImpl.onClick(Object_vendor_29183_26_ClickListenerImpl.java:17) System.err: at android.view.View.performClick(View.java:6597) System.err: at android.view.View.performClickInternal(View.java:6574) System.err: at android.view.View.access$3100(View.java:778) System.err: at android.view.View$PerformClick.run(View.java:25885) System.err: at android.os.Handler.h andleCallback(Handler.java:873) System.err: at android.os.Handler.dispatchMessage(Handler.java:99) System.err: at android.os.Looper.loop(Looper.java:193) System.err: at android.app.ActivityThread.main(ActivityThread.java:6669) System.err: at java.lang.reflect.Method.invoke(Native Method) System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

How fix this error. Thanks

b360124
  • 31
  • 5
  • May I ask why you are trying to write a Java library when it's possible to write them in JavaScript itself. Also, you must create a standalone library project, build the aar file and copy it to your `App_Resources/android/lib`. As `platforms` folder is autogenerated one, it's not advised to make any changes in there. – Manoj Jan 29 '19 at 00:03
  • Thanks. I don't build aar file. Now this is work. – b360124 Jan 29 '19 at 15:17

0 Answers0