ROMs y desarrollo Xiaomi Redmi Note 3 ROMs y desarrollo Xiaomi Redmi Note 3

Respuesta
 
Herramientas
  #1  
Viejo 12/10/16, 18:02:28
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
Compilar CyanogenMod 12.1 --Crea tus propias compilaciones--



Ni yo ni HTCMANÍA nos hacemos responsables de fallos en el terminal. Prueba este tutorial bajo tu responsabilidad. Es para el Redmi Note 3 hennessy (MTK)


Lo prometido es deuda. Espero que sepáis valorar este tutorial, realmente hay pocos en español, y para MTK todavía menos (si es que los hay).

CONSIDERACIONES (importante):

-El hecho de compilar CM12.1 no te convierte en desarrollador así que te pediría que no abras nuevos hilos con nuevas roms a no ser que realmente aporte algo sustancial, puesto que va a ser un calco de lo que ya hay. Este tutorial está pensado para crear tus propias compilaciones y despertar tu curiosidad.

-Este tutorial aborda la forma "manual" de hacerlo, puedes crear tu local.manifest.xml y así automatizar el proceso

-Vamos a emplear el device, y vendor que podéis encontrar en mi github. Como no hay sources para el kernel emplearemos el stock precompilado que ya se encuentra en el device tree.

-Este tutorial no está enfocado a resolver duda de instalación de sistemas basados en linux ni tampoco del funcionamiento de github así que por favor evitar preguntas relacionadas con esto, hay muchísima información por la red.

-Puedes reducir el tiempo de tu compilación añadiendo
Código:
export USE_CCACHE=1
a tu archivo ~/.bashrc , después especifica la cantidad de espacio dedicado a ccache mediante el siguiente comando en la ventana CMD:
Código:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
, donde "50G" son 50 gigas de caché. Consultar la guía a pie de página para más información

DESCARGA ARCHIVOS NECESARIOS:

Device tree: https://github.com/pocarropa/android...iaomi_hennessy

Vendor tree: https://github.com/pocarropa/android...iaomi_hennessy

REQUISITOS:

-Ordenador de 64 bits con al menos 4 GB de RAM (8GB recomendados), un procesador decente y al menos 150 GB libres de disco duro
-Suficiente SWAP memory ( como mínimo el doble de la RAM disponible) de lo contrario nos dará "Killed" error
-Cuenta en github. Si no tenéis la podéis crear desde aquí: https://github.com
-Sistema operativo Linux o tener instalado ubuntu en windows mediante Virtualbox.
- Este tutorial está enfocado expresamente a Ubuntu 14.04. Las diferencias que haya con Ubuntu 16.04 serán advertidas

COMPILAR CM12.1:

Paso 1: Preparando el sistema para compilar

Copiar, pegar y ejecutar en el terminal los siguientes comandos:

1-Desinstalar el JDK pre-instalado en ubuntu

Código:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
2-Instalar el paquete JDK correcto para android 5.0 ó superior

Código:
sudo apt-get update && sudo apt-get install openjdk-7-jdk
Para confirmar que se ha instalado la versión correcta:

Código:
java –version
3-Instalar las herramientas necesarias (building tools):


Para Ubuntu 14.04:

Código:
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop maven openjdk-7-jdk pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev
Y puesto que usamos un ordenador de 64-bit necesitamos también:

Código:
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

Para Ubuntu 16.04:

Código:
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop maven openjdk-7-jdk pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev
Código:
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline6-dev lib32z1-dev

4-Creación del directorio más instalación de la aplicación REPO necesaria para trabajar con repositorios:

Código:
mkdir -p ~/bin
Código:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
La hacemos ejecutable:

Código:
chmod a+x ~/bin/repo


5-Ponemos ~/bin en la ruta de ejecución (path of execution)

En versiones recientes de ubuntu suele venir por defecto , de cualquier modo abrimos .bashrc con un editor de texto (por ejemplo gedit) de la siguiente manera:

Código:
gedit ~/.bashrc
y comprobamos que existe el siguiente código (normalmente se encuentra abajo del todo):

(Click para mostrar/ocultar)
Código:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi


En caso de no existir, lo añadimos y guardamos, y además reiniciamos el archivo .bashrc para que surtan efecto los cambios:

Código:
source ~/.bashrc

En este punto el sistema está listo para trabajar con repositorios y compilar roms.



Paso 2: Compilar CM12.1 desde sources


1- Creamos una cuenta github si no la tenemos ya creada:

https://github.com

2-Registramos nuestra cuenta github en el terminal:

Código:
git config --global*user.name*"login"
(login= tu usuario, en mi caso pocarropa)

Código:
git config --global user.email "[email protected]"
(la contraseña de acceso a tu github)

3-Creamos una carpeta donde se descargarán las "sources" y se construirá el nuevo firmware

Código:
mkdir ~/cm-12.1
4-Entramos en la nueva carpeta

Código:
cd ~/cm-12.1
5-Inicializamos la descarga de sources de CM-12.1 (-b significa "branch" (rama) en github por lo que en caso de querer descargar otra "rama" elegiriamos diferente "branch, como por ejemplo -b cm-11 ó -b cm-13:

Código:
repo init -u https://github.com/CyanogenMod/android.git -b cm-12.1
6-Descargamos las "sources" de CM-12.1(sincronizamos) , donde -j* es el número de procesos/conexiones, por lo que si experimentas problemas puedes reducir este número (por defecto si hacemos repo sync de ajusta a -j4)

Código:
repo sync -j4
El tiempo de descarga variará sobretodo en función de la velocidad de conexión a internet y del hardware del equipo.

7-Una vez descargadas las sources hacemos los siguientes pasos:

Vamos a la carpeta cm-12.1 y entramos en la carpeta device. Una vez allí, creamos una carpeta llamada "xiaomi" y dentro de la carpeta "xiaomi" creamos otra carpeta llamada "hennessy".
Debe quedar cm-12.1/device/xiaomi/hennessy
Copiamos dentro de la carpeta cm-12.1/device/xiaomi/hennessy todos los archivos y carpetas del device tree descargados previamente de mi github

Ahora volvemos a la carpeta cm-12.1 y entramos en la carpeta vendor. Una vez allí, creamos una carpeta llamada "xiaomi" y dentro de la carpeta "xiaomi" creamos otra carpeta llamada "hennessy".
Debe quedar cm-12.1/vendor/xiaomi/hennessy
Copiamos dentro de la carpeta cm-13/vendor/xiaomi/hennessy todos los archivos y carpetas del vendor tree descargados previamente de mi github

8-Ahora parcheamos las souces para nuestro dispositivo, de otra manera nos dará errores durante la compilación:

Entramos en nuestra carpeta de trabajo (si es que no estabamos ya dentro):

Código:
cd ~/cm-12.1
La damos los permisos necesarios al archivo del parche:

Código:
chmod +x device/xiaomi/hennessy/patches/apply.sh
Parcheamos las sources:

Código:
./device/xiaomi/hennessy/patches/apply.sh

9-Ejecutamos el script de construcción

Código:
. build/envsetup.sh
10-Comenzamos la compilación del nuevo firmware

Código:
brunch hennessy
En este punto comienza la compilación del firmware. Si todo va bien y no hay ningún error que detenga el proceso, cuando finalice encontraremos nuestro firmware en la ruta cm-12.1/out/target/product/hennessy ,en un archivo zip por ejemplo:" cm-12.1-20160824-UNOFFICIAL-hennessy"



El tiempo de construcción del firmware variará desde 1 horas hasta 8 dependiendo de la potencia del equipo utilizado y de otros factores. Debéis saber que para disminuir el tiempo de construcción, este device tree lleva webview precompilado lo que hace disminuir este tiempo más del 60 %.

Os quedará algo así (salvando las diferencias con vuestro dispositivo):

(Click para mostrar/ocultar)



Paso 3 : Actualizar las souces y construir un nuevo firmware

Este paso lo efectuaremos para actualizar las sources de cyanogen con las supuestas mejoras y actualizaciones de seguridad etc.. o bien cuando queramos compilar para probar cambios efectuados en el device o vendor tree, actualización del kernel etc...

1-Ir a la carpeta cm-12.1

Código:
cd ~/cm-12.1
2-Limpiar la carpeta out para realizar una nueva compilación(paso importante)

Código:
make clean
3-Sincronizar las sources con los servidores cyanogen

Código:
repo sync
4-Ejecutar el "build script"

Código:
. build/envsetup.sh
5-Comenzar la compilación con nuestras sources actualizadas

Código:
brunch hennessy

CRÉDITOS/GUÍAS UTILIZADAS:

https://wiki.cyanogenmod.org/w/Build_for_kenzo

https://wiki.cyanogenmod.org/w/Development

http://forum.xda-developers.com/chef...pment-t2814763

http://xda-university.com/as-a-devel...id-from-source

Dar las gracias no cuesta nada.

Última edición por pocarropa Día 24/10/16 a las 23:15:32.
Responder Con Cita
Los siguientes 14 usuarios han agradecido a pocarropa su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 12/10/16, 18:03:09
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
reservado
@Ragga_Muffin , @byadversary

Última edición por pocarropa Día 12/10/16 a las 18:06:47.
Responder Con Cita
Los siguientes 6 usuarios han agradecido a pocarropa su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #3  
Viejo 13/10/16, 13:22:30
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

Muchas gracias por el tutorial, en cuanto pueda me pongo con ello
Responder Con Cita
  #4  
Viejo 13/10/16, 21:49:13
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

Bueno pues me he quedado estancado en el ultimo paso, ejecuto el comando "brunch hennessy" pero al de poco me sale este error:
Código:
============================================
Checking build tools versions...
"ebtables is disabled on this build"
external/sepolicy/Android.mk:56: *** No sepolicy file found for aee_core_forwarder.te in device/xiaomi/hennessy/sepolicy vendor/cm/sepolicy.  Alto.
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (02:39 (mm:ss)) ####
¿Alguna sugerencia? Llevo un swap de 10gb por si eso ayuda
Responder Con Cita
  #5  
Viejo 13/10/16, 22:12:47
Array

[xs_avatar]
byadversary byadversary no está en línea
Usuario muy activo
 
Fecha de registro: nov 2011
Localización: Mexico
Mensajes: 711
Modelo de smartphone: Redmi Note 4
Tu operador: TELCEL
Gracias @pocarropa por tomarte el tiempo de hacer este tutorial.

Enviado desde mi Redmi Note 3 mediante Tapatalk
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 13/10/16, 22:22:04
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
 Cita: Originalmente Escrito por Ragga_Muffin Ver Mensaje
Bueno pues me he quedado estancado en el ultimo paso, ejecuto el comando "brunch hennessy" pero al de poco me sale este error:
Código:
============================================
Checking build tools versions...
"ebtables is disabled on this build"
external/sepolicy/Android.mk:56: *** No sepolicy file found for aee_core_forwarder.te in device/xiaomi/hennessy/sepolicy vendor/cm/sepolicy.  Alto.
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (02:39 (mm:ss)) ####
¿Alguna sugerencia? Llevo un swap de 10gb por si eso ayuda
Has descargado las sources o ya las tenías de otro dispositivo?

Enviado desde mi Redmi Note 3 mediante Tapatalk
Responder Con Cita
  #7  
Viejo 13/10/16, 22:49:02
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

 Cita: Originalmente Escrito por pocarropa Ver Mensaje
Has descargado las sources o ya las tenías de otro dispositivo?

Enviado desde mi Redmi Note 3 mediante Tapatalk
Instalacion limpia de ubuntu 16.04 y seguido el tutorial al pie de la letra
Responder Con Cita
  #8  
Viejo 13/10/16, 22:54:54
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
 Cita: Originalmente Escrito por Ragga_Muffin Ver Mensaje
Instalacion limpia de ubuntu 16.04 y seguido el tutorial al pie de la letra
Asegúrate que tienes donde toca el device tree (cm-12.1/device/xiaomi/hennessy/"contenido"
Y el vendor tree (cm-12.1/vendor/xiaomi/hennessy/"contenido"

Y luego haz desde el paso 3.

Si sigue sin funcionar chequea que aplicaste los parches a las sources.

Enviado desde mi Redmi Note 3 mediante Tapatalk
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 13/10/16, 23:28:36
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

 Cita: Originalmente Escrito por pocarropa Ver Mensaje
Asegúrate que tienes donde toca el device tree (cm-12.1/device/xiaomi/hennessy/"contenido"
Y el vendor tree (cm-12.1/vendor/xiaomi/hennessy/"contenido"

Y luego haz desde el paso 3.

Si sigue sin funcionar chequea que aplicaste los parches a las sources.

Enviado desde mi Redmi Note 3 mediante Tapatalk
Seguimos con el mismo error.
He vuelto a pegar en su sitio tanto el vendor como el device tree, ejecutado el comando make clean, sincronizado las sources y despues aplicados los parches.
En este ultimo punto, si han salido bastantes errores (algunos de estos errores decian que el archivo ya existia) a pesar de que ha finalizado con un mensaje de exito.
Supongo que sera, porque ya las habia aplicado antes al hacer el tutorial. Finalmente, he vuelto al ultimo paso y el mismo error.
Por si sirviese de ayuda, esto es lo que sale al ejecutar el comando brunch:

Código:
xabi@Xabi:~/cm-12.1$ brunch hennessy
including vendor/cm/vendorsetup.sh
Trying dependencies-only mode on a non-existing device tree?

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.1.1
CM_VERSION=12.1-20161013-UNOFFICIAL-hennessy
TARGET_PRODUCT=cm_hennessy
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a53
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-31-generic-x86_64-with-Ubuntu-16.04-xenial
HOST_BUILD_TYPE=release
BUILD_ID=LMY49J
OUT_DIR=/home/xabi/cm-12.1/out
============================================

make: se entra en el directorio '/home/xabi/cm-12.1'
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.1.1
CM_VERSION=12.1-20161013-UNOFFICIAL-hennessy
TARGET_PRODUCT=cm_hennessy
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a53
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-31-generic-x86_64-with-Ubuntu-16.04-xenial
HOST_BUILD_TYPE=release
BUILD_ID=LMY49J
OUT_DIR=/home/xabi/cm-12.1/out
============================================
Checking build tools versions...
"ebtables is disabled on this build"
external/sepolicy/Android.mk:56: *** No sepolicy file found for aee_core_forwarder.te in device/xiaomi/hennessy/sepolicy vendor/cm/sepolicy.  Alto.
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (02:21 (mm:ss)) ####
Responder Con Cita
  #10  
Viejo 13/10/16, 23:49:48
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
 Cita: Originalmente Escrito por Ragga_Muffin Ver Mensaje
Seguimos con el mismo error.
He vuelto a pegar en su sitio tanto el vendor como el device tree, ejecutado el comando make clean, sincronizado las sources y despues aplicados los parches.
En este ultimo punto, si han salido bastantes errores (algunos de estos errores decian que el archivo ya existia) a pesar de que ha finalizado con un mensaje de exito.
Supongo que sera, porque ya las habia aplicado antes al hacer el tutorial. Finalmente, he vuelto al ultimo paso y el mismo error.
Por si sirviese de ayuda, esto es lo que sale al ejecutar el comando brunch:

Código:
xabi@Xabi:~/cm-12.1$ brunch hennessy
including vendor/cm/vendorsetup.sh
Trying dependencies-only mode on a non-existing device tree?

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.1.1
CM_VERSION=12.1-20161013-UNOFFICIAL-hennessy
TARGET_PRODUCT=cm_hennessy
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a53
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-31-generic-x86_64-with-Ubuntu-16.04-xenial
HOST_BUILD_TYPE=release
BUILD_ID=LMY49J
OUT_DIR=/home/xabi/cm-12.1/out
============================================

make: se entra en el directorio '/home/xabi/cm-12.1'
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.1.1
CM_VERSION=12.1-20161013-UNOFFICIAL-hennessy
TARGET_PRODUCT=cm_hennessy
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a53
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-31-generic-x86_64-with-Ubuntu-16.04-xenial
HOST_BUILD_TYPE=release
BUILD_ID=LMY49J
OUT_DIR=/home/xabi/cm-12.1/out
============================================
Checking build tools versions...
"ebtables is disabled on this build"
external/sepolicy/Android.mk:56: *** No sepolicy file found for aee_core_forwarder.te in device/xiaomi/hennessy/sepolicy vendor/cm/sepolicy.  Alto.
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (02:21 (mm:ss)) ####
Súbeme aquí el makefile del fallo; está en cm-12.1/external/sepolicy/Android.mk

Enviado desde mi Redmi Note 3 mediante Tapatalk
Responder Con Cita
Gracias de parte de:
  #11  
Viejo 14/10/16, 00:09:56
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

 Cita: Originalmente Escrito por pocarropa Ver Mensaje
Súbeme aquí el makefile del fallo; está en cm-12.1/external/sepolicy/Android.mk

Enviado desde mi Redmi Note 3 mediante Tapatalk
Ahi lo tienes:

Código:
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

# Force permissive domains to be unconfined+enforcing?
#
# During development, this should be set to false.
# Permissive means permissive.
#
# When we're close to a release and SELinux new policy development
# is frozen, we should flip this to true. This forces any currently
# permissive domains into unconfined+enforcing.
#
FORCE_PERMISSIVE_TO_UNCONFINED:=true

ifeq ($(TARGET_BUILD_VARIANT),user)
  # User builds are always forced unconfined+enforcing
  FORCE_PERMISSIVE_TO_UNCONFINED:=true
endif

# SELinux policy version.
# Must be <= /selinux/policyvers reported by the Android kernel.
# Must be within the compatibility range reported by checkpolicy -V.
POLICYVERS ?= 26

MLS_SENS=1
MLS_CATS=1024

# Quick edge case error detection for BOARD_SEPOLICY_REPLACE.
# Builds the singular path for each replace file.
sepolicy_replace_paths :=
$(foreach pf, $(BOARD_SEPOLICY_REPLACE), \
  $(if $(filter $(pf), $(BOARD_SEPOLICY_UNION)), \
    $(error Ambiguous request for sepolicy $(pf). Appears in both \
      BOARD_SEPOLICY_REPLACE and BOARD_SEPOLICY_UNION), \
  ) \
  $(eval _paths := $(filter-out $(BOARD_SEPOLICY_IGNORE), \
  $(wildcard $(addsuffix /$(pf), $(BOARD_SEPOLICY_DIRS))))) \
  $(eval _occurrences := $(words $(_paths))) \
  $(if $(filter 0,$(_occurrences)), \
    $(error No sepolicy file found for $(pf) in $(BOARD_SEPOLICY_DIRS)), \
  ) \
  $(if $(filter 1, $(_occurrences)), \
    $(eval sepolicy_replace_paths += $(_paths)), \
    $(error Multiple occurrences of replace file $(pf) in $(_paths)) \
  ) \
  $(if $(filter 0, $(words $(wildcard $(addsuffix /$(pf), $(LOCAL_PATH))))), \
    $(error Specified the sepolicy file $(pf) in BOARD_SEPOLICY_REPLACE, \
      but none found in $(LOCAL_PATH)), \
  ) \
)

# Quick edge case error detection for BOARD_SEPOLICY_UNION.
# This ensures that a requested union file exists somewhere
# in one of the listed BOARD_SEPOLICY_DIRS.
$(foreach pf, $(BOARD_SEPOLICY_UNION), \
  $(if $(filter 0, $(words $(wildcard $(addsuffix /$(pf), $(BOARD_SEPOLICY_DIRS))))), \
    $(error No sepolicy file found for $(pf) in $(BOARD_SEPOLICY_DIRS)), \
  ) \
)

# Builds paths for all requested policy files w.r.t
# both BOARD_SEPOLICY_REPLACE and BOARD_SEPOLICY_UNION
# product variables.
# $(1): the set of policy name paths to build
build_policy = $(call uniq,$(foreach type, $(1), \
  $(filter-out $(BOARD_SEPOLICY_IGNORE), \
    $(foreach expanded_type, $(notdir $(wildcard $(addsuffix /$(type), $(LOCAL_PATH)))), \
      $(if $(filter $(expanded_type), $(BOARD_SEPOLICY_REPLACE)), \
        $(wildcard $(addsuffix $(expanded_type), $(sort $(dir $(sepolicy_replace_paths))))), \
        $(LOCAL_PATH)/$(expanded_type) \
      ) \
    ) \
    $(foreach union_policy, $(wildcard $(addsuffix /$(type), $(BOARD_SEPOLICY_DIRS))), \
      $(if $(filter $(notdir $(union_policy)), $(BOARD_SEPOLICY_UNION)), \
        $(union_policy), \
      ) \
    ) \
  ) \
))

sepolicy_build_files := security_classes \
                        initial_sids \
                        access_vectors \
                        global_macros \
                        mls_macros \
                        mls \
                        policy_capabilities \
                        te_macros \
                        attributes \
                        *.te \
                        roles \
                        users \
                        initial_sid_contexts \
                        fs_use \
                        genfs_contexts \
                        port_contexts

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := sepolicy
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

include $(BUILD_SYSTEM)/base_rules.mk

sepolicy_policy.conf := $(intermediates)/policy.conf
$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
$(sepolicy_policy.conf) : $(call build_policy, $(sepolicy_build_files))
    @MKDir -p $(dir $@)
    $(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
        -D target_build_variant=$(TARGET_BUILD_VARIANT) \
        -D shipping_build=$(CYNGN_TARGET) \
        -D force_permissive_to_unconfined=$(FORCE_PERMISSIVE_TO_UNCONFINED) \
        -D init_bootchart=$(INIT_BOOTCHART) \
        -s $^ > $@
    $(hide) sed '/dontaudit/d' $@ > [email protected]

$(LOCAL_BUILT_MODULE) : $(sepolicy_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
    @MKDir -p $(dir $@)
    $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c $(POLICYVERS) -o $@ $<
    $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c $(POLICYVERS) -o $(dir $<)/$(notdir $@).dontaudit $<.dontaudit

built_sepolicy := $(LOCAL_BUILT_MODULE)
sepolicy_policy.conf :=

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := sepolicy.recovery
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := eng

include $(BUILD_SYSTEM)/base_rules.mk

sepolicy_policy_recovery.conf := $(intermediates)/policy_recovery.conf
$(sepolicy_policy_recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
$(sepolicy_policy_recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
$(sepolicy_policy_recovery.conf) : $(call build_policy, $(sepolicy_build_files))
    @MKDir -p $(dir $@)
    $(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
        -D target_build_variant=$(TARGET_BUILD_VARIANT) \
        -D force_permissive_to_unconfined=$(FORCE_PERMISSIVE_TO_UNCONFINED) \
        -D target_recovery=true \
        -s $^ > $@

$(LOCAL_BUILT_MODULE) : $(sepolicy_policy_recovery.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
    @MKDir -p $(dir $@)
    $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c $(POLICYVERS) -o $@ $<

built_sepolicy_recovery := $(LOCAL_BUILT_MODULE)
sepolicy_policy_recovery.conf :=

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := general_sepolicy.conf
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := tests

include $(BUILD_SYSTEM)/base_rules.mk

exp_sepolicy_build_files :=\
  $(wildcard $(addprefix $(LOCAL_PATH)/, $(sepolicy_build_files)))

$(LOCAL_BUILT_MODULE): PRIVATE_MLS_SENS := $(MLS_SENS)
$(LOCAL_BUILT_MODULE): PRIVATE_MLS_CATS := $(MLS_CATS)
$(LOCAL_BUILT_MODULE): $(exp_sepolicy_build_files)
    mkdir -p $(dir $@)
    $(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
        -D target_build_variant=user \
        -D force_permissive_to_unconfined=true \
        -s $^ > $@
    $(hide) sed '/dontaudit/d' $@ > [email protected]

GENERAL_SEPOLICY_POLICY.CONF = $(LOCAL_BUILT_MODULE)

exp_sepolicy_build_files :=

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := file_contexts
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

include $(BUILD_SYSTEM)/base_rules.mk

ALL_FC_FILES := $(call build_policy, file_contexts)

$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
$(LOCAL_BUILT_MODULE):  $(ALL_FC_FILES) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
    @MKDir -p $(dir $@)
    $(hide) m4 -s $(ALL_FC_FILES) > $@
    $(hide) $(HOST_OUT_EXECUTABLES)/checkfc $(PRIVATE_SEPOLICY) $@

built_fc := $(LOCAL_BUILT_MODULE)

##################################
include $(CLEAR_VARS)
LOCAL_MODULE := seapp_contexts
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

include $(BUILD_SYSTEM)/base_rules.mk

seapp_contexts.tmp := $(intermediates)/seapp_contexts.tmp
$(seapp_contexts.tmp): $(call build_policy, seapp_contexts)
    @MKDir -p $(dir $@)
    $(hide) m4 -s $^ > $@

$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
$(LOCAL_BUILT_MODULE) : $(seapp_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkseapp
    @MKDir -p $(dir $@)
    $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $<

built_sc := $(LOCAL_BUILT_MODULE)
seapp_contexts.tmp :=

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := property_contexts
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

include $(BUILD_SYSTEM)/base_rules.mk

ALL_PC_FILES := $(call build_policy, property_contexts)

$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
$(LOCAL_BUILT_MODULE):  $(ALL_PC_FILES) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
    @MKDir -p $(dir $@)
    $(hide) m4 -s $(ALL_PC_FILES) > $@
    $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@

built_pc := $(LOCAL_BUILT_MODULE)

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := service_contexts
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

include $(BUILD_SYSTEM)/base_rules.mk

ALL_SVC_FILES := $(call build_policy, service_contexts)

$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
$(LOCAL_BUILT_MODULE):  $(ALL_SVC_FILES) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
    @MKDir -p $(dir $@)
    $(hide) m4 -s $(ALL_SVC_FILES) > $@
    $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@

built_svc := $(LOCAL_BUILT_MODULE)

##################################

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := selinux-network.sh
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_EXECUTABLES)

include $(BUILD_PREBUILT)

##################################
include $(CLEAR_VARS)

LOCAL_MODULE := mac_permissions.xml
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/security

include $(BUILD_SYSTEM)/base_rules.mk

# Build keys.conf
mac_perms_keys.tmp := $(intermediates)/keys.tmp
$(mac_perms_keys.tmp) : $(call build_policy, keys.conf)
    @MKDir -p $(dir $@)
    $(hide) m4 -s $^ > $@

ALL_MAC_PERMS_FILES := $(call build_policy, $(LOCAL_MODULE))

$(LOCAL_BUILT_MODULE) : $(mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py $(ALL_MAC_PERMS_FILES)
    @MKDir -p $(dir $@)
    $(hide) DEFAULT_SYSTEM_DEV_CERTIFICATE="$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))" \
        $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(ALL_MAC_PERMS_FILES)

mac_perms_keys.tmp :=
##################################
include $(CLEAR_VARS)

LOCAL_MODULE := selinux_version
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

include $(BUILD_SYSTEM)/base_rules.mk
$(LOCAL_BUILT_MODULE) : $(built_sepolicy) $(built_pc) $(built_fc) $(built_sc) $(built_svc)
    @MKDir -p $(dir $@)
    $(hide) echo -n $(BUILD_FINGERPRINT) > $@

##################################

build_policy :=
sepolicy_build_files :=
sepolicy_replace_paths :=
built_sepolicy :=
built_sc :=
built_fc :=
built_pc :=
built_svc :=

include $(call all-makefiles-under,$(LOCAL_PATH))
Responder Con Cita
  #12  
Viejo 14/10/16, 01:17:27
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
@Ragga_Muffin

Extrae los archivos del adjunto y los pegas en device/xiaomi/hennessy/sepolicy.

@log30 , puedes chequear si tú los tienes?

sepolicy_files.zip
Responder Con Cita
Gracias de parte de:
  #13  
Viejo 14/10/16, 09:51:17
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

 Cita: Originalmente Escrito por pocarropa Ver Mensaje
@Ragga_Muffin

Extrae los archivos del adjunto y los pegas en device/xiaomi/hennessy/sepolicy.

@log30 , puedes chequear si tú los tienes?

Archivo Adjunto 931558
Gracias, con eso hemos solventado el error pero al volver a realizar el paso 3 completo en el brunch ha dado otro error (esta vez ha avanzado mas antes de dar el error).
No me gusta tener que estar preguntando todo el dia, pero, por mas que busco no encuentro nada que me diga algo.
¿Puede que este error tenga algo que ver con el "Android.mk" que por lo que sea es el que impide compilar la rom con un kernel precompilado? Digo esto, porque me ha dado una advertencia asi poco antes de arrojar el error:

Código:
No private recovery resources for TARGET_DEVICE hennessy
build/core/tasks/kernel.mk:121: ***************************************************************
build/core/tasks/kernel.mk:122: * Using prebuilt kernel binary instead of source              *
build/core/tasks/kernel.mk:123: * THIS IS DEPRECATED, AND WILL BE DISCONTINUED                *
build/core/tasks/kernel.mk:124: * Please configure your device to download the kernel         *
build/core/tasks/kernel.mk:125: * source repository to kernel/xiaomi/hennessy
build/core/tasks/kernel.mk:126: * See http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building
build/core/tasks/kernel.mk:127: * for more information                                        *
build/core/tasks/kernel.mk:128: ***************************************************************
Aunque como no tenemos sources del kernel algo me dice que esta es la unica manera a pesar de que este obsoleta.

Y el error:
Código:
make: *** No hay ninguna regla para construir el objetivo 'device/xiaomi/hennessy/prebuilt/kernel', necesario para '/home/xabi/cm-12.1/out/target/product/hennessy/kernel'.  Alto.
make: *** Se espera a que terminen otras tareas....
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (04:24 (mm:ss)) ####
Gracias de antemano y perdona que te moleste tanto
Responder Con Cita
  #14  
Viejo 14/10/16, 10:14:58
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
 Cita: Originalmente Escrito por Ragga_Muffin Ver Mensaje
Gracias, con eso hemos solventado el error pero al volver a realizar el paso 3 completo en el brunch ha dado otro error (esta vez ha avanzado mas antes de dar el error).
No me gusta tener que estar preguntando todo el dia, pero, por mas que busco no encuentro nada que me diga algo.
¿Puede que este error tenga algo que ver con el "Android.mk" que por lo que sea es el que impide compilar la rom con un kernel precompilado? Digo esto, porque me ha dado una advertencia asi poco antes de arrojar el error:

Código:
No private recovery resources for TARGET_DEVICE hennessy
build/core/tasks/kernel.mk:121: ***************************************************************
build/core/tasks/kernel.mk:122: * Using prebuilt kernel binary instead of source              *
build/core/tasks/kernel.mk:123: * THIS IS DEPRECATED, AND WILL BE DISCONTINUED                *
build/core/tasks/kernel.mk:124: * Please configure your device to download the kernel         *
build/core/tasks/kernel.mk:125: * source repository to kernel/xiaomi/hennessy
build/core/tasks/kernel.mk:126: * See http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building
build/core/tasks/kernel.mk:127: * for more information                                        *
build/core/tasks/kernel.mk:128: ***************************************************************
Aunque como no tenemos sources del kernel algo me dice que esta es la unica manera a pesar de que este obsoleta.

Y el error:
Código:
make: *** No hay ninguna regla para construir el objetivo 'device/xiaomi/hennessy/prebuilt/kernel', necesario para '/home/xabi/cm-12.1/out/target/product/hennessy/kernel'.  Alto.
make: *** Se espera a que terminen otras tareas....
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (04:24 (mm:ss)) ####
Gracias de antemano y perdona que te moleste tanto
No es molestia alguna, la idea de hacer la guía es que funcione.

Recuerdo que a @log30 le ocurrió este error y era porque el kernel no está en la misma ruta que dice el makefile. Tengo datos limitados y no te lo puedo mirar ahora, pero busca en los .mk la ruta del kernel, debe ser que el mk busca en prebuilt/kernel y deba estar en prebuilt o a la inversa, no me acuerdo ahora.
@log30, pls, puedes mirar como lo tienes tú?

PD: estás en lo cierto con el kernel, al no haber sources hay que hacerlo así

Enviado desde mi Redmi Note 3 mediante Tapatalk
Responder Con Cita
Gracias de parte de:
  #15  
Viejo 14/10/16, 11:06:43
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

 Cita: Originalmente Escrito por pocarropa Ver Mensaje
No es molestia alguna, la idea de hacer la guía es que funcione.

Recuerdo que a @log30 le ocurrió este error y era porque el kernel no está en la misma ruta que dice el makefile. Tengo datos limitados y no te lo puedo mirar ahora, pero busca en los .mk la ruta del kernel, debe ser que el mk busca en prebuilt/kernel y deba estar en prebuilt o a la inversa, no me acuerdo ahora.
@log30, pls, puedes mirar como lo tienes tú?

PD: estás en lo cierto con el kernel, al no haber sources hay que hacerlo así

Enviado desde mi Redmi Note 3 mediante Tapatalk
En el device tree (cm-12.1/device/xiaomi/hennessy) he encontrado dos archivos que le hacen referencia al kernel, me ha llamado la atencion porque estan sin la extension .gz, aunque esto puede que este bien eso no lo se.
De todos modos, aqui te dejo los dos archivos y te señalo en rojo lo que me ha llamado la atencion:

BoardConfig.mk:
Código:
# mt6795 platform boardconfig
LOCAL_PATH := device/xiaomi/hennessy
-include vendor/xiaomi/hennessy/BoardConfigVendor.mk

TARGET_SPECIFIC_HEADER_PATH := device/xiaomi/hennessy/include

USE_CAMERA_STUB := true
TARGET_PROVIDES_INIT_RC := true
# inherit from the proprietary version

# Platform
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_BOARD_PLATFORM := mt6795
TARGET_NO_BOOTLOADER := true
TARGET_USERIMAGES_USE_EXT4 := true
TARGET_NO_FACTORYIMAGE := true

TARGET_LDPRELOAD += libxlog.so

# CPU
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 := 
TARGET_CPU_VARIANT := generic
TARGET_CPU_SMP := true

TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv7-a-neon
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := cortex-a53
TARGET_BOARD_SUFFIX := _64
TARGET_USES_64_BIT_BINDER := true

TARGET_CPU_CORTEX_A53 := true

TARGET_BOOTLOADER_BOARD_NAME := mt6795

# MTK Hardware
BOARD_HAS_MTK_HARDWARE := true
MTK_HARDWARE := true
BOARD_USES_LEGACY_MTK_AV_BLOB := true
COMMON_GLOBAL_CFLAGS += -DMTK_HARDWARE -DADD_LEGACY_ACQUIRE_BUFFER_SYMBOL
COMMON_GLOBAL_CPPFLAGS += -DMTK_HARDWARE

BOARD_CONNECTIVITY_VENDOR := MediaTek
BOARD_USES_MTK_AUDIO := true

# Kernel
TARGET_USES_64_BIT_BINDER := true
TARGET_IS_64_BIT := true
BOARD_KERNEL_CMDLINE := bootopt=64S3,32N2,64N2 androidboot.selinux=permissive
BOARD_KERNEL_BASE := 0x40078000
BOARD_KERNEL_PAGESIZE := 2048
BOARD_MKBOOTIMG_ARGS := --base 0x40078000 --pagesize 2048 --kernel_offset 0x00008000 --ramdisk_offset 0x03f88000 --second_offset 0x00e88000 --tags_offset 0x0df88000 --board Bule
TARGET_PREBUILT_KERNEL := device/xiaomi/hennessy/prebuilt/kernel
BOARD_CUSTOM_BOOTIMG := true

# MKImage
TARGET_MKIMAGE := device/xiaomi/hennessy/mkimage
TARGET_USE_BUILT_BOOTIMAGE := true

TARGET_KMODULES := true
# Disable memcpy opt (for audio libraries)
TARGET_CPU_MEMCPY_OPT_DISABLE := true

# Display
USE_OPENGL_RENDERER := true
BOARD_EGL_CFG := device/xiaomi/hennessy/configs/egl.cfg
TARGET_SCREEN_HEIGHT := 1920
TARGET_SCREEN_WIDTH := 1080
BOARD_EGL_WORKAROUND_BUG_10194508 := true

# Flags
TARGET_GLOBAL_CFLAGS   += -mfpu=neon -mfloat-abi=softfp
TARGET_GLOBAL_CPPFLAGS += -mfpu=neon -mfloat-abi=softfp
COMMON_GLOBAL_CFLAGS += -DNO_SECURE_DISCARD
COMMON_GLOBAL_CFLAGS += -DDISABLE_HW_ID_MATCH_CHECK
TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK := true

# LightHAL
TARGET_PROVIDES_LIBLIGHT := true

# Enable Minikin text layout engine (will be the default soon)
USE_MINIKIN := true

# Charger
BOARD_CHARGER_SHOW_PERCENTAGE := true

# Fonts
EXTENDED_FONT_FOOTPRINT := true

TARGET_SYSTEM_PROP := device/xiaomi/hennessy/system.prop

# PREBUILT_Chromium
#PRODUCT_PREBUILT_WEBVIEWCHROMIUM := yes

# Bluetooth
BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_MTK := true
BOARD_BLUETOOTH_DOES_NOT_USE_RFKILL := true
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/xiaomi/hennessy/bluetooth

# GPS
BOARD_GPS_LIBRARIES :=true
BOARD_CONNECTIVITY_MODULE := MT6630 
BOARD_MEDIATEK_USES_GPS := true

# FM
MTK_FM_SUPPORT :=true
MTK_FM_RX_SUPPORT :=true

# Consumerir
MTK_IRTX_SUPPORT :=true

# MTK_WLAN_SUPPORT
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_mt66xx
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_mt66xx
WIFI_DRIVER_FW_PATH_PARAM := "/dev/wmtWifi"
WIFI_DRIVER_FW_PATH_STA := STA
WIFI_DRIVER_FW_PATH_AP := AP
WIFI_DRIVER_FW_PATH_P2P := P2P

# make_ext4fs requires numbers in dec format
TARGET_USERIMAGES_USE_EXT4 := true
BOARD_BOOTIMAGE_PARTITION_SIZE := 20971520
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 20971520
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736
BOARD_USERDATAIMAGE_PARTITION_SIZE := 13474725888
BOARD_FLASH_BLOCK_SIZE := 131072

BOARD_HAS_LARGE_FILESYSTEM := true
TARGET_USERIMAGES_USE_EXT4 := true

TARGET_USE_CUSTOM_LUN_FILE_PATH := /sys/class/android_usb/android0/f_mass_storage/lun/file

BOARD_HAS_NO_SELECT_BUTTON := true
BOARD_RECOVERY_SWIPE := true
BOARD_SUPPRESS_EMMC_WIPE := true
BOARD_USE_CUSTOM_RECOVERY_FONT := \"roboto_15x24.h\"
TARGET_RECOVERY_FSTAB := device/xiaomi/hennessy/rootdir/recovery.fstab
TARGET_RECOVERY_PIXEL_FORMAT := "RGBA_8888"
TARGET_USERIMAGES_USE_EXT4 := true

# SELinux
BOARD_SEPOLICY_DIRS := \
       device/xiaomi/hennessy/sepolicy

#SELinux: MTK added
BOARD_SEPOLICY_UNION := \
    app.te \
    device.te \
    domain.te \
    file.te \
    file_contexts \
    fs_use \
    installd.te \
    net.te \
    netd.te \
    te_macros \
    vold.te \
    untrusted_app.te \
    platform_app.te \
    system_app.te \
    zygote.te \
    aal.te \
    aee_core_forwarder.te \
    akmd09911.te \
    akmd8963.te \
    akmd8975.te \
    ami304d.te \
    ist8303.te \
    st480.te \
    af7133e.te \
    mc6470d.te \
    qmcX983d.te \
    atcid.te \
    atci_service.te \
    audiocmdservice_atci.te \
    batterywarning.te \
    bmm050d.te \
    bmm056d.te \
    boot_logo_updater.te \
    br_app_data_service.te \
    BGW.te \
    ccci_fsd.te \
    ccci_mdinit.te \
    statusd.te \
    flashlessd.te \
    ccci_rpcd.te \
    eemcs_fsd.te \
    eemcs_mdinit.te \
    dhcp6c.te \
    dm_agent_binder.te \
    dualmdlogger.te \
    dumpstate.te \
    em_svr.te \
    enableswap.te \
    factory.te \
    fota1.te \
    fuelgauged.te \
    geomagneticd.te \
    GoogleOtaBinder.te \
    gsm0710muxdmd2.te \
    gsm0710muxd.te \
    guiext-server.te \
    ipod.te \
    matv.te \
    mc6420d.te \
    mdlogger.te \
    mdnsd.te \
    memsicd3416x.te \
    memsicd.te \
    meta_tst.te \
    mmc_ffu.te \
    mmp.te \
    mnld.te \
    mobile_log_d.te \
    mpud6050.te \
    msensord.te \
    mmc3524xd.te \
    mtk_6620_launcher.te \
    mtk_agpsd.te \
    mtkbt.te \
    muxreport.te \
    netdiag.te \
    nvram_agent_binder.te \
    nvram_daemon.te \
    orientationd.te \
    permission_check.te \
    poad.te \
    pppd_dt.te \
    pppd_via.te \
    pq.te \
    recovery.te \
    resmon.te \
    mtkrild.te \
    mtkrildmd2.te \
    viarild.te \
    s62xd.te \
    sn.te \
    epdg_wod.te \
    ipsec.te \
    terservice.te \
    thermald.te \
    thermal_manager.te \
    thermal.te \
    tiny_mkswap.te \
    tiny_swapon.te \
    vdc.te \
    volte_imcb.te \
    volte_ua.te \
    volte_stack.te \
    vtservice.te \
    wmt_loader.te \
    icusbd.te \
    xlog.te \
    mobicore.te \
    install_recovery.te \
    program_binary.te \
    genfs_contexts

 

BOARD_SEPOLICY_UNION += \
    adbd.te \
    bluetooth.te \
    bootanim.te \
    clatd.te \
    debuggerd.te \
    drmserver.te \
    dhcp.te \
    dnsmasq.te \
    gpsd.te \
    hci_attach.te \
    healthd.te \
    hostapd.te \
    inputflinger.te \
    init.te \
    init_shell.te \
    isolated_app.te \
    keystore.te \
    kernel.te \
    lmkd.te \
    logd.te \
    mediaserver.te \
    mtp.te \
    nfc.te \
    racoon.te \
    radio.te \
    rild.te \
    runas.te \
    sdcardd.te \
    servicemanager.te \
    shared_relro.te \
    shell.te \
    system_app.te \
    system_server.te \
    surfaceflinger.te \
    tee.te \
    ueventd.te \
    uncrypt.te \
    watchdogd.te \
    wpa_supplicant.te \
    wpa.te \
    property.te \
    property_contexts \
    service.te \
    dmlog.te \
    MtkCodecService.te \
    ppl_agent.te \
    pvrsrvctl.te \
    wifi2agps.te \
    dex2oat.te \
    emdlogger.te \
    autokd.te \
    ppp.te \
    launchpppoe.te \
    sbchk.te \
    service_contexts \
    ril-3gddaemon.te \
    usbdongled.te \
    zpppd_gprs.te \
    md_ctrl.te \
    cmddumper.te \
    tunman.te
Device.mk:
Código:
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)

# The gps config appropriate for this device
$(call inherit-product, device/common/gps/gps_us_supl.mk)
$(call inherit-product, device/xiaomi/hennessy/vendor/copyfiles.mk)
$(call inherit-product, vendor/xiaomi/hennessy/hennessy-vendor-blobs.mk)

LOCAL_PATH := device/xiaomi/hennessy

DEVICE_PACKAGE_OVERLAYS += device/xiaomi/hennessy/overlay

# Device uses high-density artwork where available
PRODUCT_AAPT_CONFIG := normal xhdpi xxhdpi
PRODUCT_AAPT_PREF_CONFIG := xxhdpi

# Recovery allowed devices
TARGET_OTA_ASSERT_DEVICE := hennessy

ifeq ($(TARGET_PREBUILT_KERNEL),)
    LOCAL_KERNEL := device/xiaomi/hennessy/prebuilt/kernel
else
    LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif

PRODUCT_PACKAGES += \
libxlog

PRODUCT_COPY_FILES += \
   $(LOCAL_KERNEL):prebuilt/kernel

# Init
PRODUCT_PACKAGES += \
    hennessy

# Gralloc
PRODUCT_PACKAGES += \
   libgralloc_extra

# Immvibe
PRODUCT_PACKAGES += \
    immvibe

# Hack to fix asec on emulated sdcard
PRODUCT_PACKAGES += \
    asec_helper

# Audio
PRODUCT_PACKAGES += \
    audio_policy.default \
    audio_policy.stub \
    audio.r_submix.default \
    audio.usb.default \
    libaudio-resampler \
    tinymix \
    libtinyalsa
PRODUCT_COPY_FILES += \
    device/xiaomi/hennessy/configs/media_codecs.xml:system/etc/media_codecs.xml \
    device/xiaomi/hennessy/configs/media_profiles.xml:system/etc/media_profiles.xml \
    device/xiaomi/hennessy/configs/audio_device.xml:system/etc/audio_device.xml \
    device/xiaomi/hennessy/configs/audio_policy.conf:system/etc/audio_policy.conf
    
# Bluetooth                            
PRODUCT_PACKAGES += \
    audio.a2dp.default 
PRODUCT_PACKAGES += \
    libbt-vendor
PRODUCT_COPY_FILES += \
    device/xiaomi/hennessy/configs/bt_did.conf:system/etc/bluetooth/bt_did.conf
     
# Keyboard layout
PRODUCT_COPY_FILES += \
     device/xiaomi/hennessy/configs/mtk-kpd.kl:system/usr/keylayout/mtk-kpd.kl \
     device/xiaomi/hennessy/configs/ACCDET.kl:system/usr/keylayout/ACCDET.kl\
     device/xiaomi/hennessy/configs/AVRCP.kl:system/usr/keylayout/AVRCP.kl      

#Light    
#PRODUCT_PACKAGES += \
     #lights.mt6795 

# Ramdisk
PRODUCT_COPY_FILES += \
    device/xiaomi/hennessy/rootdir/enableswap.sh:root/enableswap.sh \
    device/xiaomi/hennessy/rootdir/factory_init.project.rc:root/factory_init.project.rc \
    device/xiaomi/hennessy/rootdir/factory_init.rc:root/factory_init.rc \
    device/xiaomi/hennessy/rootdir/file_context:root/file_context \
    device/xiaomi/hennessy/rootdir/fstab.charger:root/fstab.charger\
    device/xiaomi/hennessy/rootdir/fstab.mt6795:root/fstab.mt6795 \
    device/xiaomi/hennessy/rootdir/init.aee.rc:root/init.aee.rc \
    device/xiaomi/hennessy/rootdir/init.modem.rc:root/init.modem.rc \
    device/xiaomi/hennessy/rootdir/init.mt6795.rc:root/init.mt6795.rc \
    device/xiaomi/hennessy/rootdir/init.mt6795.usb.rc:root/init.mt6795.usb.rc \
    device/xiaomi/hennessy/rootdir/init.project.rc:root/init.project.rc \
    device/xiaomi/hennessy/rootdir/init.rc:root/init.rc \
    device/xiaomi/hennessy/rootdir/init.ssd.rc:root/init.ssd.rc \
    device/xiaomi/hennessy/rootdir/init.xlog.rc:root/init.xlog.rc \
    device/xiaomi/hennessy/rootdir/meta_init.modem.rc:root/meta_init.modem.rc \
    device/xiaomi/hennessy/rootdir/meta_init.project.rc:root/meta_init.project.rc \
    device/xiaomi/hennessy/rootdir/meta_init.rc:root/meta_init.rc \
    device/xiaomi/hennessy/rootdir/init:root/init \
    device/xiaomi/hennessy/rootdir/init.hennessy.power.rc:root/init.hennessy.power.rc \
    device/xiaomi/hennessy/rootdir/init.cm.rc:root/init.cm.rc \

# Telecom
PRODUCT_COPY_FILES += \
    device/xiaomi/hennessy/configs/apns-conf.xml:system/etc/apns-conf.xml \
    device/xiaomi/hennessy/configs/ecc_list.xml:system/etc/ecc_list.xml \
    device/xiaomi/hennessy/configs/spn-conf.xml:system/etc/spn-conf.xml 

# Thermal
PRODUCT_COPY_FILES += \
     device/xiaomi/hennessy/configs/.ht120.mtc:system/etc/.tp/.ht120.mtc \
     device/xiaomi/hennessy/configs/thermal.conf:system/etc/.tp/thermal.conf \
     device/xiaomi/hennessy/configs/thermal.off.conf:system/etc/.tp/thermal.off.conf \
     device/xiaomi/hennessy/configs/.thermal_policy_00:system/etc/.tp/.thermal_policy_00 \
     device/xiaomi/hennessy/configs/.thermal_policy_01:system/etc/.tp/.thermal_policy_01 
    
# These are the hardware-specific features
PRODUCT_COPY_FILES += \
    device/xiaomi/hennessy/configs/android.hardware.consumerir.xml:system/etc/permissions/android.hardware.consumerir.xml \
    device/xiaomi/hennessy/configs/android.hardware.microphone.xml:system/etc/permissions/android.hardware.microphone.xml \
    frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \
    frameworks/native/data/etc/android.hardware.camera.autofocus.xml:system/etc/permissions/android.hardware.camera.autofocus.xml \
    device/xiaomi/hennessy/configs/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \
    frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \
    frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \
    frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
    frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
    frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
    frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \
    frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.compass.xml \
    frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
    frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
    frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \
    frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:system/etc/permissions/android.hardware.sensor.stepcounter.xml \
    frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:system/etc/permissions/android.hardware.sensor.stepdetector.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.multitouch.distinct.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.distinct.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml \
    frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
    frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
    frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml \
    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \
    frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
    frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \
    frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \
    frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
    frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml

# Media    
PRODUCT_COPY_FILES += \
    frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:system/etc/media_codecs_google_audio.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:system/etc/media_codecs_google_telephony.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:system/etc/media_codecs_google_video.xml

PRODUCT_COPY_FILES += \
    device/xiaomi/hennessy/configs/media_codecs.xml:system/etc/media_codecs.xml \
    device/xiaomi/hennessy/configs/media_codecs.xml:system/etc/permissions/media_codecs.xml \
    device/xiaomi/hennessy/configs/media_profiles.xml:system/etc/media_profiles.xml

PRODUCT_TAGS += dalvik.gc.type-precise

# Charger
PRODUCT_PACKAGES += \
      charger_res_images

# Wifi
 PRODUCT_PACKAGES += \
    lib_driver_cmd_mt66xx \
    libwifi-hal-mt66xx \
    wifi_hal \
    libwpa_client \
    hostapd \
    hostapd_cli \
    dhcpcd.conf \
    wpa_supplicant \
    wpa_supplicant.conf
    
PRODUCT_COPY_FILES += \
    device/xiaomi/hennessy/configs/hostapd/hostapd_default.conf:system/etc/hostapd/hostapd_default.conf \
    device/xiaomi/hennessy/configs/hostapd/hostapd.accept:system/etc/hostapd/hostapd.accept \
    device/xiaomi/hennessy/configs/hostapd/hostapd.deny:system/etc/hostapd/hostapd.deny

# Ifaddrs
PRODUCT_PACKAGES += \
    libifaddrs

# Torch
PRODUCT_PACKAGES += \
    Torch

# STk
PRODUCT_PACKAGES += \
    Stk

# GPS
PRODUCT_COPY_FILES += \
     device/xiaomi/hennessy/configs/agps_profiles_conf2.xml:system/etc/agps_profiles_conf2.xml \

PRODUCT_DEFAULT_PROPERTY_OVERRIDES := \
     ro.adb.secure=0 \
     ro.secure=1 \
     ro.allow.mock.location=1 \
     ro.debuggable=1 \
     ro.zygote=zygote64_32 \
     camera.disable_zsl_mode=1 \
     ro.mount.fs=EXT4 \
     persist.service.acm.enable=0 \
     persist.sys.usb.config=mtp,mass_storage \
     persist.sys.timezone=Europe/Brussels

PRODUCT_PROPERTY_OVERRIDES += \
    ro.kernel.android.checkjni=0 \
    ro.telephony.ril_class=MediaTekRIL \
    ro.telephony.ril.config=fakeiccid  \
    persist.call_recording.enabled=true \
    persist.call_recording.src=4 \
    persist.debug.wfd.enable=1

PRODUCT_PACKAGES += \
    librs_jni \
    com.android.future.usb.accessory

 PRODUCT_PACKAGES += \
    libnl_2 \
    libtinyxml

# Filesystem management tools
PRODUCT_PACKAGES += \
    e2fsck \
    fibmap.f2fs \
    fsck.f2fs \
    mkfs.f2fs \
    make_ext4fs \
    resize2fs \
    setup_fs \
    ext4_resize \
    resize_ext4 \
    superumount 

PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=8

# Dalvik/HWUI
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-2048-dalvik-heap.mk)
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-2048-hwui-memory.mk)
PD: ¿Si cambio en esta linea del BoardConfig.mk de permissive a enforcing tendre el selinux en enforcing o se debe de cambiar en otro sitio?
Código:
androidboot.selinux=permissive

Responder Con Cita
  #16  
Viejo 14/10/16, 12:27:03
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
En Boardconfig.mk edita con este cambio:

[PHP]TARGET_PREBUILT_KERNEL := device/xiaomi/hennessy/prebuilt/kernel
BOARD_KERNEL_IMAGE_NAME := Image.gz-dtb[/PHP]

Y renombra "kernel.gz" a "kernel" en la carpeta prebuilt

Después haz make clean y vuelve a compilar

PD: No cambies el selinux a enforced o no booteará

Última edición por pocarropa Día 14/10/16 a las 12:41:03.
Responder Con Cita
Gracias de parte de:
  #17  
Viejo 14/10/16, 12:54:39
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

 Cita: Originalmente Escrito por pocarropa Ver Mensaje
En Boardconfig.mk edita con este cambio:

[php]TARGET_PREBUILT_KERNEL := device/xiaomi/hennessy/prebuilt/kernel
BOARD_KERNEL_IMAGE_NAME := Image.gz-dtb[/php]Y renombra "kernel.gz" a "kernel" en la carpeta prebuilt

Después haz make clean y vuelve a compilar

PD: No cambies el selinux a enforced o no booteará
Vale, he probado esto ultimo que me has puesto (lo de añadir una linea a BoardConfig.mk y renombrar el kernel.gz a kernel) y ha funcionado pero algo mas adelante otro error, que algo me dice, que va a ser por algo de rutas, como el anterior.
He encontrado un archivo con el mismo nombre excepto que en vez de ser "file_context" es "file_contexts" en la carpeta sepolicy del device tree,
¿Quizas sea este el archivo que busca?

Código:
make: *** No hay ninguna regla para construir el objetivo 'device/xiaomi/hennessy/rootdir/file_context', necesario para '/home/xabi/cm-12.1/out/target/product/hennessy/root/file_context'.  Alto.
make: *** Se espera a que terminen otras tareas....
Notice file: external/sepolicy/NOTICE -- /home/xabi/cm-12.1/out/target/product/hennessy/obj/NOTICE_FILES/src//root/service_contexts.txt
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (03:42 (mm:ss)) ####

Última edición por Ragga_Muffin Día 14/10/16 a las 13:07:47.
Responder Con Cita
  #18  
Viejo 14/10/16, 13:09:18
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
No sé que ha debido pasar pero el device tree no se ha subido bien, faltan archivos. Descarga el adjunto y añádelo a la carpeta rootdir:

file_context.zip
Responder Con Cita
Gracias de parte de:
  #19  
Viejo 14/10/16, 13:12:51
Array

[xs_avatar]
Ragga_Muffin
Usuario invitado
 
Mensajes: n/a

 Cita: Originalmente Escrito por pocarropa Ver Mensaje
No sé que ha debido pasar pero el device tree no se ha subido bien, faltan archivos. Descarga el adjunto y añádelo a la carpeta rootdir:

Archivo Adjunto 931623
Pues debe ser eso porque ahora ha avanzado mas pero igualmente otro error de que falta otro archivo @pocarropa

Código:
make: *** No hay ninguna regla para construir el objetivo 'device/xiaomi/hennessy/rootdir/init.aee.rc', necesario para '/home/xabi/cm-12.1/out/target/product/hennessy/root/init.aee.rc'.  Alto.
make: *** Se espera a que terminen otras tareas....
Notice file: external/sepolicy/NOTICE -- /home/xabi/cm-12.1/out/target/product/hennessy/obj/NOTICE_FILES/src//root/service_contexts.txt
make: se sale del directorio '/home/xabi/cm-12.1'

#### make failed to build some targets (03:38 (mm:ss)) ####

Última edición por Ragga_Muffin Día 14/10/16 a las 14:00:56.
Responder Con Cita
Gracias de parte de:


  #20  
Viejo 14/10/16, 16:46:53
Array

[xs_avatar]
pocarropa pocarropa no está en línea
Usuario muy activo
 
Fecha de registro: ago 2015
Mensajes: 2,312
Modelo de smartphone: Xiaomi Redmi Note 3
Tu operador: Vodafone
@Ragga_Muffin ,

He estado repasando el device tree y he corregido algunos errores que habían, te lo adjunto para que directamente lo sustituyas y empieces de nuevo con make clean:

hennessy.zip
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Foros Xiaomi > Otros modelos de Xiaomi antiguos > Xiaomi Redmi Note 3 > ROMs y desarrollo Xiaomi Redmi Note 3



Hora actual: 15:55:08 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /