сократить время сборки с помощью конфигурации веб-пакета

Верно. Хеннинг и P4u144 поставили меня на правильный путь, чтобы ответить на это более подробно.

Определить все зарегистрированные задания

Определить свою задачу командой adb shell dumpsys jobscheduler. Это даст вам огромный результат в следующих категориях:

  • Настройки
  • Зарегистрировано XX Задания
  • Связь
  • Сигнализация
  • Idle
  • Аккумулятор
  • AppIdle
  • Содержание
  • История заданий
  • Ожидающая очередь

Вы, скорее всего, заинтересованы в категории Зарегистрировано XX Задания . Это говорит о том, сколько заданий запланировано на устройстве. Например, ваше имя_файла com.foo.bar.application должно выглядеть как:

JOB #u0a93/17: eec3709 com.foo.bar.application/com.evernote.android.job.v21.PlatformJobService
    u0a93 tag=*job*/com.foo.bar.application/com.evernote.android.job.v21.PlatformJobService
    Source: uid=u0a93 user=0 pkg=com.foo.bar.application
    JobInfo:
      Service: com.foo.bar.application/com.evernote.android.job.v21.PlatformJobService
      PERIODIC: interval=+15m0s0ms flex=+5m0s0ms
      PERSISTED
      Requires: charging=false deviceIdle=false
      Network type: 2
      Backoff: policy=1 initial=+30s0ms
      Has early constraint
      Has late constraint
    Required constraints: TIMING_DELAY DEADLINE UNMETERED
    Satisfied constraints: CONNECTIVITY NOT_ROAMING APP_NOT_IDLE DEVICE_NOT_DOZING
    Unsatisfied constraints: TIMING_DELAY DEADLINE UNMETERED
    Earliest run time: 07:23
    Latest run time: 12:23
    Ready: false (job=false pending=false active=false user=true)

Совет. Используйте adb shell dumpsys jobscheduler | grep com.foo.bar.application, чтобы быстро отфильтровать список.

blockquote>

Теперь вы можете легко определить, была ли зарегистрирована ваша работа с правильными критериями.

FireBaseJobdispatcher

Если вы используете FirebaseJobDispatcher lib, вы можете использовать

adb shell dumpsys activity service GcmService | grep com.foo.bar.debug
    com.foo.bar.debug:0 v853
    u0|com.foo.bar.debug: 3
    (scheduled) com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="com.foo.bar.debug.job.FetchArticlesJob" trigger=window{start=10800s,end=11700s,earliest=10448s,latest=11348s} requirements=[NET_UNMETERED,DEVICE_IDLE] attributes=[PERSISTED,RECURRING] scheduled=-351s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1}
    (scheduled) com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="com.foo.bar.debug.job.FetchNotificationGroupsJob" trigger=window{start=86400s,end=129600s,earliest=86048s,latest=129248s} requirements=[NET_CONNECTED,CHARGING] attributes=[PERSISTED,RECURRING] scheduled=-351s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1}
    (scheduled) com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="com.foo.bar.debug.job.RemoveUnusedRealmArticlesJob" trigger=window{start=577980s,end=608400s,earliest=521961s,latest=552381s} requirements=[NET_ANY] attributes=[PERSISTED,RECURRING] scheduled=-56018s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1}
    (finished) [com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver:com.foo.bar.debug.job.UpdateNotificationGroupJob,u0]
    (finished) [com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver:com.foo.bar.debug.job.UpdatePushTokenJob,u0]
    (finished) [com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver:com.foo.bar.debug.job.FetchArticlesJob,u0]

, чтобы проверить, была ли ваша служба запланирована или запущена.

Заставить свою задачу запускать

При создании Job вы получаете возвращенный JOB_ID. Используйте JOB_ID, чтобы заставить задание работать. Вы можете сделать это, используя команду adb shell cmd jobscheduler run (требуется Android 7.1 или более поздняя).

Например, ваше имя_пакета является com.foo.bar.application, а JOB_ID равно 1. Теперь вы можете выполнить свою задачу через adb

adb shell cmd jobscheduler run -f com.foo.bar.application 1

Не забывайте параметр -f, поскольку это заставляет работу запускаться, даже если установленные ограничения не выполняются.

Evernote Android Job Lib

Последнее, но не менее важное. Используйте замечательную библиотеку из Evernote для этого. Это позволяет легко осуществлять резервное копирование JobScheduler на более низких уровнях API с использованием JobScheduler, GcmNetworkManager или AlarmManager в зависимости от вашего уровня API.

Редактировать 24/08

Еще лучше использовать библиотеку диспетчера заданий для firebase.

Firebase JobDispatcher - это библиотека для планирования фоновых заданий в приложении для Android. Он предоставляет API, совместимый с JobScheduler, который работает во всех последних версиях Android (API уровня 9+), в которых установлены сервисы Google Play.

blockquote>

Надеюсь, это помогло.

Спасибо

0
задан sahar 30 March 2019 в 07:19
поделиться

1 ответ

Вы можете попробовать поэкспериментировать со свойствами hardsource и кэша.

https://nuxtjs.org/api/configuration-build/#hardsource

https://nuxtjs.org/api/configuration-build/#cache

Это должно сделать последующие сборки намного быстрее

0
ответ дан Aldarund 30 March 2019 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: