我已经从以下存储库构建了Wire应用程序:
https://github.com/wireapp/wire-android

使用以下构建说明:

如何在本地构建请查看wire-android系统信息库。切换到
最新的relase分支版本从checkout文件夹中,运行./gradlew
assembleProdRelease。这将获取所有必要的依赖项
来自Maven。

我已经尝试了发布分支:

git clone https://github.com/wireapp/wire-android.git --branch release

和主人:
git clone https://github.com/wireapp/wire-android.git

最初,这两个版本都给出了错误:
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.UnsatisfiedLinkError: Error looking up function 'wcall_set_video_send_state': undefined symbol: wcall_set_video_send_state
        at com.sun.jna.Function.<init>(Function.java:245)
        at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:566)

但是,可以通过在Android Studio中打开项目之前运行以下命令来解决此错误:

gradlew assembleProdRelease

此命令还会在build / output / apks中创建apk。但是,该构建没有使用发布或调试密钥进行签名。我使用以下工具对apk进行了签名:
https://github.com/patrickfav/uber-apk-signer/releases

APK稳定且运行良好,但仍无法发起视频通话。它给出以下错误:

Android 5:

08-24 22:53:29.877 296-881 /? E / FastThread:未收到预期
优先提升

Android 8:

08-24 23:10:02.190 406-4592 /? E / AudioALSAPlaybackHandlerBase:
-getHardwareBufferInfo(),pcm_get_htimestamp失败,ret = -1,pcm_get_error =

Android 9模拟器:

08-25 19:56:58.425 1583-3268 /? W / audio_hw_generic:不提供
足够的数据到HAL,预期位置4108693,仅写入4108320

更新:

我考虑过尝试构建自己的AVS库版本:https://github.com/wireapp/wire-audio-video-signaling以下

需要运行以下命令:
make dist_android

C:\ work \ wire-audio-video-signaling>制作dist-android mk / target.mk:167:
***未知的主机系统。停止。

mk / target.mk看起来像:
# Start by auto-determining host system and arch.
ifeq ($(HOST_OS),)
HOST_UNAME := $(shell uname)
ifeq ($(HOST_UNAME),Darwin)
HOST_OS := osx
else
ifeq ($(HOST_UNAME),Linux)
HOST_OS := linux
else
$(error Unknown host system)
endif
endif
endif

Makefile似乎没有设置为支持Windows,因此我将尝试从Linux机器上构建它,以查看是否有帮助。

更新2:

它确实可以在Ubuntu上更好地构建,但是最终因抱怨编译器参数而死。 [抱歉我没有错误]

但是我设法在这里找到为Android / ARM构建的库的二进制副本:
http://dl.bintray.com/wire-android/releases/com/wire/avs/

但是,这些库似乎也无法解决问题。

更新3:

尝试了以下内容:
  • 上方的链接下载了最新版本的.aar文件。
  • 重命名为avs.aar
  • 安装在app / libs中
  • 取消注释该行:“实现(名称:'avs',ext:'aar')”

  • 但是我得到了错误:

    程序类型已经存在:com.waz.avs.VideoCapturer $ 4
    消息{种类=错误,文本=程序类型已存在:
    com.waz.avs.VideoCapturer $ 4,来源= [未知源文件],工具
    名称= Optional.of(D8)}

    如果您注释掉错误将消失,则下面还有另一个对AVS库的引用。

    但是,这些步骤都不能解决问题。

    现在,我将尝试构建发行分支的旧版本...

    更新4:发布分支:2.41.359
    [最新的非Beta标记版本]
  • 不再在Android Studio中编译,因为布局DIR中的某些XML文件格式不正确。这些必须修复并检入Git,因为构建过程会将所有文件从Git中检出。
  • 该应用程序最初正常运行并允许登录,但始终在编辑设备屏幕后崩溃。然后,每次您尝试打开该应用程序时,该应用程序就会崩溃。

  • 08-25 14:51:02.142 29066-29109 /? E / AndroidRuntime:致命异常:
    线程4
    工艺:电线,PID:29066
    java.lang.NullPointerException:尝试在空对象上调用接口方法'int com.waz.call.RequestHandler.request $ 1d4ff469()'
    参考
    在com.waz.call.FlowManager.request(FlowManager.java:365)

    注意:似乎编辑设备屏幕不是问题的原因,因为我删除了Web应用程序中的所有设备,但是2.41.359在手机上崩溃而未显示编辑设备屏幕。

    在以下线程中提到了此问题:
  • https://github.com/wireapp/wire-android/issues/1271
  • https://github.com/wireapp/wire-android/issues/1288

  • 建议似乎使用生产版本中的avslib.so文件,因为提供的文件不足以运行该项目。

    因此,我从他们的网站上下载了APK:
    https://wire.com/en/download/

    它是版本:3.15.634 [比应用商店中的版本还早:3.16.638,尽管希望没关系]。

    对于任何不知道的人,APK只是一个ZIP文件,因此为了获得libavs.so,我将其从.apk重命名为.zip:

    根目录:
    java - 尝试视频通话时,Android WireApp记录UnsatisfiedLink错误:“wcall_set_video_send_state”-LMLPHP

    Libs目录:
    java - 尝试视频通话时,Android WireApp记录UnsatisfiedLink错误:“wcall_set_video_send_state”-LMLPHP

    Arm Dir:
    java - 尝试视频通话时,Android WireApp记录UnsatisfiedLink错误:“wcall_set_video_send_state”-LMLPHP

    提取libavs.so后,我将构建工具生成的wire-prod-release-2.41.99999的未签名版本重命名为wire-prod-release-2.41.99999-avs-mod.zip,并删除了旧的libavs.so和取而代之的是我刚从该应用的正式版中获取的那个。我将其重命名为.pkg,然后运行以下命令对其进行签名:
    java -jar \uber-apk-signer-0.8.4.jar --apks wire-prod-release-2.41.99999-avs-mod.apk -debug
    

    相当不错的结果,2.41.359不再崩溃。但是,我仍然无法发起任何音频或视频通话。在最新版本的发行分支中发现相同的错误:
    08-25 16:01:51.748 406-4592/? E/AudioALSAPlaybackHandlerBase: -getHardwareBufferInfo(), pcm_get_htimestamp fail, ret = -1, pcm_get_error =
    

    为了进行健全性检查,我安装了生产版本:3.15.634(用于额外的libavs.so),它可以进行音频和视频通话。 [GooglePlay上的版本:3.16.638也适用于音频和视频...]

    有任何想法吗?

    最佳答案

    经过几天的尝试,我找到了一种构建项目的方式,可以启动音频和视频通话:

    程序:

  • git clone https://github.com/wireapp/wire-android.git-分支发布
  • cd线-android
  • git checkout 2.40.357
  • 将项目加载到Android Studio中
  • 编辑文件res / layout / collection_file_asset.xml
  • <?xml version="1.0" encoding="utf-8"?>移到版权说明上方,因为该文件必须以XML标记
  • 开头
  • git add。
  • git commit -m“固定语法错误”
  • gradlew assembleProdRelease
  • java -jar \ uber-apk-signer-0.8.4.jar --apks wire-prod-release-2.40.99999.apk -debug
  • adb安装wire-prod-release-2.40.99999-aligned-debugSigned.apk

  • 其他说明:

    由于Scala错误,
  • Master当前无法构建...
  • 当前发行版分支会生成稳定的应用程序,但点击视频图标时会导致以下错误:“E / AudioALSAPlaybackHandlerBase:-getHardwareBufferInfo(),pcm_get_htimestamp失败,ret = -1,pcm_get_error =”
  • 最新的稳定版本2.41.359无法正常工作,因为它会在每次启动以下应用程序时崩溃:“AndroidRuntime:致命异常:Thread-4进程:com.wire,PID:29066 java.lang.NullPointerException:尝试调用接口方法com.waz.call.FlowManager.request(FlowManager.java:365)上的空对象引用上的'int com.waz.call.RequestHandler.request $ 1d4ff469()'“
  • 构建2.40.357可以启用音频和视频时,它不稳定并且在接听和拨打电话时会崩溃很多。我已经与其他使用此代码库的开发人员进行过交谈,他们也遇到了类似的问题...

  • 想法:

    我不太确定这个项目是怎么回事。有开发人员恳求在Git上解决音频/视频问题时反应不佳。我想除非有更多的稳定性和支持,否则对于将这个代码用于商业项目会感到有些不安。

    10-05 21:12