1

我有一个通过 androudstudio + gradle build 可以正常工作的 android 应用程序(构建和 apk 安装)。这个应用程序使用 WebRTC 库:

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

现在我想更改构建并通过 AOSP 中的 Android.mk 来完成,我尝试了几个选项,但都失败并出现相同的错误:

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-webrtc-1.0.27771.aar 并像我所有其他 aar 依赖项一样添加它。
  2. 从 webrtc aar 文件中提取 jar 和 libjingle_peerconnection_so.so 并将其单独添加到 Android.mk

¿ 如何在 Android.mk 中使用 google webrtc?

更新 1

我已经测试了几个版本,发现:google-webrtc-1.0.20723.aarand less 工作正常,但版本高于 no。

问题似乎与 Android 中的 lambda 支持有关。我真的不知道我是否缺少任何特殊标志来在 Android.mk 中设置 java lambda 编译。

targetSdkVersion="27"也在使用 AOSP sdk version = 27。

解决方案

经过数小时的谷歌搜索......我得到了解决方案,或者至少这解决了我的问题。留在这里,以供将来遇到同样问题的人使用。

您所要做的就是在 AOSP 构建中禁用 Jack。一开始,我在我的 Android.mk 应用程序中设置了以下行。

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

现在它可以工作了。

杰克的附加信息:https ://source.android.com/setup/build/jack

4

0 回答 0