我已经从以下存储库构建了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:
尝试了以下内容:
但是我得到了错误:
程序类型已经存在:com.waz.avs.VideoCapturer $ 4
消息{种类=错误,文本=程序类型已存在:
com.waz.avs.VideoCapturer $ 4,来源= [未知源文件],工具
名称= Optional.of(D8)}
如果您注释掉错误将消失,则下面还有另一个对AVS库的引用。
但是,这些步骤都不能解决问题。
现在,我将尝试构建发行分支的旧版本...
更新4:发布分支:2.41.359
[最新的非Beta标记版本]
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在手机上崩溃而未显示编辑设备屏幕。
在以下线程中提到了此问题:
建议似乎使用生产版本中的avslib.so文件,因为提供的文件不足以运行该项目。
因此,我从他们的网站上下载了APK:
https://wire.com/en/download/
它是版本:3.15.634 [比应用商店中的版本还早:3.16.638,尽管希望没关系]。
对于任何不知道的人,APK只是一个ZIP文件,因此为了获得libavs.so,我将其从.apk重命名为.zip:
根目录:
Libs目录:
Arm Dir:
提取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也适用于音频和视频...]
有任何想法吗?
最佳答案
经过几天的尝试,我找到了一种构建项目的方式,可以启动音频和视频通话:
程序:
<?xml version="1.0" encoding="utf-8"?>
移到版权说明上方,因为该文件必须以XML标记其他说明:
由于Scala错误,
想法:
我不太确定这个项目是怎么回事。有开发人员恳求在Git上解决音频/视频问题时反应不佳。我想除非有更多的稳定性和支持,否则对于将这个代码用于商业项目会感到有些不安。