Пользовательское расширенное действие не работает на Nativescript 7

#nativescript

#nativescript

Вопрос:

За несколько месяцев до этого тот же код работал нормально, и я смог запустить пользовательскую активность (и пользовательское приложение), но я не знаю, что произошло. Я пробовал в новых проектах воспроизводить шаги, но всегда получаю одну и ту же ошибку:

Невозможно создать приложение com.tns.NativeScriptApplication: com.tns.NativeScriptException: Ошибка вызова функции модуля System.err: Ошибка: com.tns.system.classes.loading.LookedUpClassNotFound: класс «a.b.NativeScriptActivity» не найден. System.err: File: (/data/data/org.nativescript.testing/files/internal/ts_helpers.js:154:25) System.err: System.err: StackTrace: System.err: (/data/data/org.nativescript.testing/files/internal/ts_helpers.js:154:26) System.err: в __decorate(/data/data/org.nativescript.testing/files/internal/ts_helpers.js:13:19) System.err: в ./app/core/android/activity.ts(файл: src/app/core/android/activity.android.ts:5:25)…

Файл Activity ts — activity.android.ts . Я включил JavaProxy декоратор «a.b.NativeScriptActivity». То же самое на Android Maifest. Также добавлена запись в массиве AppComponents на webpack.config.js

ОБНОВЛЕНИЕ: я давно отказался от Nativescript (перешел на Flutter).

Комментарии:

1. Вы добавили путь к файлу activity в конфигурацию webpack?

2. Да, в массиве AppComponent. Я знаю, что это нормально, потому что я пробовал с неправильным путем, и я вижу ошибку. Когда я указываю правильный путь, эта ошибка исчезает

3. Также вы можете увидеть ошибку трассировки ‘./app/core/android/ activity.ts (файл: src/app/core/android/activity.android.ts: 5:25)’, которая является файлом расширенной активности.

Ответ №1:

Для Nativescript 7 вас необходимо добавить следующий декоратор :

  @NativeClass()
  

пример:

 @NativeClass()
@JavaProxy("com.lanmis.app.BackgroundJobService")
class BackgroundService extends android.app.job.JobService {
}
  

В nativescript 6 :

Первое решение :

Если importHelpers: true существует в tsconfig.json, вы должны изменить его на : importHelpers: false

Второе решение :

Вместо следующего блока :

 @JavaProxy("com.lanmis.app.BackgroundJobService")
class BackgroundService extends android.app.job.JobService {

//Code

}
  

Использовать :

 android.app.job.JobService.extend("com.lanmis.app.BackgroundJobService", {

//Code

})
  

Комментарии:

1. Я пробовал все давным-давно, но безуспешно, и я отказался от Nativescript в пользу Flutter, который работает как шарм.

Ответ №2:

Ошибка класса поиска возникает из-за проблемы с путем действия … проверьте ваш файл webpack на

Если AppPath =»src» ,

       const appComponents = [
resolve(__dirname, "src/app/activity.android.ts")
]
  

или

Если AppPath AppPath = «приложение»

       const appComponents = [
  

разрешить (__dirname, «app / activity.android.ts»)
]