From 364ef2543d55e6f6424fd84518ce04798f76bc79 Mon Sep 17 00:00:00 2001 From: Lockywolf Date: Fri, 11 Feb 2022 15:20:18 +0800 Subject: [PATCH] Clarify build instructions. --- README.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1696e43d3..689af33d5 100644 --- a/README.md +++ b/README.md @@ -385,20 +385,77 @@ you can get access to the the latest beta version by signing up using [this link #### How do I build Conversations -**Note:** Starting with version 2.8.0 you will need to compile libwebrtc. -[Instructions](https://webrtc.github.io/webrtc-org/native-code/android/) can be found on the WebRTC -website. Place the resulting libwebrtc.aar in the `libs/` directory. The PlayStore release currently +##### Compiling WebRTC. + +WebRTC is a standard for Internet audio and video communication. libwebrtc, also used in the Google Chrome web browser, implementing the WebRTC standard. + +**Note:** Starting with version 2.8.0 you will need to compile libwebrtc from source because there are no fresh binary releases available to download. + +[Instructions](https://webrtc.github.io/webrtc-org/native-code/android/) can be found on the WebRTC website, however, there build method used by Conversations developers is slightly different. + +``` +mkdir -p ~/Prerequisites-for-Conversations +cd ~/Prerequisites-for-Conversations +git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +export PATH=~/Prerequisites-for-Conversations/depot_tools:$PATH +mkdir webrtc +cd webrtc +fetch --nohooks webrtc_android +# ...wait for 20Gb of stuff... +gclient sync +# ...wait for more 5Gb of stuff... +cd src +unset _JAVA_OPTS +./tools_webrtc/android/build_aar.py +``` + +It will take some time and build webrtc for all popular Android architectures. +The result will be the file `./libwebrtc.aar` + + +##### Building Conversations itself + +Place the resulting libwebrtc.aar in the `libs/` directory. The PlayStore release currently uses the stable M90 release and renamed the file name to `libwebrtc-m90.aar` put potentially you can -reference any file name by modifying `build.gradle`. +reference any file name by modifying `build.gradle`. Search for `libwebrtc-m90.aar`, and replace it with `libwebrtc.aar`. + Make sure to have ANDROID_HOME point to your Android SDK. Use the Android SDK Manager to install missing dependencies. +Alternatively (and to avoid thinking about environment variables), create a file called local.properties, in the root of the Conversations build tree, +with the following contents: + +``` +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Wed May 20 16:21:35 CST 2020 +ndk.dir=Path-To-Ndk +sdk.dir=Path-To-Sdk +``` + +Then issue the following commands in order to build the apk. + git clone https://github.com/inputmice/Conversations.git cd Conversations ./gradlew assembleConversationsFreeSystemDebug There are two build flavors available. *free* and *playstore*. Unless you know what you are doing you only need *free*. +You will find the apks in the `./build/outputs/apk/conversationsFreeSystem/debug/` directory. + +Be careful, the resulting apks will not install unless you delete your existing Conversations installation (which will delete all the messages from your phone, and if you have used OMEMO, you will not be able to restore them from the server). +Do it at your own risk. + +You, though, can make your own build a "test build", that can be installed alongside the normal (F-Droid or Google Play) Conversations: + +In the file `build.gradle`, find the line `applicationId "eu.siacs.conversations"` , and replace it with `applicationId "my.conversations.fork"`, also below replace "Conversations" appName with "MyCFork". +Then the resulting APK can be installed ALONGSIDE normal Conversations. And have a different name so it's not confusing + +WARNING: DO NOT REPLACE ANYTHING ELSE ANYWHERE ELSE, DO NOT REPLACE THIS PROJECT WIDE. JUST 2 strings in THAT specific file! [![Build Status](https://travis-ci.org/inputmice/Conversations.svg?branch=development)](https://travis-ci.org/inputmice/Conversations)