У меня есть приложение 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
...
Попытки:
- Добавьте ту же зависимость, что и загрузки gradle: google-webrt c -1.0.27771.aar и добавьте ее, как и все мои другие aar зависимости.
- Извлеките 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