LinPhone هو softphone مفتوحة المصدر للصوت والفيديو عبر الاتصال برسالة IP والرسائل الفورية.
إنه يعتمد بالكامل على SIP ، لجميع المكالمات والحضور وميزات IM.
الوصف العام متاح من موقع LinPhone على الويب
حقوق الطبع والنشر © Belledonne Communications
LinPhone مرخص مزدوج ، ومتاح إما:
بموجب ترخيص GNU/GPLV3 ، مجانًا (مفتوح المصدر). يرجى التأكد من أنك تفهم وموافقة على شروط هذا الترخيص قبل استخدامه (انظر ملف الترخيص للحصول على التفاصيل).
بموجب ترخيص الملكية ، مقابل رسوم ، لاستخدامها في طلبات المصدر المغلقة. اتصل بـ Belledonne Communications عن أي سؤال حول التكاليف والخدمات.
الميزات المدعومة و RFCs
Linphone Public Wiki
فيما يلي التعليمات العامة لبناء LinPhone لسطح المكتب. تم وصف التعليمات المحددة لكل منصة بناء أدناه مباشرة. ستحتاج إلى الأدوات:
cmake > = 3.22: قم بتنزيله في https://cmake.org/download/python : https://www.python.org/downloads/release/python-381/pip : إنه مضمن بالفعل داخل بيثون ، لذلك يجب أن يكون هناك ما يجب فعله حيال ذلكyasm : https://yasm.tortall.net/download.htmlnasm : https://www.nasm.us/pub/nasm/ReleaseBuilds/doxygen (مطلوب لركب CXX)Perlpystache : استخدم "Pip Install Pystache -User"six : استخدم "Pip تثبيت ستة -مستخدم"git لسطح المكتب: ستحتاج إلى QT6 ( 6.2 أو أحدث ). C++17 الدعم مطلوب!
من الضروري تثبيت أمر pip وتنفيذ:
pip install pystache six
يجب عليك تعيين متغير البيئة Qt6_DIR للإشارة إلى المسار الذي يحتوي على مجلدات CMAKE من QT6 ، PATH إلى bin QT6. مثال:
Qt6_DIR="~/Qt/6.5.3/gcc_64/lib/cmake/Qt6"
PATH="~/Qt/6.5.3/gcc_64/bin/:$PATH"
ملاحظة: إذا كان لديك أداة الطرف الثالث مثبتة qtchooser : eval "$ (qtchooser -print -env)" التصدير qt6_dir = $ {qtlibdir}/cmake/qt6 مسار التصدير = $ {qttooldir}: $ path 3. للحصول على متطلبات محددة ، انظر تعليمات النظام الأساسي أدناه.
`git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive`
`cd linphone-desktop`
`mkdir build`
`cd build`
`cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo`
`cmake --build . --parallel 10 --config RelWithDebInfo`
`cmake --install .`
`./OUTPUT/bin/linphone --verbose` or `./OUTPUT/Linphone.app/Contents/MacOS/linphone --verbose`
git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive
يتم البناء عن طريق بناء SDK والتطبيق. أهدافهم هي sdk و Linphone .
قم بإنشاء مجلد البناء الخاص بك في جذر المشروع: mkdir build انتقل إلى هذا المجلد الجديد وابدأ عملية الإنشاء: cd build
قم بإعداد خياراتك: cmake .. بشكل افتراضي ، سيحاول تجميع جميع التبعيات المطلوبة. يمكنك إزالة بعض عن طريق إضافة -DENABLE_<COMPONENT>=NO إلى الأمر. يمكنك استخدام cmake-gui .. إذا كنت ترغب في الحصول على وصول أفضل إليها. يمكنك إضافة -DCMAKE_BUILD_PARALLEL_LEVEL=<count> للقيام <count> بنيات متوازية لتسريع العملية. أيضًا ، يمكنك إضافة -DENABLE_BUILD_VERBOSE=ON للحصول على مزيد من الملاحظات أثناء إنشاء المشروع.
ملاحظة: بالنسبة لـ Makefile أو ninja ، يجب عليك إضافة -DCMAKE_BUILD_TYPE=<your_config> إذا كنت ترغب في إنشاء تكوين معين (على سبيل المثال RelWithDebInfo ).
cmake --build . --target <target> --parallel <count> (استبدل <target> الاسم الهدف و <count> بعدد البناء المتوازي). ملاحظة: بالنسبة إلى Xcode أو Visual Studio ، يجب عليك إضافة --config <your_config> إذا كنت ترغب في إنشاء تكوين معين (على سبيل المثال RelWithDebInfo ).
عندما تنتهي كل شيء ، ستكون الملفات في مجلد الإخراج في دليل الإنشاء. عند إعادة البناء ، عليك استخدام cmake --build . --target install (أو cmake --install . ) لوضع التطبيق في التكوين الصحيح.
الثنائيات داخل مجلدات أخرى (مثل build/bin/ و linphone-sdk ) ليس من المفترض أن تعمل.
عند القيام ببعض التعديلات في SDK ، يمكنك إعادة بناء SDK فقط باستخدام sdk الهدف ونفس الشيء للتطبيق مع linphone-qt-only
من أجل الحصول على الحزم ، يمكنك استخدام cmake .. -DENABLE_APP_PACKAGING=YES . ستكون الملفات في مجلد OUTPUT/packages .
قم بتحديث مشروعك بـ:
git fetch git pull -rebase
تحديث الزخارف الفرعية من فرعك الحالي
تحديث الجهاز الفرعي git -init -recursive
ثم ببساطة إعادة البناء باستخدام cmake.
-DLINPHONESDK_DOXYGEN_PROGRAM . على سبيل المثال على Mac: -DLINPHONESDK_DOXYGEN_PROGRAM=/Applications/Doxygen.app/Contents/Resources/doxygen
إذا كان بناء تعطل SDK بشيء مثل "CMD.exe فشل" ولم يعد هناك معلومات ، فقد يكون ذلك بمثابة تبعية غير متوفرة. يجب عليك التحقق مما إذا كان كل شيء في طريقك. عادة ، إذا كان الأمر يتعلق بـ VPX أو DECAF ، فقد يأتي هذا من تثبيت Perl الخاص بك.
إذا لم يبدأ التطبيق وإنشاء ملف فارغ باسم عشوائي ، فقد يأتي من تكوين سيء بين التطبيق الخاص بك والوحدات الفرعية الأخرى. تحقق من التكوينات الخاصة بك وفرضها مع -DCMAKE_BUILD_TYPE=<your_config> أو --config <your_config> .
على MAC ، يمكن للتطبيق تعطل في البداية من QOPENGLCONTEXT. يتمثل الحل البديل في إلغاء تنشيط وضع MIPMAP على الصور عن طريق إضافة ملف التكوين الخاص بك (Linphonerc): mipmap_enabled=0 في [ui] قسم.
لتثبيت التبعيات المطلوبة على Mac OS X ، يمكنك استخدام Homebrew. قبل تثبيت الحزم باستخدام Brew ، قد تضطر إلى تغيير أذونات الدلائل (إذا لم تتمكن من تغيير الأذونات مع Sudo على MacOS> = High Sierra ، فاحصل على إلقاء نظرة على إجابة Stackoverflow هذه).
تثبيت Xcode من متجر Apple. قم بتشغيله مرة واحدة على الأقل للسماح لها بتثبيت أدواتها. قد تحتاج إلى الجري:
xcode-select-التثبيت
قم بتثبيت homebrew باتباع الإرشادات هنا https://brew.sh/
تثبيت التبعيات:
Brew تثبيت Cmake PKG-Config git doxygen nasm yasm
أولا تأكد من أن لديك PIP
ثم ، يمكنك تثبيت حزمة PIP مع الأمر التالي:
تثبيت Python -M PIP [حزمة]
على سبيل المثال ، أدخل الأمر التالي:
python -m pip install pystache six graphviz
قم بتنزيل QT ، قم بتثبيت إصدار QT6 وقم بتعيين متغيرات QT6_DIR و PATH.
إذا كنت تبني على نظام ARM64 وتريد إصدار Intel ، فيجب عليك تحديد معالج X86_64 في مرحلة توليد CMake:
-dcmake_apple_silicon_processor = x86_64
بناء كالمعتاد (الخطوات العامة).
إذا تلقيت خطأً حول الوحدات النمطية التي لم يتم العثور عليها في Python ، فقد يكون ذلك لأن Cmake يحاول استخدام إصدار آخر من مسارك. قد يكون الأمر كذلك إذا قمت بتثبيت Python من Brew. تثبيت وحدات Python باستخدام المسار المطلق. على سبيل المثال:
/OPT/Homebrew/Python3 -M Pip تثبيت Pystache ستة GraphViz
لا يتم دعم الإصدار 32 بت لأن QT6 لا يوفر حزم 32 بت لـ MSVC. يتم دعم Visual Studio 2022 فقط.
MinGW/MSYS2 : تنزيلpacman -Sy --needed base-devel mingw-w64-mingw64-toolchainpacman -S python3-pip في وحدة التحكم MSYS2 MSYSpython3 -m pip install pystache six في cmdC:msys64mingw64bin ، C:msys64 و C:msys64usrbin في متغير بيئة المسار من إعدادات Windows Advanced. لا تدعم الثنائيات من مجلد MSYS (وليس من Mingw64) مسار Windows بالكامل ، وبالتالي ، يجب تجنبها. حدد -DENABLE_WINDOWS_TOOLS_CHECK=ON عند إنشاء SDK لتثبيت الأدوات المفقودة تلقائيًا من msys2: toolchain ، python ، doxygen ، perl ، yasm ، gawk ، bzip2 ، nasm ، sed ، patch ، pkg-config ، gettext ، glib2 ، intltool و graphviz (
git : استخدم MSYS2: pacman -S git أو تنزيل
يجب أيضًا تكوين Visual Studio بشكل صحيح مع الإضافات. ضمن "أدوات"-> "الحصول على الأدوات والميزات" ، تأكد من تثبيت المكونات التالية:
تأكد من تنزيل إصدار QT الصحيح على MSVC.
أو افتح سطر أوامر مع Developer Command Prompt for VS 2022 واتصل qtenv2.bat الموجود في ثنائيات QT الخاصة بك على C:Qt<version>msvc2019binqtenv2.bat المثال
بناء كالمعتاد مع إضافة -A x64 إلى cmake .. (الخطوات العامة):
cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo -A x64 البناء الافتراضي طويل جدًا. من المسلم به استخدام مولد النينجا -G "Ninja"cmake --build . --target ALL_BUILD --parallel 10 --config RelWithDebInfosudo apt تثبيت QT6-base-dev
في حالة عدم تثبيت "الوحدة النمطية" Qtquick.*"، يمكنك تثبيت هذه الحزم:
هناك تكوينات ملفات Docker حيث يمكن استرداد التبعيات.
أيضًا ، تتوفر المزيد من التكوينات في مجلد ملفات Docker من عرض Linphone-SDK.
| خيارات | وصف | القيمة الافتراضية |
|---|---|---|
| enable_app_license | تمكين الترخيص في الحزم. | نعم |
| enable_app_packaging | تمكين التغليف. سيتم نشر الحزمة في OUTPUT/packages | لا |
| enable_app_pdf_viewer | تمكين عارض PDF. بحاجة إلى وحدة QT PDF. | نعم |
| enable_app_webview | تمكين WebView للحسابات. يجب نشر محرك WebView ، ويستغرق الحجم الكبير. | لا |
| enable_app_package_rootca | قم بتضمين ملف Rootca (تسلسل جميع شهادات الجذر التي نشرتها Mozilla) في الحزمة | نعم |
| enable_build_app_plugins | تمكين بناء المكونات الإضافية | نعم |
| enable_build_examples | تمكين بناء الأمثلة | لا |
| enable_build_verbose | تمكين توليد البناء ليكون أكثر مطولاً | لا |
| enable_daemon | تمكين واجهة Linphone Daemon. | لا |
| enable_pqcrypto | تمكين ما بعد الكم ZRTP. | لا |
| enable_strict | بناء مع أعلام المركب الصارمة على سبيل المثال -سحر | لا |
| enable_tests | بناء مع ثنائيات اختبار SDK | لا |
| enable_tests_components | بناء libbctoolbox-tester | لا |
| enable_tools | تمكين أدوات SDK | لا |
| enable_unit_tests | تمكين اختبار وحدة SDK. | لا |
| enable_update_check | تمكين التحقق من التحديث. | نعم |
| linphone_sdk_make_release_file_url | قم بعمل ملف إصدار يعمل على طول check_version واستخدم عنوان URL هذا | "" " |
من أجل إرسال رقعة لإدراجها في رمز مصدر Linphone:
تأكد أولاً من أن التصحيح الخاص بك ينطبق على أحدث مصادر GIT قبل تقديمه: لا يمكن دمج التصحيحات التي تم إجراؤها على الإصدارات القديمة.
املأ وأرسل اتفاقية المساهمين لتضمين التصحيح الخاص بك في شجرة Git عن طريق الروابط التالية هناك. الهدف من هذه الاتفاقية هو منحنا الممارسة السلمية لحقوقنا في قانون مصدر LinPhone ، دون أن تفقد حقوقك على مساهمتك.
ثم انتقل إلى مستودع GitHub وقدم طلبات سحب بناءً على الرمز الخاص بك.
يرجى ملاحظة أننا لا نقدم دعمًا مجانيًا وسيتم معالجة هذه المساهمات في وقت فراغنا.
Linphone: رمز التطبيق.
النموذج: إدارة SDK التي يتم تشغيلها على موضوع SDK.
عرض: أشياء واجهة المستخدم الرسومية التي يتم تشغيلها على موضوع واجهة المستخدم.
CORE: الرمز الرئيسي الذي يربط نموذج وعرض في نمط MVVM.
البيانات: جميع البيانات غير الرمز
الأداة: المكتبة الداخلية للأدوات العامة.
Cmake: إنشاء وتثبيت البرامج النصية.
الخارج: المشاريع الخارجية.
قم بتشغيل التطبيق باستخدام المعلمة --verbose للحصول على سجلات كاملة وإرسالها بطلبك. يمكنك استخدام زر "إرسال سجلات" في الإعدادات لتحميل ملفات السجل ومشاركتها عبر البريد الإلكتروني أو مع منشور في مشروع GitHub المقابل:
في بعض نظام التشغيل (مثل Fedora 22 وما بعد ذلك) ، يقومون بتعطيل ناتج تصحيح QT بشكل افتراضي. للحصول على إخراج كامل ، تحتاج إلى إنشاء ~/.config/QtProject/qtlogging.ini وإضافة:
[Rules]
*.debug=true
qt.*.debug=false