Added new activities that will replace LinphoneActivity Added About & Dialer activities Fixed back key press Transformed Recordings fragment into activity Started Settings activity Small improvement for Recordings Finished dialer Permission shenanigans Added back History Small history improvements Fixed issue with rotation in History Started contacts More changes & fixes for Chat Improved performances when switching between activities Prevent keyboard from opening automatically on some views Added back workaround for infinite loop if screen off Fixes & improvements Some cleanup but a lot of work still left Switching back to classic fragment fixed issues Lots of fixes & improvements over History & Contacts More work on chat Small refactoring of license header Settings & Chat fixes/improvements More TODO FIXES removal Tablet fixes Fixes & improvements Fixed back button on tablets Got rid of LinphoneActivity Fixed TODO FIXME related to permissions Started chat room group info Lot of fixes & improvements over Chat Fixed sharing feature if LinphoneService isn't running Lifecycle improvements Sharing from outside app finished Fixed quit button Fixed display of missed chat/calls Clean old code for chat rooms unread message count Improved unread message count on tablets This isn't useful anymore Fixed last issue with unread count not updating in chat rooms list using new callbacks Fixed latest TODO FIXME due to CallAcitvity singleton removal Updated remaining TODOs Fixed issue with outgoing call not going to call activity once answered Fixed back key press go home feature Removed dead code Code cleanup thanks to Android Studio inspector Added back device power saver dialog + update registration state changed in menu More auto rework by Android Studio + added back checkForUpdate & isAccountWithAlias method calls More improvements, most of them on layout files Fixed secured group chat rooms creation Improved launch screen by using logo on gray background instead of default white screen Added workaround for faster display of splashscreen Removed noHistory flag on Settings, will be weird when going back from Android native settings Fixed display of call logs list in history details in landscape on smartphone depending on screen size Reorganized activities + fixed dark theme switch Manager & Service cleanup Simplified notification process More manager simplifications Moved audio manager related code from LinphoneManager to dedicated class Core accessor cleanup Exclude XmlRpc & InApp related code from standard APK + moved call related methods from LinphoneManager to CallManager Fixed click on chat bottom bar button doing nothing after going into chatroom through notification or shortcut Fixed chat message fragment update if presence is received while view has already been displayed Improved second to last commit Fixed navigation issue in chat More code improvements |
||
---|---|---|
.gitlab-ci-files | ||
.tx | ||
app | ||
docker-files | ||
gradle/wrapper | ||
linphone-sdk-android | ||
.gitignore | ||
.gitlab-ci.yml | ||
build.gradle | ||
CHANGELOG.md | ||
check_unused_resources.py | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
keystore.properties | ||
LICENSE.txt | ||
README.md | ||
settings.gradle |
Linphone is a free VoIP and video softphone based on the SIP protocol.
What's new
Now the default way of building linphone-android is to download the AAR SDK in our maven repository. Compared to previous versions, this project no longer uses submodules developper has to build in order to get a working app. However, if you wish to use a locally compiled SDK see below how to proceed.
We offer different flavors for the SDK in our maven repository: org.linphone.no-video (a build without video) and org.linphone.legacy (old java wrapper if you didn't migrate your app code to the new one yet).
The repository structure has also been cleaned and updated, and changing the package name can now be done in a single step. This allows developpers to keep a stable version as well as a developpment one on the same device easily.
Building the app
If you have Android Studio, simply open the project, wait for the gradle synchronization and then build/install the app. It will download the linphone library from our Maven repository as an AAR file so you don't have to build anything yourself.
If you don't have Android Studio, you can build and install the app using gradle:
./gradlew assembleDebug
will compile the APK file (assembleRelease to instead if you want to build a release package), and then
./gradlew installDebug
to install the generated APK in the previous step (use installRelease instead if you built a release package).
APK files are stored within ./app/build/outputs/apk/debug/
and ./app/build/outputs/apk/release/
directories.
Building a local SDK
- Clone the linphone-sdk repository from out gitlab:
git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive
-
Follow the instructions in the linphone-sdk/README file to build the SDK.
-
Edit in the linphone-sdk-android folder of this project the symbolic link (debug and/or release) to the generated AAR. We recommend to at least create the link for the release AAR that can be used for debug APK flavor because it is smaller and will reduce the time required to install the APK.
ln -s <path to linphone-sdk>/linphone-sdk/build/linphone-sdk/bin/outputs/aar/linphone-sdk-android-release.aar linphone-sdk-android/linphone-sdk-android-release.aar
ln -s <path to linphone-sdk>/linphone-sdk/build/linphone-sdk/bin/outputs/aar/linphone-sdk-android-debug.aar linphone-sdk-android/linphone-sdk-android-debug.aar
- Rebuild the app in Android Studio.
Native debugging
-
Install LLDB from SDK Tools in Android-studio.
-
In Android-studio go to Run->Edit Configurations->Debugger.
-
Select 'Dual' or 'Native' and add the path to linphone-sdk libraries.
-
Open native file and put your breakpoint on it.
-
Make sure you are using the debug AAR in the app/build.gradle script and not the release one (to have faster builds by default the release AAR is used even for debug APK flavor).
-
Debug app.
Create an APK with a different package name
Before the 4.1 release, there were a lot of files to edit to change the package name.
Now, simply edit the app/build.gradle file and change the value returned by method getPackageName()
The next build will automatically use this value everywhere thanks to manifestPlaceholders
feature of gradle and Android.
You may have already noticed that the app installed by Android Studio has org.linphone.debug
package name.
If you build the app as release, the package name will be org.linphone
.
Firebase push notifications
Now that Google Cloud Messaging has been deprecated and will be completely removed on April 11th 2019, the only official way of using push notifications is through Firebase.
However to make Firebase push notifications work, the project needs to have a file named app/google-services.json that contains some confidential informations, so you won't find it (it has been added to the .gitignore file). This means that if you compile this project, you won't have push notification feature working in the app!
To enable them, just add your own google-services.json
in the app folder.
Translations
We use transifex so the community can translate the strings of the app in their own language.
Note for developpers: here's how to push/pull string resources to/from transifex:
tx pull -af
to update local translations with latest transifex changes
tx push -s -f --no-interactive
to push new strings to transifex so they can be translated.
CONTRIBUTIONS
In order to submit a patch for inclusion in linphone's source code:
- First make sure your patch applies to latest git sources before submitting: patches made to old versions can't and won't be merged.
- Fill out and send us an email with the link of pullrequest and the Contributor Agreement for your patch to be included in the git tree.
The goal of this agreement to grant us peaceful exercise of our rights on the linphone source code, while not losing your rights on your contribution.