Cecilio Angulo

153 papers A* 2B 16C 3Misc 5Journal 62Unranked 58
YearRankTypeTitle / Venue / Authors
2025 J jnl
Int. J. Soc. Robotics
Azra Aryania, Ruben Huertas-Garcia, Santiago Forgas-Coll, Cecilio Angulo, Guillem Alenyà
2025 conf
AI (2)
Mohana Fathollahi, Antonio Camacho, Cecilio Angulo, Jerrad Hampton
2024 conf
CIBB
Caroline König, Wafaa Guendouz, Pedro Copado, Cecilio Angulo, Àngela Nebot, Susana Ochoa, Maria Lamarca, Rabea Fischer, Fabrice Berna, Lucasz Gaweda, Vanessa Acuña, Alfredo Vellido
2024 B conf
RO-MAN
Azra Aryania, Ruben Huertas-Garcia, Santiago Forgas-Coll, Cecilio Angulo, Guillem Alenyà
2024 conf
CCIA
Antonio Camacho, Manel Velasco, Pau Martí, Cecilio Angulo, Jerrad Hampton
2024 J jnl
Algorithms
Carla Lázaro, Cecilio Angulo
2023 J jnl
IEEE Pervasive Comput.
James L. Crowley, Joëlle Coutaz, Jasmin Grosinger, Javier Vázquez-Salceda, Cecilio Angulo, Alberto Sanfeliu, Luca Iocchi, Anthony G. Cohn
2023 J jnl
Sensors
Martí de Castro-Cros, Manel Velasco, Cecilio Angulo
2023 conf
CCIA
Carlos García Sánchez, Manel Velasco, Cecilio Angulo, Pau Martí, Antonio Camacho
2023 J jnl
Robotics
Edisson Barbecho-Jimbo, David Vallejo-Ramírez, Juan-Carlos Cobos-Torres, Cecilio Angulo, Carlos Flores-Vázquez
2023 J jnl
Sensors
Carlos A. Garcia, Manel Velasco, Cecilio Angulo, Pau Martí, Antonio Camacho
2023 J jnl
Internet Things
Cecilio Angulo, Alejandro Chacón, Pere Ponsa
2022 J jnl
CoRR
James L. Crowley, Joëlle L. Coutaz, Jasmin Grosinger, Javier Vázquez-Salceda, Cecilio Angulo, Alberto Sanfeliu, Luca Iocchi, Anthony G. Cohn
2022 J jnl
Neural Comput. Appl.
Alfredo Vellido, Cecilio Angulo, Karina Gibert
2022 conf
SCC
Cecilio Angulo
2022 A* conf
HRI
Eric Cañas, Alba M. G. Garcia, Anais Garrell, Cecilio Angulo
2022 conf
CCIA
Cecilio Angulo, Cristóbal Raya
2022 J jnl
Sensors
Carlos Flores-Vázquez, Cecilio Angulo, David Vallejo-Ramírez, Daniel Icaza, Santiago Pulla Galindo
2021 C conf
FIE
Olga Sans-Cope, Ethan Danahy, Daniel J. Hannon, Chris Rogers, Jordi Albo-Canals, Cecilio Angulo
2021 J jnl
CoRR
Eric Cañas, Alba M. G. Garcia, Anaís Garrell, Cecilio Angulo
2021 conf
RiE
Olga Sans-Cope, Ethan Danahy, Daniel J. Hannon, Chris Rogers, Jordi Albo-Canals, Cecilio Angulo
2021 J jnl
Sensors
Martí de Castro-Cros, Stefano Rosso, Edgar Bahilo, Manel Velasco, Cecilio Angulo
2021 J jnl
Sensors
Mina Bagherzade Ghazvini, Miquel Sànchez-Marrè, Edgar Bahilo, Cecilio Angulo
2020 conf
IWBBIO
Cecilio Angulo, Luis González Abril, Cristóbal Raya, Juan Antonio Ortega
2020 ed.
WSOM+
Alfredo Vellido, Karina Gibert, Cecilio Angulo, José David Martín-Guerrero
2020 conf
IWBBIO
Esteban Piacentino, Cecilio Angulo
2020 J jnl
Cogn. Comput.
Cecilio Angulo, Zoe Falomir, Davide Anguita, Núria Agell, Erik Cambria
2020 conf
IWBBIO
Esteban Piacentino, Cecilio Angulo
2020 J jnl
IEEE Trans. Cogn. Dev. Syst.
Juan M. Acevedo-Valle, Verena V. Hafner, Cecilio Angulo
2019 conf
CCIA
Alex Cabañeros, Cecilio Angulo
2019 conf
CCIA
Cecilio Angulo, Juan Antonio Ortega, Luis González Abril
2018 conf
CCIA
Jennifer Nguyen, Albert Armisen, Germán Sánchez-Hernández, Núria Agell, Cecilio Angulo
2018 J jnl
Pattern Recognit. Lett.
Jennifer Nguyen, Germán Sánchez-Hernández, Núria Agell, Xari Rovira, Cecilio Angulo
2018 J jnl
Cogn. Syst. Res.
Francisco Javier Ruiz, Núria Agell, Cecilio Angulo, Mónica Sánchez
2018 J jnl
Appl. Soft Comput.
Jennifer Nguyen, Germán Sánchez, Albert Armisen, Núria Agell, Xari Rovira, Cecilio Angulo
2018 J jnl
IEEE Trans. Cogn. Dev. Syst.
Juan M. Acevedo-Valle, Cecilio Angulo, Clément Moulin-Frier
2018 conf
CCIA
Aliasghar Abdirahmani, Cecilio Angulo
2018 J jnl
J. Ambient Intell. Smart Environ.
Karla Trejo, Cecilio Angulo, Shin'ichi Satoh, Mayumi Bono
2017 conf
COSIT
Zoe Falomir, Cecilio Angulo
2017 conf
CCIA
Cristóbal Raya, Francisco Javier Ruiz, Cecilio Angulo, Albert Samà, Núria Agell
2017 conf
ICIRA (3)
Wilbert G. Aguilar, Cecilio Angulo, Ramon Costa-Castelló
2017 B conf
FUZZ-IEEE
Jennifer Nguyen, Germán Sánchez-Hernández, Núria Agell, Albert Armisen, Xari Rovira, Cecilio Angulo
2017 J jnl
IEEE Trans. Cogn. Dev. Syst.
Guillem Alenyà, Ricardo A. Téllez, J. Kevin O'Regan, Cecilio Angulo
2017 J jnl
Appl. Soft Comput.
Luis González Abril, Cecilio Angulo, Haydemar Núñez, Yenny Leal
2017 J jnl
J. Classif.
Haydemar Núñez, Luis González Abril, Cecilio Angulo
2017 conf
CCIA
Juan M. Acevedo-Valle, Karla Trejo, Cecilio Angulo
2017 conf
CCIA
Cecilio Angulo, Juan M. Acevedo-Valle
2017 conf
IWANN (2)
Wilbert G. Aguilar, Marco A. Luna, Julio F. Moya, Vanessa Abad, Hugo Ruiz, Humberto Parra, Cecilio Angulo
2017 ed.
CCIA
Isabel Aguiló, René Alquézar, Cecilio Angulo, Alberto Ortiz, Joan Torrens
2017 conf
ICDL-EPIROB
Juan M. Acevedo-Valle, Verena V. Hafner, Cecilio Angulo
2017 J jnl
Int. J. Comput. Vis.
Xavier Perez-Sala, Fernando De la Torre, Laura Igual, Sergio Escalera, Cecilio Angulo
2016 J jnl
Comput. Vis. Image Underst.
Gerard Canal, Sergio Escalera, Cecilio Angulo
2016 conf
CCIA
Jennifer Nguyen, Germán Sánchez-Hernández, Núria Agell, Xari Rovira, Cecilio Angulo
2016 conf
CCIA
Sai Kishor Kothakota, Cecilio Angulo
2016 J jnl
Neural Process. Lett.
Wilbert G. Aguilar, Cecilio Angulo
2016 J jnl
Computación y Sistemas
Karla Trejo, Cecilio Angulo
2015 conf
CCIA
Karla Trejo, Cecilio Angulo, Juan Carlos Aguado
2015 conf
HRI (Extended Abstracts)
Jordi Albo-Canals, Adso Fernández-Baena, Roger Boldu, Alex Barco, Joan Navarro, David Miralles, Cristóbal Raya, Cecilio Angulo
2015 J jnl
Int. J. Humanoid Robotics
Marta Díaz, Dennys Paillacho, Cecilio Angulo, Oriol Torres, Jonathan González, Jordi Albo-Canals
2015 J jnl
J. Ambient Intell. Smart Environ.
Cecilio Angulo, Sammy Pfeiffer, Ricardo A. Téllez, Guillem Alenyà
2015 conf
IWBBIO (2)
Ferran Larriba, Cristóbal Raya, Cecilio Angulo, Jordi Albo-Canals, Marta Díaz, Roger Boldu
2015 B conf
IJCNN
Gerard Canal, Cecilio Angulo, Sergio Escalera
2015 J jnl
Pattern Recognit. Lett.
Sammy Pfeiffer, Cecilio Angulo
2015 B conf
FUZZ-IEEE
Jennifer Nguyen, Germán Sánchez-Hernández, Núria Agell, Cecilio Angulo
2015 J jnl
J. Ambient Intell. Smart Environ.
Amara Andrés, Diego E. Pardo, Marta Díaz, Cecilio Angulo
2015 conf
CCIA
Juan M. Acevedo-Valle, Cecilio Angulo, Núria Agell, Clément Moulin-Frier
2015 J jnl
Connect. Sci.
Jordi-Ysard Puigbo, Albert Pumarola, Cecilio Angulo, Ricardo A. Téllez
2014 J jnl
Sensors
Xavier Perez-Sala, Sergio Escalera, Cecilio Angulo, Jordi Gonzàlez
2014 A* conf
HRI
Marta Díaz, Dennys Paillacho, Cecilio Angulo, Oriol Torres, Jonathan González, Jordi Albo-Canals
2014 J jnl
Pattern Recognit.
Laura Igual, Xavier Perez-Sala, Sergio Escalera, Cecilio Angulo, Fernando De la Torre
2014 conf
CCIA
Jennifer Nguyen, A. Pereda, Germán Sánchez-Hernández, Cecilio Angulo
2014 C conf
CCA
Jordi Duatis, Cecilio Angulo, Vicenç Puig
2014 J jnl
Appl. Soft Comput.
Luis González Abril, Haydemar Núñez, Cecilio Angulo, Francisco Velasco Morente
2014 J jnl
Appl. Intell.
Manel Velasco, Enric X. Martín, Cecilio Angulo, Pau Martí
2014 J jnl
Pattern Recognit. Lett.
Antonio Hernández-Vela, Miguel Ángel Bautista, Xavier Perez-Sala, Víctor Ponce-López, Sergio Escalera, Xavier Baró, Oriol Pujol, Cecilio Angulo
2014 J jnl
EURASIP J. Image Video Process.
Wilbert G. Aguilar, Cecilio Angulo
2014 conf
SSD
Wilbert G. Aguilar, Cecilio Angulo
2014 conf
ECCV Workshops (1)
Xavier Perez-Sala, Fernando De la Torre, Laura Igual, Sergio Escalera, Cecilio Angulo
2013 J jnl
Pattern Recognit. Lett.
Luis González Abril, Francisco Velasco Morente, Cecilio Angulo, Juan Antonio Ortega-Ramírez
2013 B conf
RO-MAN
Jordi Albo-Canals, Marcel Heerink, Marta Díaz, Vanesa Padillo, Marta Maristany, Alex Barco, Cecilio Angulo, Ariana Riccio, Lauren Brodsky, Simone Dufresne, Samuel Heilbron, Elissa Milto, Roula Choueiri, Dan Hannon, Chris Rogers
2013 B conf
RO-MAN
Marta Díaz, Joan Saez-Pons, Marcel Heerink, Cecilio Angulo
2013 conf
CCIA
Luis González Abril, Cecilio Angulo
2012 B conf
RO-MAN
Marcel Heerink, Marta Díaz, Jordi Albo-Canals, Cecilio Angulo, Alex Barco, Judit Casacuberta, Carles Garriga
2012 B conf
ICPR
Antonio Hernández-Vela, Miguel Ángel Bautista, Xavier Perez-Sala, Víctor Ponce-López, Xavier Baró, Oriol Pujol, Cecilio Angulo, Sergio Escalera
2012 J jnl
Expert Syst. Appl.
Cecilio Angulo, Joan Cabestany, Pablo Rodríguez, Montserrat Batlle, Antonio González, Sergio de Campos
2012 conf
UCAmI
Diego E. Pardo, Òscar Franco, Joan Saez-Pons, Amara Andrés, Cecilio Angulo
2012 J jnl
Expert Syst. Appl.
Daniel Fuentes, Luis González Abril, Cecilio Angulo, Juan Antonio Ortega-Ramírez
2012 conf
WDIA
Miguel Ángel Bautista, Antonio Hernández-Vela, Víctor Ponce-López, Xavier Perez-Sala, Xavier Baró, Oriol Pujol, Cecilio Angulo, Sergio Escalera
2012 conf
CCIA
Xavier Perez-Sala, Sergio Escalera, Cecilio Angulo
2012 conf
IWAAL
Cecilia Yu Chung Chang, Marta Díaz, Cecilio Angulo
2011 B conf
ESANN
Haydemar Núñez, Luis González Abril, Cecilio Angulo
2011 conf
IWANN (2)
Cecilio Angulo, Joan Comas, Diego E. Pardo
2011 J jnl
Neurocomputing
Albert Samà, Cecilio Angulo, Diego E. Pardo, Andreu Català, Joan Cabestany
2011 conf
IWANN (2)
Xavier Perez-Sala, Cecilio Angulo, Sergio Escalera
2011 conf
CCIA
Xavier Perez-Sala, Cecilio Angulo, Sergio Escalera
2011 B conf
FG
Marta Díaz, Neus Nuno, Joan Saez-Pons, Diego E. Pardo, Cecilio Angulo
2010 J jnl
Neurocomputing
Cecilio Angulo, John Aldo Lee, Frank-Michael Schleif
2009 C conf
ETFA
Cecilio Angulo, Gaspar Valls
2009 conf
CCIA
Diego E. Pardo, Sergi del Moral, Cecilio Angulo
2009 J jnl
Neurocomputing
Diego E. Pardo, Cecilio Angulo, Sergi del Moral, Andreu Català
2009 J jnl
Int. J. Robotics Autom.
Cecilio Angulo, Ricardo A. Téllez, Diego E. Pardo
2009 ch.
Encyclopedia of Artificial Intelligence
Ricardo A. Téllez, Cecilio Angulo
2009 B conf
ESANN
Francisco Javier Ruiz, Núria Agell, Cecilio Angulo
2009 conf
IWANN (1)
Sergi del Moral, Diego E. Pardo, Cecilio Angulo
2009 ch.
Encyclopedia of Artificial Intelligence
Cecilio Angulo, Luis González Abril
2009 conf
IWANN (1)
Jordi Parera, Cecilio Angulo, Alejandro Rodríguez-Molinero, Joan Cabestany
2009 conf
CCIA
Albert Samà, Francisco Javier Ruiz, Núria Agell, Cecilio Angulo
2008 J jnl
IEEE Trans. Neural Networks
Luis González Abril, Cecilio Angulo, Francisco Velasco Morente, Juan Antonio Ortega
2008 J jnl
IEEE Trans. Knowl. Data Eng.
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell
2008 conf
CCIA
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell
2008 J jnl
IEEE Trans. Neural Networks
Cecilio Angulo
2008 ch.
Rule Extraction from Support Vector Machines
Haydemar Núñez, Cecilio Angulo, Andreu Català
2008 J jnl
Int. J. Comput. Intell. Syst.
Wensen An, Cecilio Angulo, Yanguang Sun
2008 J jnl
Neurocomputing
Cecilio Angulo, Davide Anguita, Luis González Abril, Juan Antonio Ortega
2007 ed.
CCIA
Cecilio Angulo, Lluís Godo
2007 conf
ICINCO-RA (1)
Diego E. Pardo, Cecilio Angulo
2007 conf
KES (2)
Juan Antonio Álvarez, Carlos Pérez-López, Cecilio Angulo, Juan Antonio Ortega
2007 Misc conf
IWANN
Ricardo A. Téllez, Cecilio Angulo
2007 Misc conf
IWANN
Diego E. Pardo, Cecilio Angulo
2007 B conf
ESANN
Cecilio Angulo, Davide Anguita, Luis González Abril
2007 Misc conf
IWANN
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell, Andreu Català
2007 Misc conf
IWANN
Cecilio Angulo, Luis González Abril, Andreu Català, Francisco Velasco Morente
2007 conf
CCIA
Cecilio Angulo, Ricardo A. Téllez, Diego E. Pardo
2007 J jnl
AI Commun.
Marta Domingo, Núria Agell, Xavier Parra, Mónica Sánchez, Cecilio Angulo
2006 J jnl
Computación y Sistemas
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell
2006 J jnl
Rev. Iberoam. de Tecnol. del Aprendiz.
Cecilio Angulo, Pere Ponsa, Cristóbal Raya
2006 conf
I-ESA
Luis González Abril, Francisco Velasco Morente, Francisco Javier Cuberos, Juan Antonio Ortega-Ramírez, Cecilio Angulo
2006 J jnl
Pattern Recognit.
Luis González Abril, Cecilio Angulo, Francisco Velasco Morente, Andreu Català
2006 conf
BioADIT
Ricardo A. Téllez, Cecilio Angulo, Diego E. Pardo
2006 J jnl
Neural Process. Lett.
Cecilio Angulo, Francisco Javier Ruiz, Luis González Abril, Juan Antonio Ortega
2006 conf
KES (2)
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell
2006 J jnl
Neural Process. Lett.
Haydemar Núñez, Cecilio Angulo, Andreu Català
2006 conf
CCIA
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell
2006 conf
CCIA
Ricardo A. Téllez, Cecilio Angulo
2005 conf
CCIA
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell, Xari Rovira, Mónica Sánchez, Francesc Prats
2005 conf
CCIA
Gustavo González, Beatriz López, Cecilio Angulo, Josep Lluís de la Rosa
2005 Misc conf
IWANN
Ricardo A. Téllez, Cecilio Angulo, Diego E. Pardo
2005 J jnl
Pattern Recognit.
Luis González Abril, Cecilio Angulo, Francisco Velasco Morente, Andreu Català
2004 J jnl
Inteligencia Artif.
Luis González Abril, Francisco Velasco Morente, Cecilio Angulo, Juan Antonio Ortega, Francisco Javier Ruiz
2003 B conf
ESANN
Cecilio Angulo, Luis González Abril
2003 J jnl
Computación y Sistemas
Francisco Javier Ruiz, Cecilio Angulo, Núria Agell, Xari Rovira, Ricardo Campos, Mónica Sánchez
2003 conf
IWANN (1)
Haydemar Núñez, Cecilio Angulo, Andreu Català
2002 B conf
ESANN
Cecilio Angulo, Xavier Parra, Andreu Català
2002 conf
CCIA
Adama Traoré, Monique Polit, Cecilio Angulo, Andreu Català
2002 J jnl
Inteligencia Artif.
Luis González Abril, Cecilio Angulo, Francisco Velasco Morente, M. Vilches
2002 conf
IBERAMIA
Haydemar Núñez, Cecilio Angulo, Andreu Català
2002 B conf
ESANN
Haydemar Núñez, Cecilio Angulo, Andreu Català
2002 conf
SBRN
Haydemar Núñez, Cecilio Angulo, Andreu Català
2001
Cecilio Angulo
2001 J jnl
Inteligencia Artif.
Xavier Parra, Cecilio Angulo, Núria Agell, Xari Rovira
2001 conf
IWANN (1)
Cecilio Angulo, Andreu Català
2000 J jnl
Neural Process. Lett.
Andreu Català, Cecilio Angulo
1998 B conf
ESANN
Cecilio Angulo, Andreu Català
redb/extractors/apk_extractors/apk_manifest.py
← Index redb/extractors/apk_extractors/apk_manifest.py python
import inspect
import json
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.apk_extractor import APKExtractor
from redb.models.dataclasses import APKManifest, APKManifestComponent


class APKManifestExtractor(APKExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False,
        apk=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, apk,
        )
        self.manifest = None
        self.components = []
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.APK_MANIFEST.value

    def _is_component_exported(self, component_type, component_name):
        """Determine if a component is exported.

        Pre-API 31: exported is implicitly True if intent filters exist.
        API 31+: android:exported must be explicit; default is False.
        """
        try:
            exported_attr = None
            # Try to get the exported attribute directly from the XML
            axml = self.apk.get_android_manifest_xml()
            if axml is not None:
                for node in axml.getElementsByTagName(component_type):
                    name = node.getAttributeNS(
                        "http://schemas.android.com/apk/res/android", "name"
                    )
                    if name == component_name:
                        exported_attr = node.getAttributeNS(
                            "http://schemas.android.com/apk/res/android", "exported"
                        )
                        break
        except Exception:
            exported_attr = None

        if exported_attr == "true":
            return True
        if exported_attr == "false":
            return False

        # If not explicitly set, check for intent filters (pre-API 31 behavior)
        try:
            intent_filters = self.apk.get_intent_filters(component_type, component_name)
            if intent_filters:
                actions = intent_filters.get("action", [])
                if actions:
                    return True
        except Exception:
            pass

        return False

    def _get_intent_filters_for_component(self, component_type, component_name):
        """Get intent filters for a specific component."""
        actions = []
        categories = []
        try:
            intent_filters = self.apk.get_intent_filters(component_type, component_name)
            if intent_filters:
                actions = intent_filters.get("action", [])
                categories = intent_filters.get("category", [])
        except Exception:
            pass
        return actions, categories

    def _safe_extract(self, field_name, func, default=None):
        """Extract a single field, logging and returning default on failure."""
        try:
            return func()
        except Exception as e:
            self.log.warning(
                f"Error extracting APK manifest field '{field_name}' for "
                f"{self.hash.sha256}: {e}"
            )
            return default

    def extract(self):
        if not self._is_valid_apk():
            self.log.error(f"Invalid APK for {self.hash.sha256}")
            return None

        activities = self._safe_extract(
            "activities", lambda: list(self.apk.get_activities() or []), []
        )
        services = self._safe_extract(
            "services", lambda: list(self.apk.get_services() or []), []
        )
        receivers = self._safe_extract(
            "receivers", lambda: list(self.apk.get_receivers() or []), []
        )
        providers = self._safe_extract(
            "providers", lambda: list(self.apk.get_providers() or []), []
        )

        # Build component list with intent filter info
        self.components = []
        all_actions = set()
        all_categories = set()
        exported_components = []

        component_map = [
            ("activity", activities),
            ("service", services),
            ("receiver", receivers),
            ("provider", providers),
        ]

        for comp_type, comp_list in component_map:
            for comp_name in comp_list:
                try:
                    is_exported = self._is_component_exported(comp_type, comp_name)
                    actions, categories = self._get_intent_filters_for_component(
                        comp_type, comp_name
                    )
                    all_actions.update(actions)
                    all_categories.update(categories)
                    if is_exported:
                        exported_components.append(comp_name)

                    self.components.append(APKManifestComponent(
                        component_type=comp_type,
                        class_name=comp_name,
                        is_exported=is_exported,
                        intent_actions=list(actions),
                        intent_categories=list(categories),
                    ))
                except Exception as e:
                    self.log.warning(
                        f"Error processing component '{comp_name}' for "
                        f"{self.hash.sha256}: {e}"
                    )
                    # Still add the component with minimal info
                    self.components.append(APKManifestComponent(
                        component_type=comp_type,
                        class_name=comp_name,
                        is_exported=False,
                        intent_actions=[],
                        intent_categories=[],
                    ))

        # Uses-feature
        uses_features = []
        try:
            uses_features = list(self.apk.get_features() or [])
        except Exception:
            pass

        # Meta-data
        meta_data = None
        try:
            axml = self.apk.get_android_manifest_xml()
            if axml is not None:
                md = {}
                for node in axml.getElementsByTagName("meta-data"):
                    name = node.getAttributeNS(
                        "http://schemas.android.com/apk/res/android", "name"
                    )
                    value = node.getAttributeNS(
                        "http://schemas.android.com/apk/res/android", "value"
                    )
                    resource = node.getAttributeNS(
                        "http://schemas.android.com/apk/res/android", "resource"
                    )
                    if name:
                        md[name] = value or resource or ""
                if md:
                    meta_data = md
        except Exception:
            pass

        # Full manifest XML
        manifest_xml = None
        try:
            axml = self.apk.get_android_manifest_xml()
            if axml is not None:
                manifest_xml = axml.toxml()
        except Exception:
            try:
                manifest_xml = self.apk.get_android_manifest_axml().get_xml()
                if isinstance(manifest_xml, bytes):
                    manifest_xml = manifest_xml.decode("utf-8", errors="replace")
            except Exception:
                pass

        self.manifest = APKManifest(
            activity_count=len(activities),
            service_count=len(services),
            receiver_count=len(receivers),
            provider_count=len(providers),
            activities=activities,
            services=services,
            receivers=receivers,
            providers=providers,
            exported_components=exported_components,
            intent_filters_by_action=sorted(all_actions),
            intent_filters_by_category=sorted(all_categories),
            uses_features=uses_features,
            meta_data=meta_data,
            manifest_xml=manifest_xml,
        )
        return self.manifest

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ClickHouseExporter":
            if not self.manifest:
                return None

            current_time = datetime.now(timezone.utc)
            m = self.manifest

            # Components table (one row per component)
            components_data = []
            for comp in self.components:
                components_data.append([
                    self.sha256,
                    comp.component_type,
                    comp.class_name,
                    int(comp.is_exported),
                    comp.intent_actions,
                    comp.intent_categories,
                    current_time,
                ])

            # Manifest summary table (one row per APK)
            manifest_data = [[
                self.sha256,
                m.activity_count,
                m.service_count,
                m.receiver_count,
                m.provider_count,
                m.intent_filters_by_action,
                m.intent_filters_by_category,
                m.uses_features,
                m.manifest_xml,
                current_time,
            ]]

            return {
                'multi_table': True,
                'manifest': {
                    'table': 'redb_apk_manifest',
                    'data': manifest_data,
                    'column_names': [
                        'sha256',
                        'activity_count', 'service_count', 'receiver_count', 'provider_count',
                        'intent_filters_by_action', 'intent_filters_by_category',
                        'uses_features', 'manifest_xml', 'analysis_date',
                    ],
                    'column_type_names': [
                        'FixedString(64)',
                        'UInt16', 'UInt16', 'UInt16', 'UInt16',
                        'Array(String)', 'Array(String)',
                        'Array(String)', 'Nullable(String)',
                        "DateTime64(3, 'UTC')",
                    ],
                },
                'components': {
                    'table': 'redb_apk_components',
                    'data': components_data,
                    'column_names': [
                        'sha256', 'component_type', 'class_name', 'is_exported',
                        'intent_actions', 'intent_categories', 'analysis_date',
                    ],
                    'column_type_names': [
                        'FixedString(64)', 'LowCardinality(String)', 'String', 'UInt8',
                        'Array(String)', 'Array(String)',
                        "DateTime64(3, 'UTC')",
                    ],
                },
            }

    def get_clickhouse_table(self) -> str:
        return "redb_apk_manifest"