这个项目能做什么
Linphone 是一款开源软电话,支持 IP 语音/视频通话和即时消息。它完全基于 SIP,涵盖呼叫、状态呈现和即时消息功能。本仓库是 linphone-android 的 Linphone.org 镜像;正式开发位置是 Belledonne Communications 的 GitLab 实例。
该应用可在 Google Play 和 F-Droid 上获取,使用项目密钥签名的 APK 可从 Linphone 网站下载。6.0.0 版本是与 UX/UI 专家共同设计的完全重写版本,带来了更流畅的体验、真正的多账户支持以及通话中的非对称视频。它要求 Android 9.0 或更高版本。CHANGELOG.md 文件列出了变更和新功能。
许可采用双许可模式:免费开源使用采用 GNU/GPLv3,闭源应用可付费获得专有许可,费用和服务问题由 Belledonne Communications 处理。文档链接涵盖支持的功能和 RFC、公共 wiki 以及 Android 的 Kotlin 教程。
构建:使用 Android Studio 时,打开项目,等待 Gradle 同步完成,然后构建或安装;linphone 库以 AAR 形式从项目 Maven 仓库获取。不使用 Android Studio 时,使用 ./gradlew assembleDebug 或 assembleRelease,然后使用 installDebug 或 installRelease。APK 输出到 app/build/outputs/apk/debug/ 和 app/build/outputs/apk/release/。要生成发布版 AppBundle,请使用 releaseAppBundle 目标,并确保已安装 NDK 且设置了 ANDROID_NDK_HOME,以便为 Play Store 包含原生库符号。
构建本地 SDK 需要从 GitLab 递归克隆 linphone-sdk,按照其 README 进行构建,在 GRADLE_USER_HOME 下的 gradle.properties 中将 SDK 构建的绝对路径添加为 LinphoneSdkBuildDir,然后重新构建应用。原生调试使用 Android Studio SDK Tools 中的 LLDB,在调试器配置中选择 Dual 或 Native,添加 linphone-sdk 调试库的路径,在原生文件中设置断点,并在 app/build.gradle 中使用调试 AAR。
已知问题包括:linphone_logo_tinted 的 AAPT 资源错误,可通过删除 app/src/main/res/xml/contacts.xml 并重新构建来解决;启动时 libc++_shared.so 崩溃,可通过清理项目并检查 SDK 是否通过 LINPHONESDK_ANDROID_ARCHS cmake 参数为正确的 CPU 架构构建来解决;以及安装后由 Android Studio 启动应用时推送通知不工作,可通过从最近活动中移除应用并从启动器图标重新启动来解决。
故障排查:行为问题应使用模板在 GitHub 仓库上报告,并附上匹配的库日志。自 6.0.0 起,日志始终启用并存储在本地,可通过“帮助”然后“故障排查”清除或安全上传。对于原生崩溃,符号化的堆栈跟踪需要调试库,可通过本地构建 SDK 或从 Maven 仓库下载与 SDK 版本匹配的 libs-debug 归档来获取。需要 ndk-stack 工具,可能还需要 adb logcat;必须知道库的架构。文中给出了从已连接设备符号化堆栈跟踪的命令,包括知道或不知道 CPU 架构的情况,NDK r29 允许直接使用 libs-debug.zip。
自定义包名通过编辑 app/build.gradle.kts 中的 packageName 变量来设置,manifestPlaceholders 会将其应用到所有位置。useDifferentPackageNameForDebugBuild 标志可以为调试构建恢复 org.linphone.debug 包名。processDebugGoogleServices 关于没有匹配客户端的失败意味着必须将 app/google-services.json 替换为所选包名对应的文件,如果不使用 Firebase Cloud Messaging 和 Crashlytics 则删除该文件。自 Google Cloud Messaging 弃用以来,Firebase 是唯一官方的推送通知途径;项目归档了自己的 google-services.json,因此构建仍可从免费的 sip.linphone.org 服务接收推送通知,删除它会禁用推送通知。自定义推送服务器需要替换该文件。
翻译已从 Transifex 迁移到自托管的 Weblate 实例;重写后之前的翻译无法复用,因此欢迎贡献。贡献需要针对最新 git 源代码的补丁,以及通过电子邮件随拉取请求链接发送的已签署贡献者协议,该协议授予项目在源代码上和平行使权利,同时贡献者保留对其贡献的权利。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。