How to Clone any Application (Dual Apps) with EMUI’s App Twin Feature [No Root]

Huawei introduced the App Twin feature with Version 5.0 of Huawei’s EMUI, their Android skin. I believe that Huawei must consider this feature one of EMUI’s biggest selling points, since they present it in the topmost layer of the Settings application.

App Twin allows you to create a duplicate instance of an installed application so you can log-in to two different accounts at the same time. On Huawei Smartphones destined for the European Market with the Global Rom you’re able to clone WhatsApp or Facebook. On the equivalent Model for the Chinese Market you’re able to duplicate QQ or Wechat. Unfortunately these are your only options by default. I expect Huawei to add more applications to this list with upcoming version of EMUI.

When you duplicate one of those applications, a new app icon will be created on your home to start the cloned instance of the app. A small number is added to the original application icon to indicate which instance you’re using the cloned or the original application. Unfortunately, the duplicate application can only exist on Huawei’s stock launcher, and when the icon is cleared from the home screen, all the data associated with the App Twin instance is deleted.

The App Twin feature isn’t an innovative, never to be seen before concept on part of Huawei. There are several applications that perform the same function on the Google Play Store. Some of the most popular ones include App Cloner and Paralllel Space. In addition, Xiaomi’s MUI offers the same feature with greater compatibility and a larger selection of Applications. However, I would argue that by default, the third-party application alternatives are to some extent superior to Huwai’s implementation. Any application which you duplicate isn’t tied to Huawei’s stock EMUI launcher and even more importantly you aren’t limited to only 2 predetermined applications which Huawei has set.

In contrast, the third-party applications (with the exception of Xiaomi’s MIU implementation) have their own faire share of disadvantages. For example, App Cloner doesn’t work well on many applications including most Google Apps. Parallel Space is a pretty bloated application and quite the resource hog and is slow to launch any given cloned application.

I have to give Huawei credit to its implementation of the App Twin feature since it doesn’t suffer from either of this issues. However, for some odd reason Huawei decided to restrict the feature to a few apps. Despite their official claim that App Twin only works with WhatsApp/Facebook or QQ/Wechat it can actually work with pretty much any application on your device (with the exception of a few system application)

Clone any App with EMUI’s APP-Twin Feature

To clone any app you need access to the ADB shell and the application’s full package name.

First download the android SDK with the included ADB and fastboot tools or download the separate ADB binaries straight from Google:

Next install Huawei’s HiSuite which also installs the necessary drivers for ADB to work correctly. In order to be able to see the your Huawei smartphone you need to enable USB debugging in the developer settings:

Settings –> Developer options –> USB Debugging
(Tap on Build Number 7 times in Settings –> About Phone to unlock Developer options if you haven’t already done so)

Verify that ADB is set up properly by checking if adb recognises your device. Open up a command prompt and type adb devices . If you see your phone’s serial number and it doesn’t state ‘unauthorised’ then you’re good to go.

The first step in enabling the App-Twin Feature for your specific app is to find the package name of the specific application. The easiest way to accomplish this using an app like App Inspector From the Google Play Store

The package name is the first line underneath the app’s name e.g. com.google.android.apps.plus

If you don’t want to install another app just to see the package name of an installed application you can also see a list of all installed application using the following adb shell command: adb shell 'pm list packages -f

With the package name we can now enable the App-Twin feature. Start an adb shell with adb shell

Once in the adb shell enter the following command:

settings get secure clone_app_list

If you are already using the App Twin feature, then you should see either one or two package names returned with this command. If you aren’t using this feature, this string will be empty. Now, we will either append to the existing list or create a new list of apps to clone.

settings put secure clone_app_list "PACKAGE#1;PACKAGE#2;PACKAGE#3"

where PACKAGE#1…PACKAGE#3…PACKAGE#N is the full semi-colon separated list of app packagesyou want cloned. Make sure that you don’t forget to put the package list in-between quotation marks, otherwise the command won’t work.

If you are already using the App Twin feature and you received a list of packages during the“get”command, then be sure to APPEND your list to the ones that were returned. Otherwise, the existing apps will be deleted.

For example, if I want to clone Gmail, Solid Explorer, Chromium, and Reddit is Fun, I would enter the following command:

settings put secure clone_app_list "com.google.android.gm;pl.solidexplorer2;org.chromium.chrome;com.andrewshu.android.reddit"

Immediately after entering this command, you should see a toast message telling you that a cloned app has been placed on your home screen.

How to remove the Adobe Acrobat Update service after uninstalling Acrobat Reader

For reasons unknown to me, Adobe leaves their Adobe Update Service installed and running after you have uninstalled Adobe Acrobat Reader DC. The issue is that the Adobe Update Service seems to hog resources when the program the updater is supposed to update has been uninstalled. As a result it can start to slow down your system and system start-up time. The following guide will show you how to completely remove the Acrobat Update Service.

The Adobe Acrobat Update service has no practically measurable impact on system performance when it’s working as it should. However, if you uninstall Adobe Acrobat Reader, the service will report high I/O usage when you login to Windows.

I assume you have uninstalled Acrobat Reader DC to remove this piece of **** from your system with its security vulnerabilities. Therefore you have no use for the update services.

If you haven’t done so already: remove Acrobat Reader DC from Apps and Programs in Windows’ Control Panel: Uninstall a program etc.

Removing Adobe Update Service

  • Open Administrative Power Shell (Search for PowerShell in the StartMenu) and right-click: “Run as Administrator” / Alternatively, you can also use and administrative command prompt
  • Disable and delete the Adobe Update Service
sc.exe stop AdobeARMservice 
sc.exe delete AdobeARMservice
  • Delete the remaining files from the Adobe Update Service
del "%PROGRAMFILES(X86)%\Common Files\Adobe\ARM\"

I am curious to why Adobe left the service installed after the removal of Acrobat Reader. I assume it’s possible that Adobe decided to leave it installed in case you would change your mind and reinstall the Acrobat Reader later. However, this doesn’t really make any sense since the service would be reinstalled and overwritten on the reinstallation of Acrobat Reader.

Apart from that, other Adobe software all use their own updater services so this appears to be a bug in the install / uninstall routine. I’ve reported this issue to Adobe but haven’t heard back from tham. This howto should help you to get rid of Adobe Acrobat Reader DC completely.

Migrating emails from one server to another using imap

I recently switched the email hosting from one provider to another. I always set email up as IMAP so the mail is stored and can be accessed and synchronised on multiple devices. This ‘How to’ is based on you having a similar setup. There are tools out there that perform this task automatically but being a control freak I wanted to do this manually to ensure all went well.

Presumptions:

  • You have an IMAP mail account on one server, and you want to migrate this account and the messages to another server.
  • The old server is still up and running and the nameservers still point to the existing hosting (e.g. the server you are migrating the messages from)
  1. Create a mail account with the new provider that exactly mirrors settings of the existing account on the old provider e.g. same user, same password, same email address
  2. Install an additional email client on your desktop system – I recommend a separate client from your main client in case it all goes awry. I’ve successfully tested it with the same client when using Thunderbird 3 but ymmv.
  3. Set up the old mail account in thunderbird  (the provider you’re migrating from)
  4. Important: Ensure the account is setup as IMAP in Thunderbird
  5. Deselect any default junk mail options (This stops Thunderbird  from automatically moving mails to different mail boxes)
  6. Let Thunderbird connect to the old mail account and download all emails
  7. Set up the new mail account in thunderbird (the provider you’re migrating to) – You will need to use the ip address of the new server as the imap and smtp dns names aren’t pointing to the new provider yet
  8. Once Thunderbirds has connected and and set up the inbox you will need to create the folder in the new mail account, mirroring the folders in the old account on the old servers
  9. In the OLD Mail account (the one you are migrating from), select each mail folder, CTRL+A to select all the messages, right click and choose ‘Copy to…’ and select the equivalent folder on the NEW server version of the account
  10. Repeat step 9 for all folders/messages in the account (don’t forget the Sent items!)

Upgrading Debian 8 ‘Jessie’ to Debian 9 ‘Stretch’

Intro

Debian 9 Stretch was released as the latest stable version of the Linux Distribution: Debian. While it’s always possible to install Debian 9 fresh from scratch, it’s also possible to perform an in-place upgrade from Debian 8. The following post describes the necessary steps to do so.

For a incredibly thorough documentation of the process, I suggest you also read through the official release notes.

Notes:

  • Upgrading to Debian 9 Stretch is only supported from Debian 8 Jessie. If you are running a version older than 8, you must first upgrade to 8 before working through this process.
  • The upgrade involves a kernel update, so a reboot will be required toward the end of the process.
  • It is strongly recommended that you have a full system backup or backup of any important data before proceeding with the upgrade, ensure that you have a plan to roll back. In the case of a virtual machine, take a snapshot before starting.

Performing the upgrade to Debian 9 Stretch

Before proceeding with the upgrade, please read through the list of issues to be aware of when upgrading to Stretch.

  1. It is recommended that you have your Debian 8 Jessie installation completely up to date before starting, to do this run “apt-get update” followed by “apt-get upgrade” and install available updates.
root@debian8:~# apt-get update
root@debian8:~# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

In this case all updates have been applied already, so it’s fine to proceed.

Edit the /etc/apt/sources.list file, my file is shown below. As you can see all of the lines are currently specifying “jessie”. Note that your mirror sources will likely be different which is fine.

deb http://ftp.ch.debian.org/debian/ jessie main
deb-src http://ftp.ch.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib

# jessie-updates, previously known as 'volatile'
deb http://ftp.ch.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.ch.debian.org/debian/ jessie-updates main contrib

Change the instances of “jessie” to “stretch”, you can either do this manually, or automatically with the below sed command.

sed -i 's/jessie/stretch/g' /etc/apt/sources.list

You can either use “stretch” or “stable”, as Debian 9 Stretch is now the current stable version as of writing. However note that if you use stable instead of the specific release name, in future when Debian 10 is released that will be the stable version so you may upgrade to that unintentionally.

The recommended way to upgrade Debian is with the ‘apt-get’ command. First update the list of available packages with the below command, as we’ve just updated the sources.list file.

apt-get update

Use “apt list –upgradable” command to quickly see what will be installed, updated, and removed during the upgrade process without affecting the system.

apt list --upgradable

Sample Output:

unattended-upgrades/stable 0.93.1+nmu1 all [upgradable from:0.83.3.2+deb8u1]
util-linux/stable 2.29.2-1 amd64 [upgradable from: 2.25.2-6]
uuid-runtime/stable 2.29.2-1 amd64 [upgradable from: 2.25.2-6]
vim/stable 2:8.0.0197-4 amd64 [upgradable from: 2:7.4.488-7+deb8u3]
vim-common/stable 2:8.0.0197-4 amd64 [upgradable from: 2:7.4.488-7+deb8u3]
vim-runtime/stable 2:8.0.0197-4 all [upgradable from: 2:7.4.488-7+deb8u3]
vim-tiny/stable 2:8.0.0197-4 amd64 [upgradable from: 2:7.4.488-7+deb8u3]

Now that the list of available packages has been updated from the mirror, run the below command to perform a minimal upgrade.

apt-get upgrade

This is known as a minimal system upgrade as it only upgrades packages that can be upgraded without needing any other packages to be removed or installed, so it’s a safe place to start. This upgraded 932 packages requiring 412MB on my system.

Now you’re ready to do the complete system upgrade, this will upgrade to the latest available version for all packages installed.

apt-get dist-upgrade

Ensure that you have enough free disk space to complete the operation, in my case it notes that afterwards 1,048MB of additional disk space will be used with 639 package upgrades and 479 newly installed packages.

During the distribution upgrade, services installed on your system needs to be restarted after up gradation of each service packages (ex. Apache, NTP) which may cause you the service interruptions. You can choose to restart automatically during upgrade or manually after the upgrade. Here, I opted to do “an automatic restart of services during the OS upgrade“.

Verify upgrade:

Reboot your machine after the distribution upgrade.

reboot

Verify the current version of Debian operating system.

lsb_release -a

Distributor ID: Debian
Description: Debian GNU/Linux 9.0 (stretch)
Release: 9.0
Codename: stretch