[GUIDE] Build Rom from Source For Tissot

Search This thread
What is ?
Android is the open-source operating system used for smartphones. Full Freedom for people using it

What is Source Code?
Android is an open-source software stack created for a wide array of devices with different form factors. The primary purposes of are to create an open software platform available for carriers, OEMs, and to make their innovative ideas a reality and to introduce a successful, real-world product that improves the mobile experience for users.The result is a full, production-quality consumer product with source code open for customization and porting.
So basically Allows to customize the things you like and make new things without any Restrictions. Cool isn’t it?

What is ROM ?
The ROM is the operating system. This is the User interface (Sense UI in HTC phones) and the file system for maintaining contacts etc. It is composed of a Linux kernel and various add-ons to achieve specific functionality.

What does a Rom Contain ?
Basically a Rom Contains following main things :
· Kernel
· Bootloader
· Recovery
· Radio
· Framework
· Apps
· core
· -runtime,Etc

Some Basics About Above Terms
Kernel :
A kernel is critical component of the and all operating systems. It can be seen as a sort of bridge between the applications and the actual hardware of a device. devices use the Linux kernel, but it's not the exact same kernel other Linux-based operating systems use. There's a lot of specific code built in, and Google's kernel maintainers have their work cut out for them. OEMs have to contribute as well, because they need to develop hardware drivers for the parts they're using for the kernel version they're using. This is why it takes a while for independent and hackers to port new versions to older devices and get everything working. Drivers written to work with the Gingerbread kernel on a phone won't necessarily work with the Ice Cream Sandwich kernel. And that's important, because one of the kernel's main functions is to control the hardware. It's a whole lot of source code, with more options while building it than you can imagine, but in the end it's just the intermediary between the hardware and the software. So basically if any instruction is given to mobile it first gives the command to kernel for the particular task execution.

Bootloader :
The bootloader is code that is executed before any Operating System starts to run. Bootloaders basically package the instructions to boot operating system kernel and most of them also have their own debugging or modification environment. Think of the bootloader as a security checkpoint for all those partitions. Because if you’re able to swap out what’s on those partitions, you’re able to break things if you don’t know what you’re doing. So basically it commands the kernel of your device to Boot the Device properly without any issues. So careful with bootloader since it can mess things very badly.

Recovery :
Recovery is defined in simple terms as a source of backup. Whenever your phone firmware is corrupted, the recovery does the job in helping you to restore or repair your faulty or buggy firmware into working condition. It is also used for flashing the Rom’s , kernel and many more things.

Radio
The lowest part of software layer is the radio: this is the very first thing that runs, just before the bootloader. It control all wireless communication like GSM Antenna, GPS etc.

What you’ll need
  • A relatively recent 64-bit computer (Linux, OS X, or Windows)(Virtual Machine will work as well) with a reasonable amount of RAM and about 100 GB of free storage (more if you enable ccache or build for multiple devices). The less RAM you have, the longer the build will take (aim for 8 GB or more). Using SSDs results in considerably faster build times than traditional hard drives.
  • A decent internet connection & reliable electricity :)
  • Some familiarity with basic operation and terminology. It would help if you’ve installed custom roms on other devices and are familiar with recovery. It may also be useful to know some basic command line concepts such as cd for “change directory”, the concept of directory hierarchies, that in Linux they are separated by /, etc.

Install the SDK

If you haven’t previously installed adb and fastboot, you can download them from Google. Extract it running:

Code:
unzip platform-tools-latest-linux.zip -d ~

Now you have to add adb and fastboot to your PATH. Open ~/.profile and add the following:

Code:
# add  SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi

Then, run source ~/.profile to update yur environment.

Install the build packages
Several packages are needed to build LineageOS. You can install these using your distribution’s package manager.

To build LineageOS, you’ll need:
  • bc bison build-essential curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
For Ubuntu versions older than 16.04 (xenial), substitute:
  • libwxgtk3.0-dev → libwxgtk2.8-dev

Java
Different versions of LineageOS require different JDK (Java Development Kit) versions.


Create the directories
You’ll need to set up some directories in your build environment.

To create them:
Code:
mkdir -p ~/bin
mkdir -p ~//lineage

Install the repo command

Enter the following to download the repo binary and make it executable (runnable):

Code:
curl [url]https://storage.googleapis.com/git-repo-downloads/repo[/url] > ~/bin/repo
chmod a+x ~/bin/repo

Put the ~/bin directory in your path of execution

In recent versions of Ubuntu, ~/bin should already be in your PATH. You can check this by opening ~/.profile with a text editor and verifying the following code exists (add it if it is missing):

Code:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
Then, run source ~/.profile to update your environment.

Initialize the LineageOS source repository
Code:
cd ~//lineage
repo init -u [url]https://github.com/LineageOS/.git[/url] -b lineage-15.1

Download the source code
Code:
repo sync -c -f  --force-sync --no-clone-bundle --no-tags --optimized-fetch --prune

Prepare the device-specific code
Code:
git clone [url]https://github.com/TheScarastic/android_device_xiaomi_msm8953-common[/url] -b lineage-15.1 device/xiaomi/msm8953
git clone [url]https://github.com/TheScarastic/android_device_xiaomi_tissot[/url] -b lineage-15.1 device/xiaomi/tissot
git clone [url]https://github.com/TheScarastic/proprietary_vendor_xiaomi[/url] -b lineage-15.1 vendor/xiaomi
git clone [url]https://github.com/Tissot-Development/android_kernel_xiaomi_tissot[/url] -b 8.1 kernel/xiaomi/msm8953

Turn on caching to speed up build
Code:
export CCACHE_DIR=./.ccache
ccache -C
export USE_CCACHE=1
export CCACHE_COMPRESS=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G

Configure jack
Jack is the new Java compiler used when building LineageOS 14.1. It is known to run out of memory - a simple fix is to run this command:
Code:
export _JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"

Make Clean Build
Code:
make clean

Initialize the build command
Code:
source build/envsetup.sh

Start Build
Code:
croot
brunch tissot

For More info:

Hi,
Had a query if we build a ROM using this method can we share it with our friends having the same mobile phone - MiA1. Does the build require to be signed or is any process to be followed before sharing with others.
 
Last edited by a moderator:

arunassain

Senior Member
Jun 17, 2015
350
654
chennai
Hi,
Had a query if we build a ROM using this method can we share it with our friends having the same mobile phone - MiA1. Does the build require to be signed or is any process to be followed before sharing with others.
Yup u can share this ROM but don't share it in XDA bcz these builds are already done by many developers and u will face issue this thread for reference of building ROMs and los is easy to build but others source errors will occur so u need to fix that and build so better learn first
Thanks:)
 
  • Like
Reactions: ManojNairOnline
Yup u can share this ROM but don't share it in XDA bcz these builds are already done by many developers and u will face issue this thread for reference of building ROMs and los is easy to build but others source errors will occur so u need to fix that and build so better learn first
Thanks:)
Thanks for the response Arun. Will follow your advice.
 

dback31

Senior Member
Sep 10, 2016
233
81
Hey, I'm currently trying to build unofficial LOS 15.1 with the device tree and kernel source from the Lineage GitHub.

https://github.com/LineageOS/android_device_xiaomi_tissot
https://github.com/LineageOS/android_device_xiaomi_msm8953-common
https://github.com/TheScarastic/proprietary_vendor_xiaomi (not sure if this is needed, however I cloned it into vendor/xiaomi :))

After I type "brunch tissot" I get the following error

Code:
[44/44] bootstrap /home/luis/android/l...ut/soong/.minibootstrap/build.ninja.in
[4/4] /home/luis/android/lineage/out/s...neage/out/soong/.bootstrap/build.ninja
[872/873] glob vendor/qcom/opensource/interfaces/wifi/*/Android.bp
[56/56] /home/luis/android/lineage/out.../android/lineage/out/soong/build.ninja
/home/luis/android/lineage/out/build-lineage_tissot.ninja is missing, regenerating...
[133/1084] including ./device/xiaomi/tissot/Android.mk ...
[B]build/core/base_rules.mk:238: [COLOR="Red"]error:[/COLOR] device/xiaomi/tissot/rootdir: MODULE.TARGET.ETC.init.tissot.rc already defined by device/xiaomi/tissot/rootdir.[/B]
17:45:20 ckati failed with: exit status 1

[COLOR="red"]#### failed to build some targets (34 seconds) ####[/COLOR]

Can you help me to fix this please? :)

Edit: In ~/android/lineage/device/xiaomi/tissot/rootdir/android.mk I changed

Code:
include $(CLEAR_VARS)
LOCAL_MODULE       := init.tissot.rc
LOCAL_MODULE_TAGS  := optional eng
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES    := init.tissot.rc
LOCAL_MODULE_PATH  := $(TARGET_OUT_VENDOR_ETC)/init
include $(BUILD_PREBUILT)

to

Code:
#include $(CLEAR_VARS)
#LOCAL_MODULE       := init.tissot.rc
#LOCAL_MODULE_TAGS  := optional eng
#LOCAL_MODULE_CLASS := ETC
#LOCAL_SRC_FILES    := init.tissot.rc
#LOCAL_MODULE_PATH  := $(TARGET_OUT_VENDOR_ETC)/init
#include $(BUILD_PREBUILT)

and now it seems to work :)

Edit 2: Now I'm getting this error

Code:
[  5% 5085/99598] Lex: applypatch <= bootable/recovery/edify/lexer.ll
FAILED: /home/luis/android/lineage/out/target/product/tissot/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp 
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -o/home/luis/android/lineage/out/target/product/tissot/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
[  5% 5090/99598] target StaticLib: libv8src (/home/luis/android/lineage/out/target/product/tissot/obj/STATIC_LIBRARIES/libv8src_intermediates/libv8src.a)
ninja: build stopped: subcommand failed.
20:37:34 ninja failed with: exit status 1

[COLOR="Red"]#### failed to build some targets (11:44 (mm:ss)) ####[/COLOR]

Edit 3: Seems like this is an issue with Ubuntu 18.04 which is fixed by entering "export LC_ALL=C" before the build command.
 
Last edited:
  • Like
Reactions: meltbanana

ahadrox

Senior Member
Just wanted to know that can I build Oreo roms properly / without any problems in this pc configuration?
intel i7 8700 (Non K)
gigabyte aorus B360M gaming 3 motherboard
8GB DDR4 2400MHz RAM
1TB 7200 RPM Hard Drive
120GB SSD (For installing the OS)
 

dback31

Senior Member
Sep 10, 2016
233
81
Just wanted to know that can I build Oreo roms properly / without any problems in this pc configuration?
intel i7 8700 (Non K)
gigabyte aorus B360M gaming 3 motherboard
8GB DDR4 2400MHz RAM
1TB 7200 RPM Hard Drive
120GB SSD (For installing the OS)

I'm building with
i5-4670
8GB DDR3
250GB SSD
1TB HDD

If you want to build on your SSD you might need more disk space, but if you build on your HDD then go for it :)

First build takes about 4-5 hours for me, after that around 2 1/2 hours :)

Edit: I recommend you to build on Ubuntu 16.04 as I had errors on 18.04
 
Last edited:

dback31

Senior Member
Sep 10, 2016
233
81
So, if I go with HDD, how many hours do I gona needed?

Can't tell you, I built on my SSD without ccache compression and had about ~20GB space left.
I first tried to build on my HDD but had errors with 18.04 and started clean on my SSD with 16.04
From what I observed it was significantly faster on my SSD though
 
Update: @arunassain Please ignore my question below. I was able to get my build working with the latest source code. Looks like some test keys have been added in the source which lets the ROM boot.
Thanks all the same for this wonderful article. I learnt my abc of ROM building from this article!!!.
regards,
Manoj

@arunassain had a question. I was trying to build this ROM again with the latest source code. The build completes successfully the ROM booted but it does not go into the setup screens. The lineage animation keeps looping. Is it not possible to build unofficial versions of the ROM after it has been made official. I was wondering if the code is now checking if the ROM is signed before starting the setup. Never had this problem earlier...before July 21 (i think it went official around then). The earlier builds from the same source used to work perfectly for the tissot.
Thanks in advance.
 
Last edited by a moderator:
  • Like
Reactions: arunassain

KiD3991

Inactive Recognized Contributor
Dec 21, 2012
1,250
1,103
How do you make it flashable though?
Like just find a zip file and just throw all the .img from the out folder? Or what? I am very new to this.
 

saski4711

Senior Member
Jul 9, 2016
518
131
Trying to compile current Resurrection Remix ROM for TISSOT. Had no problems building the ROM so far. After epo sync now I get this when I breakfast :

build/core/product_config.mk:243: *** _nic.PRODUCTS.[[device/xiaomi/tissot/rr.mk]]: "frameworks/native/build/phone-xxhdpi-3072-hwui-memory.mk" does not exist. Stop.
build/core/product_config.mk:243: *** _nic.PRODUCTS.[[device/xiaomi/tissot/rr.mk]]: "frameworks/native/build/phone-xxhdpi-3072-hwui-memory.mk" does not exist. Stop.

** Don't have a product spec for: 'rr_tissot'
** Do you have the right repo manifest?

Any Idea what happened?
 

ProchyGaming

Senior Member
May 28, 2016
305
143
Stupava
OnePlus 8T
I've been getting this, tho I'm sure it has nothing to do with the rom not building "Trying dependencies-only mode on anon-existing device tree?" What does this even mean? And another thing I'm getting all the time is this "/root/simplix/out/build-simplix_tissot.ninja is missing, regenerating..."
 

Anticolick

Member
Sep 2, 2016
35
6
How can i fix it ?
build/core/base_rules.mk:238: error: device/xiaomi/msm8953/data-ipa-cfg-mgr/hal: MODULE.TARGET.SHARED_LIBRARIES.liboffloadhal already defined by device/xiaomi/msm8953-common/data-ipa-cfg-mgr/hal.
23:52:20 ckati failed with: exit status 1

#### failed to build some targets (02:02 (mm:ss)) ####
 

arunassain

Senior Member
Jun 17, 2015
350
654
chennai
How can i fix it ?
build/core/base_rules.mk:238: error: device/xiaomi/msm8953/data-ipa-cfg-mgr/hal: MODULE.TARGET.SHARED_LIBRARIES.liboffloadhal already defined by device/xiaomi/msm8953-common/data-ipa-cfg-mgr/hal.
23:52:20 ckati failed with: exit status 1

#### failed to build some targets (02:02 (mm:ss)) ####
There is two data-ipa-cfa-mgr so better remove one and build it
 

Mirdeusz

Senior Member
Feb 6, 2016
435
118
Is it possible to build older versions of android? My fav cm 11 for ex. Thanks.

Wysłane z mojego MI A1 przy użyciu Tapatalka
 

sdeft

Senior Member
Nov 22, 2008
617
133
@arunassain

Just want to clarify the differences between android_device_xiaomi_msm8953-common and android_device_xiaomi_tissot.
Are you building crdroid with both trees or only one of them ?
 

arunassain

Senior Member
Jun 17, 2015
350
654
chennai
@arunassain

Just want to clarify the differences between android_device_xiaomi_msm8953-common and android_device_xiaomi_tissot.
Are you building crdroid with both trees or only one of them ?
See there is two DT one which is official and another made by team Oreo and now official tree mentioned in OP
crDroid was build by team Oreo tree
 

Top Liked Posts

  • There are no posts matching your filters.
  • 33
    What is ?
    Android is the open-source operating system used for smartphones. Full Freedom for people using it

    What is Source Code?
    Android is an open-source software stack created for a wide array of devices with different form factors. The primary purposes of are to create an open software platform available for carriers, OEMs, and to make their innovative ideas a reality and to introduce a successful, real-world product that improves the mobile experience for users.The result is a full, production-quality consumer product with source code open for customization and porting.
    So basically Allows to customize the things you like and make new things without any Restrictions. Cool isn’t it?

    What is ROM ?
    The ROM is the operating system. This is the User interface (Sense UI in HTC phones) and the file system for maintaining contacts etc. It is composed of a Linux kernel and various add-ons to achieve specific functionality.

    What does a Rom Contain ?
    Basically a Rom Contains following main things :
    · Kernel
    · Bootloader
    · Recovery
    · Radio
    · Framework
    · Apps
    · core
    · -runtime,Etc

    Some Basics About Above Terms
    Kernel :
    A kernel is critical component of the and all operating systems. It can be seen as a sort of bridge between the applications and the actual hardware of a device. devices use the Linux kernel, but it's not the exact same kernel other Linux-based operating systems use. There's a lot of specific code built in, and Google's kernel maintainers have their work cut out for them. OEMs have to contribute as well, because they need to develop hardware drivers for the parts they're using for the kernel version they're using. This is why it takes a while for independent and hackers to port new versions to older devices and get everything working. Drivers written to work with the Gingerbread kernel on a phone won't necessarily work with the Ice Cream Sandwich kernel. And that's important, because one of the kernel's main functions is to control the hardware. It's a whole lot of source code, with more options while building it than you can imagine, but in the end it's just the intermediary between the hardware and the software. So basically if any instruction is given to mobile it first gives the command to kernel for the particular task execution.

    Bootloader :
    The bootloader is code that is executed before any Operating System starts to run. Bootloaders basically package the instructions to boot operating system kernel and most of them also have their own debugging or modification environment. Think of the bootloader as a security checkpoint for all those partitions. Because if you’re able to swap out what’s on those partitions, you’re able to break things if you don’t know what you’re doing. So basically it commands the kernel of your device to Boot the Device properly without any issues. So careful with bootloader since it can mess things very badly.

    Recovery :
    Recovery is defined in simple terms as a source of backup. Whenever your phone firmware is corrupted, the recovery does the job in helping you to restore or repair your faulty or buggy firmware into working condition. It is also used for flashing the Rom’s , kernel and many more things.

    Radio
    The lowest part of software layer is the radio: this is the very first thing that runs, just before the bootloader. It control all wireless communication like GSM Antenna, GPS etc.

    What you’ll need
    • A relatively recent 64-bit computer (Linux, OS X, or Windows)(Virtual Machine will work as well) with a reasonable amount of RAM and about 100 GB of free storage (more if you enable ccache or build for multiple devices). The less RAM you have, the longer the build will take (aim for 8 GB or more). Using SSDs results in considerably faster build times than traditional hard drives.
    • A decent internet connection & reliable electricity :)
    • Some familiarity with basic operation and terminology. It would help if you’ve installed custom roms on other devices and are familiar with recovery. It may also be useful to know some basic command line concepts such as cd for “change directory”, the concept of directory hierarchies, that in Linux they are separated by /, etc.

    Install the SDK

    If you haven’t previously installed adb and fastboot, you can download them from Google. Extract it running:

    Code:
    unzip platform-tools-latest-linux.zip -d ~

    Now you have to add adb and fastboot to your PATH. Open ~/.profile and add the following:

    Code:
    # add  SDK platform tools to path
    if [ -d "$HOME/platform-tools" ] ; then
        PATH="$HOME/platform-tools:$PATH"
    fi

    Then, run source ~/.profile to update yur environment.

    Install the build packages
    Several packages are needed to build LineageOS. You can install these using your distribution’s package manager.

    To build LineageOS, you’ll need:
    • bc bison build-essential curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
    For Ubuntu versions older than 16.04 (xenial), substitute:
    • libwxgtk3.0-dev → libwxgtk2.8-dev

    Java
    Different versions of LineageOS require different JDK (Java Development Kit) versions.


    Create the directories
    You’ll need to set up some directories in your build environment.

    To create them:
    Code:
    mkdir -p ~/bin
    mkdir -p ~//lineage

    Install the repo command

    Enter the following to download the repo binary and make it executable (runnable):

    Code:
    curl [url]https://storage.googleapis.com/git-repo-downloads/repo[/url] > ~/bin/repo
    chmod a+x ~/bin/repo

    Put the ~/bin directory in your path of execution

    In recent versions of Ubuntu, ~/bin should already be in your PATH. You can check this by opening ~/.profile with a text editor and verifying the following code exists (add it if it is missing):

    Code:
    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    Then, run source ~/.profile to update your environment.

    Initialize the LineageOS source repository
    Code:
    cd ~//lineage
    repo init -u [url]https://github.com/LineageOS/.git[/url] -b lineage-15.1

    Download the source code
    Code:
    repo sync -c -f  --force-sync --no-clone-bundle --no-tags --optimized-fetch --prune

    Prepare the device-specific code
    Code:
    git clone [url]https://github.com/TheScarastic/android_device_xiaomi_msm8953-common[/url] -b lineage-15.1 device/xiaomi/msm8953
    git clone [url]https://github.com/TheScarastic/android_device_xiaomi_tissot[/url] -b lineage-15.1 device/xiaomi/tissot
    git clone [url]https://github.com/TheScarastic/proprietary_vendor_xiaomi[/url] -b lineage-15.1 vendor/xiaomi
    git clone [url]https://github.com/Tissot-Development/android_kernel_xiaomi_tissot[/url] -b 8.1 kernel/xiaomi/msm8953

    Turn on caching to speed up build
    Code:
    export CCACHE_DIR=./.ccache
    ccache -C
    export USE_CCACHE=1
    export CCACHE_COMPRESS=1
    prebuilts/misc/linux-x86/ccache/ccache -M 50G

    Configure jack
    Jack is the new Java compiler used when building LineageOS 14.1. It is known to run out of memory - a simple fix is to run this command:
    Code:
    export _JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"

    Make Clean Build
    Code:
    make clean

    Initialize the build command
    Code:
    source build/envsetup.sh

    Start Build
    Code:
    croot
    brunch tissot

    For More info:
    2
    Followed the above steps to the letter but I get an error right at the beginning:
    Code:
    ninja: error: 'kernel/xiaomi/msm8953/arch/arm64/configs/lineage_tissot_defconfig', needed by '/home/rossi/android/lineage/out/target/product/tissot/obj/KERNEL_OBJ/.config', missing and no known rule to make it
    build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed
    make: *** [ninja_wrapper] Error 1
    make: Leaving directory '/home/rossi/android/lineage'
    Current git broken? Any idea?

    Hello,

    Don't use that kernel, as actually don't work properly in Xiaomi Mi A1. This error is caused because the file "lineage_tissot_defconfig" it's not named like that, exactly it's name is "tissot_defconfig", for your first build with lineage I recommend you to use the following sources, because are adapt for Lineage. Don't forget to use superuser privileges to compile, it avoids a lot of possible errors with normal user.

    Device tree
    Vendor
    Kernel

    Give thanks to user @ghpranav for sources :good:



    Regards
    2
    Could I have a recommendation on what sources to use for 8.1, too many different sources for the 8.1 device trees for tissot. I wanna get building a new rom and tweak the kernel to optimize battery and change a line of code to speed up the fast charge!
    Hmm wait for Oreo trees it will be released soon
    1
    1
    Is it possible to build older versions of android? My fav cm 11 for ex. Thanks.

    Wysłane z mojego MI A1 przy użyciu Tapatalka
    Not even possible and KitKat in a1?