WebRT C in Android .mk - PullRequest
       8

WebRT C in Android .mk

1 голос
/ 16 марта 2020

У меня есть приложение android, которое отлично работает (сборка и установка apk) через androudstudio + gradle build. Это приложение использует библиотеку WebRT C:

implementation("org.webrtc:google-webrtc:1.0.27771")

Теперь я хочу изменить сборку и сделать это через Android .mk внутри AOSP, я пробовал несколько вариантов, но все не удалось с той же ошибкой:

ERROR: YuvConverter.java:230-231: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: Camera1Session.java:306-307: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: Camera1Session.java:306-307: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: SurfaceTextureHelper.java:234-235: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: SurfaceTextureHelper.java:213-214: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: SurfaceTextureHelper.java:186-187: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: SurfaceTextureHelper.java:305-306: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: SurfaceTextureHelper.java:255-256: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
ERROR: SurfaceTextureHelper.java:147-148: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are android.graphics.SurfaceTexture$OnFrameAvailableListener
ERROR: SurfaceTextureHelper.java:205-206: Lambda coming from jar file need their interfaces on the classpath to be compiled, unknown interfaces are java.lang.Runnable
...

Попытки:

  1. Добавьте ту же зависимость, что и загрузки gradle: google-webrt c -1.0.27771.aar и добавьте ее, как и все мои другие aar зависимости.
  2. Извлеките jar и libjingle_peerconnection_so.so из файла webrt c aar и добавьте его по отдельности в Android .mk

¿Как я могу использовать google webrt c внутри Android .mk?

Обновление 1

Я протестировал несколько версий и обнаружил, что: google-webrtc-1.0.20723.aar и менее работает нормально, но версий выше нет .

Проблема, похоже, связана с поддержкой лямбды в Android. Я действительно не знаю, пропускаю ли я какой-либо специальный флаг для настройки java лямбда-компиляции в Android .mk.

Я использую targetSdkVersion="27" и AOSP sdk version = 27 тоже.

Решение

После нескольких часов поиска в Google ... Я получил решение, или, по крайней мере, это решает мою проблему. Держите это здесь для будущих парней, борющихся с той же проблемой.

Все, что вам нужно сделать, это отключить Джека в сборке AOSP. Я установил следующую строку в моем Android .mk приложении при запуске.

LOCAL_PATH:= $(call my-dir)
ANDROID_COMPILE_WITH_JACK:=false
...

И теперь это работает.

Дополнительная информация для Джека: https://source.android.com/setup/build/jack

...