Dienstag, 18. August 2015

TextSecure without GoogleApps / with Websocket build +/- (old) Android Emojis Howto and APKs


DISCLAIMER: THIS IS UNRELEASED, UNFINISHED AND UNSUPPORTED SOFTWARE. DON'T BLAME ME IF YOUR PHONE FALLS APART / STOPS WORKING / QUETZALCOATL APPEARS. YOU WILL HAVE TO REINSTALL UPDATED VERSIONS REGULARLY AND MAY LOOSE DATA.

It's been a while since I stumbled upon the brilliant Messenger TextSecure, which I loved for it's simplicity and at the same time great cryptographic capabilities.
However, there are two things with the current releases, that still bum me a little / lot.
1) Still lacking support for Non-Google-phones
2) Ugly Apple Emoticons, that got introduced with TextSecure 2.32.2 and replaced the standard Google Emojis / Smileys
The devs seem to be unwilling to give an option to change back to the Android Emojis and at the same time don't want the Websockets or other versions to be distributed in alternative App Stores like F-Droid.

Here is the (simple) solution to both of these problems: I compiled three sets of apks that will take care of these problems and I plan on updating them on a regular basis. If you don't trust me (which is totally acceptable for me - in fact it's very good - you shouldn't trust anyone offering apks outside the Play Store), I'll give you a tutorial on how to build these Versions on your own.
UPDATE: There now is also a F-Droid repo (not by me). Trust at your own risk. More info on the github page.

Caution: Some users experienced a high battery drain (up to 5 times higher than the standard Google Apps Version) with the WebSockets Version.


FlavourTextSecure base versionMD5 ChecksumLink
Google Apps with Android Emojis2.25.3 4b214811f6e562e43696f35968eb918dDownload
Websockets (No GApps) with (Standard) Apple Emojis2.25.274d2f0086fd2baa570dab93f3c2a74d0Download
Websockets (No GApps) with (old) Android Emojis2.25.26b851a068475e7340037c012443392ccDownload

How to install

  1. If you already have TextSecure installed, back it up (either use Titanium backup (1) to back up <our conversations and Images or back it up via ADB (2) [warning: Importing the ADB backup doesn't work for on variety of Android phones])
  2. In order to install .apk files go to Settings - Security - tick "Unknown sources"
  3. Download / build your preferred version. Safe to your phone.
  4. Execute file. 
  5. (Import your ADB backup (2) or register again (1) and Import your Data Backup via Titanium backup)
  6. After registering again your contacts will get prompted to verify your new identity upon your next conversation.

How to build

Instructions tested on Ubuntu 15.04 and Fedora 22. Should work similar on every other OS.

Standard version (requires Google Apps) with Android Emojis

Prerequisites: You are building a regular TS version, the only thing you have to do is to revert two Github commits to the standard TextSecure build. Basically follow the TS-Wiki entry for building TS. The two commits are 9a18be0 and 282f139.

Option 1 (not recommended): You could do this by forking the project on Github, pulling it onto your computer and revert the changes in your with the commands
- git clone https://github.com/%yourusername%/TextSecure.git TextSecure
- cd TextSecure

- git revert 9a18be0
- git commit -m "First revert"
// Close opening window by pressing F2
- git push
// Enter your username / password

- git revert 282f139- git commit -m "Second revert"
// Close opening window by pressing F2
- git push
// Enter your username / password
Option 2 (recommended, more simple): Just pull two different versions (one with the old emojis and one with the current emojis) and change the files manually. You can pull these files either with Github or "Download Zip" of current TS master and TS 2.21.0.
Now replace the following files in the current TS with their TS 2.21.0 counterparts:
  • assets/emoji-nature.png  
  • assets/emoji-objects.png   
  • assets/emoji-people.png  
  • assets/emoji-places.png   
  • assets/emoji-symbol.png  
  • src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java   
  • src/org/thoughtcrime/securesms/components/emoji/EmojiView.java  
Another way would be just pulling the release from my Github page, either by Downloading the Zip or pulling it with the "git clone" command in terminal ("git clone https://github.com/mad-de/TextSecure.git TextSecure").

Now just build it with your AndroidSDK. If you're unsure about how to do it, better
stick with the build instructions from the TS wiki.

Websocket Version (doesn't require Google Apps)

Prerequisites: You have to use JavaJens brilliant TS Websockets fork. Stick with the Websockets build Wiki page. For a successful build, in most situations you will have to create a "local.properties" file in the libtextsecure-java and TextSecure main folder with the following line:
sdk.dir=/home/%USER%/Android/Sdk
or whatever the Path to your AndroidSDK may be (the build instructions don't point that out...). Now just open up the projects in your Android SDK and install all the Dependencies that will pop up (Android SDK will search them for you). For everything else, follow the build instructions.  Build it by selecting the 'websockets' build type and the 'prod' flavour (otherwise you can't connect with other people using the regular TS version, as the staging server (staging flavour) is for testing purposes only).
If you get an error about a failing checksum, that currently probably is a problem caused by this change and is best worked around by deleting the
com.android.support:support-v4
com.android.support:support-annotations
lines in the "dependencyVerification" part of the build.gradle file.

Other workaround would be (taken from the Build wiki Page):
Update the gradle-witness sha256 checksum for the new version of libtextsecure-java that you just built, so that dependency verification works:
cd ~/.m2/repository/org/whispersystems/textsecure-android/2.6.2
cat textsecure-android-2.6.2.aar | sha256sum
$EDITOR TextSecure/build.gradle 
You will need to copy and paste the sha256 from the aar file over the line that looks like:
'org.whispersystems:textsecure-android:28d3cb7ee8ac8437f148b9b4f689546d1393287798f0f09acbe21716c8aee8d0'

Websocket Version (doesn't require Google Apps) with old Android Emojis

If you want the old Android smileys back, just refer to the build instructions above to replace the necessary files before building the TextSecure apk. You can also pull my Websocket branch with the Android Emojis.

Fin.

For the Websocket Version, please thank Github user JavaJens for his outstanding work. You can currently help by giving feedback about the energy consumption.

For the Android Emoji version, there are a lot of people around who pointed out the specific commits as well as the files to change. Thanks to all of you.