Soumettre la recherche
Mettre en ligne
Android Internals
•
4 j'aime
•
1,832 vues
Marko Gargenta
Suivre
Android Internals presentation that Marko did at AnDevCon.
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 24
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Android Deep Dive
Android Deep Dive
Marko Gargenta
Open Android
Open Android
Marko Gargenta
Android For Managers Slides
Android For Managers Slides
Marko Gargenta
Marakana Android Internals
Marakana Android Internals
Marko Gargenta
Android for Java Developers
Android for Java Developers
Marko Gargenta
Android for Java Developers at OSCON 2010
Android for Java Developers at OSCON 2010
Marko Gargenta
Android For Java Developers
Android For Java Developers
Mike Wolfson
Android Internals
Android Internals
Marko Gargenta
Recommandé
Android Deep Dive
Android Deep Dive
Marko Gargenta
Open Android
Open Android
Marko Gargenta
Android For Managers Slides
Android For Managers Slides
Marko Gargenta
Marakana Android Internals
Marakana Android Internals
Marko Gargenta
Android for Java Developers
Android for Java Developers
Marko Gargenta
Android for Java Developers at OSCON 2010
Android for Java Developers at OSCON 2010
Marko Gargenta
Android For Java Developers
Android For Java Developers
Mike Wolfson
Android Internals
Android Internals
Marko Gargenta
Android Beyond The Phone
Android Beyond The Phone
Marko Gargenta
Android: A 9,000-foot Overview
Android: A 9,000-foot Overview
Marko Gargenta
An Introduction To Android
An Introduction To Android
GoogleTecTalks
2011 android
2011 android
vpedapolu
Android Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar Gargenta
Marakana Inc.
Droid con 2012 bangalore v2.0
Droid con 2012 bangalore v2.0
Premchander Rao
The anatomy and philosophy of Android - Google I/O 2009
The anatomy and philosophy of Android - Google I/O 2009
Viswanath J
Slides bootcamp21
Slides bootcamp21
dxsaki
Nokia Qt SDK in action - Qt developer days 2010
Nokia Qt SDK in action - Qt developer days 2010
Nokia
Meego의 현재와 미래(2)
Meego의 현재와 미래(2)
mosaicnet
Android architecture
Android architecture
Hari Krishna
Droid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtime
Droidcon Berlin
Qt - for stack overflow developer conference
Qt - for stack overflow developer conference
Nokia
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
DALEZ
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
Nokia
ARM
ARM
Ramasubbu .P
Introduction To Android
Introduction To Android
ma-polimi
Develop Ruby Applications Fast | TubroRuby
Develop Ruby Applications Fast | TubroRuby
Michael Findling
Connected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discovery
Talentica Software
Android on Intel platforms : current state, near-future, future & developers ...
Android on Intel platforms : current state, near-future, future & developers ...
BeMyApp
Android NDK and the x86 Platform
Android NDK and the x86 Platform
Sebastian Mauer
Relative clauses
Relative clauses
Sonia
Contenu connexe
Tendances
Android Beyond The Phone
Android Beyond The Phone
Marko Gargenta
Android: A 9,000-foot Overview
Android: A 9,000-foot Overview
Marko Gargenta
An Introduction To Android
An Introduction To Android
GoogleTecTalks
2011 android
2011 android
vpedapolu
Android Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar Gargenta
Marakana Inc.
Droid con 2012 bangalore v2.0
Droid con 2012 bangalore v2.0
Premchander Rao
The anatomy and philosophy of Android - Google I/O 2009
The anatomy and philosophy of Android - Google I/O 2009
Viswanath J
Slides bootcamp21
Slides bootcamp21
dxsaki
Nokia Qt SDK in action - Qt developer days 2010
Nokia Qt SDK in action - Qt developer days 2010
Nokia
Meego의 현재와 미래(2)
Meego의 현재와 미래(2)
mosaicnet
Android architecture
Android architecture
Hari Krishna
Droid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtime
Droidcon Berlin
Qt - for stack overflow developer conference
Qt - for stack overflow developer conference
Nokia
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
DALEZ
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
Nokia
ARM
ARM
Ramasubbu .P
Introduction To Android
Introduction To Android
ma-polimi
Develop Ruby Applications Fast | TubroRuby
Develop Ruby Applications Fast | TubroRuby
Michael Findling
Connected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discovery
Talentica Software
Tendances
(19)
Android Beyond The Phone
Android Beyond The Phone
Android: A 9,000-foot Overview
Android: A 9,000-foot Overview
An Introduction To Android
An Introduction To Android
2011 android
2011 android
Android Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar Gargenta
Droid con 2012 bangalore v2.0
Droid con 2012 bangalore v2.0
The anatomy and philosophy of Android - Google I/O 2009
The anatomy and philosophy of Android - Google I/O 2009
Slides bootcamp21
Slides bootcamp21
Nokia Qt SDK in action - Qt developer days 2010
Nokia Qt SDK in action - Qt developer days 2010
Meego의 현재와 미래(2)
Meego의 현재와 미래(2)
Android architecture
Android architecture
Droid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtime
Qt - for stack overflow developer conference
Qt - for stack overflow developer conference
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
ARM
ARM
Introduction To Android
Introduction To Android
Develop Ruby Applications Fast | TubroRuby
Develop Ruby Applications Fast | TubroRuby
Connected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discovery
En vedette
Android on Intel platforms : current state, near-future, future & developers ...
Android on Intel platforms : current state, near-future, future & developers ...
BeMyApp
Android NDK and the x86 Platform
Android NDK and the x86 Platform
Sebastian Mauer
Relative clauses
Relative clauses
Sonia
Wordpress33 base
Wordpress33 base
Artlandis' Webinar & Workshop
eTwiningový maraton - ZS Nemsova
eTwiningový maraton - ZS Nemsova
ivanabrabcova
Keyboard Access APIs
Keyboard Access APIs
toddkloots
Greenwashing, Marketing a Sustainable future (rev1
Greenwashing, Marketing a Sustainable future (rev1
zenthings
Turbulent Times Leadership for Sales Managers
Turbulent Times Leadership for Sales Managers
Business Book Summaries
Office 365 ( 0365) opastusta
Office 365 ( 0365) opastusta
Pasi Siltakorpi
Unit 5
Unit 5
Mari Carmen Ocete, C.E.I.P. Francisco Giner de los Ríos
Llenguatge ciències
Llenguatge ciències
Arnau Cerdà
Healthcare2.0 Turning Hell care into healthcare
Healthcare2.0 Turning Hell care into healthcare
Betsy Bevilacqua
Mães na Internet e o Cenário em Cuiabá
Mães na Internet e o Cenário em Cuiabá
Matheus Moraes
Oracle Warehouse Builder - JUGM 2010
Oracle Warehouse Builder - JUGM 2010
J. Ulises Gonzalez Medina
Clin infect dis. 2015-o'neill-1871-7
Clin infect dis. 2015-o'neill-1871-7
Alex Castañeda-Sabogal
Blogging and How It Complements Your Marketing Strategy
Blogging and How It Complements Your Marketing Strategy
Kayak Online Marketing
Dossier de premsa acord Derpartament de Cultura, Gremi d'Empresaris de Cinema...
Dossier de premsa acord Derpartament de Cultura, Gremi d'Empresaris de Cinema...
Institut Català de les Empreses Culturals
Guida a Linkedin: profilo personale e aziendale
Guida a Linkedin: profilo personale e aziendale
Artlandis' Webinar & Workshop
Was sagen die Sagen ... von unserer region
Was sagen die Sagen ... von unserer region
ivanabrabcova
Rekonstrukce šaten
Rekonstrukce šaten
ivanabrabcova
En vedette
(20)
Android on Intel platforms : current state, near-future, future & developers ...
Android on Intel platforms : current state, near-future, future & developers ...
Android NDK and the x86 Platform
Android NDK and the x86 Platform
Relative clauses
Relative clauses
Wordpress33 base
Wordpress33 base
eTwiningový maraton - ZS Nemsova
eTwiningový maraton - ZS Nemsova
Keyboard Access APIs
Keyboard Access APIs
Greenwashing, Marketing a Sustainable future (rev1
Greenwashing, Marketing a Sustainable future (rev1
Turbulent Times Leadership for Sales Managers
Turbulent Times Leadership for Sales Managers
Office 365 ( 0365) opastusta
Office 365 ( 0365) opastusta
Unit 5
Unit 5
Llenguatge ciències
Llenguatge ciències
Healthcare2.0 Turning Hell care into healthcare
Healthcare2.0 Turning Hell care into healthcare
Mães na Internet e o Cenário em Cuiabá
Mães na Internet e o Cenário em Cuiabá
Oracle Warehouse Builder - JUGM 2010
Oracle Warehouse Builder - JUGM 2010
Clin infect dis. 2015-o'neill-1871-7
Clin infect dis. 2015-o'neill-1871-7
Blogging and How It Complements Your Marketing Strategy
Blogging and How It Complements Your Marketing Strategy
Dossier de premsa acord Derpartament de Cultura, Gremi d'Empresaris de Cinema...
Dossier de premsa acord Derpartament de Cultura, Gremi d'Empresaris de Cinema...
Guida a Linkedin: profilo personale e aziendale
Guida a Linkedin: profilo personale e aziendale
Was sagen die Sagen ... von unserer region
Was sagen die Sagen ... von unserer region
Rekonstrukce šaten
Rekonstrukce šaten
Similaire à Android Internals
Using the NDK and Renderscript
Using the NDK and Renderscript
Motorola Mobility - MOTODEV
International Journal of Engineering Research and Development
International Journal of Engineering Research and Development
IJERD Editor
Android 110521210945-phpapp01
Android 110521210945-phpapp01
Mona AlRekabi
Android NDK
Android NDK
Sentinel Solutions Ltd
Android ndk
Android ndk
Sentinel Solutions Ltd
C,c++,java,php,.net training institute in delhi, best training institute for ...
C,c++,java,php,.net training institute in delhi, best training institute for ...
MCM COmpetitive Classes
Getting Native with NDK
Getting Native with NDK
ナム-Nam Nguyễn
document
document
Joyful Vino
Android ndk - Introduction
Android ndk - Introduction
Rakesh Jha
Developing and-benchmarking-native-linux-applications-on-android
Developing and-benchmarking-native-linux-applications-on-android
Elvis Jon Freddy Sitinjak
Mobile application development
Mobile application development
rohithn
MonoTouch 5.2 Introduction
MonoTouch 5.2 Introduction
Xamarin
Introduction to android
Introduction to android
krishnastudent88
Session i
Session i
DrUjwala1
Basic of Android App Development
Basic of Android App Development
Abhijeet Gupta
Collaborative and agile development of mobile applications
Collaborative and agile development of mobile applications
Ayushman Jain
Session 1 beccse
Session 1 beccse
vin123456gangal
Show and Tell: Building Applications on Cisco Open SDN Controller
Show and Tell: Building Applications on Cisco Open SDN Controller
Cisco DevNet
Lecture 1 Introduction to React Native.pptx
Lecture 1 Introduction to React Native.pptx
GevitaChinnaiah
Android
Android
aktash12
Similaire à Android Internals
(20)
Using the NDK and Renderscript
Using the NDK and Renderscript
International Journal of Engineering Research and Development
International Journal of Engineering Research and Development
Android 110521210945-phpapp01
Android 110521210945-phpapp01
Android NDK
Android NDK
Android ndk
Android ndk
C,c++,java,php,.net training institute in delhi, best training institute for ...
C,c++,java,php,.net training institute in delhi, best training institute for ...
Getting Native with NDK
Getting Native with NDK
document
document
Android ndk - Introduction
Android ndk - Introduction
Developing and-benchmarking-native-linux-applications-on-android
Developing and-benchmarking-native-linux-applications-on-android
Mobile application development
Mobile application development
MonoTouch 5.2 Introduction
MonoTouch 5.2 Introduction
Introduction to android
Introduction to android
Session i
Session i
Basic of Android App Development
Basic of Android App Development
Collaborative and agile development of mobile applications
Collaborative and agile development of mobile applications
Session 1 beccse
Session 1 beccse
Show and Tell: Building Applications on Cisco Open SDN Controller
Show and Tell: Building Applications on Cisco Open SDN Controller
Lecture 1 Introduction to React Native.pptx
Lecture 1 Introduction to React Native.pptx
Android
Android
Plus de Marko Gargenta
LTE: Building New Killer Apps
LTE: Building New Killer Apps
Marko Gargenta
Java Champion Wanted
Java Champion Wanted
Marko Gargenta
Marakana Android User Interface
Marakana Android User Interface
Marko Gargenta
Marakana android-java developers
Marakana android-java developers
Marko Gargenta
Scrum Overview
Scrum Overview
Marko Gargenta
Why Python by Marilyn Davis, Marakana
Why Python by Marilyn Davis, Marakana
Marko Gargenta
Jens Østergaard on Why Scrum Is So Hard
Jens Østergaard on Why Scrum Is So Hard
Marko Gargenta
Jens Østergaard on Why Scrum Is So Hard
Jens Østergaard on Why Scrum Is So Hard
Marko Gargenta
Plus de Marko Gargenta
(8)
LTE: Building New Killer Apps
LTE: Building New Killer Apps
Java Champion Wanted
Java Champion Wanted
Marakana Android User Interface
Marakana Android User Interface
Marakana android-java developers
Marakana android-java developers
Scrum Overview
Scrum Overview
Why Python by Marilyn Davis, Marakana
Why Python by Marilyn Davis, Marakana
Jens Østergaard on Why Scrum Is So Hard
Jens Østergaard on Why Scrum Is So Hard
Jens Østergaard on Why Scrum Is So Hard
Jens Østergaard on Why Scrum Is So Hard
Dernier
Architecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
apidays
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
Zilliz
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
apidays
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
Sandro Moreira
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
The Digital Insurer
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
UiPathCommunity
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
apidays
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Orbitshub
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Product Anonymous
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Juan lago vázquez
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
Remote DBA Services
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc
Dernier
(20)
Architecting Cloud Native Applications
Architecting Cloud Native Applications
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
Android Internals
1.
Android
Internals Overview Marko Gargenta marakana.com © 2011
2.
About Marko Gargenta
Developer of Android Bootcamp for Marakana. Instructor for 1,000s of developers on Android at Qualcomm, Cisco, Motorola, Texas Instruments, Sony- Ericsson, Sharp, NetGear, DoD and other great orgs. Author of Learning Android published by O’Reilly. Speaker at OSCON, ACM, IEEE, SDC, AnDevCon. Founder of SFAndroid.org © 2011
3.
Agenda
• Android Startup & Run>me • Layer Interac>on • NDK • AIDL • Summary © 2011
4.
ANDROID
STARTUP & RUNTIME © 2011
5.
Run>me Overview ©
2011
6.
The Stack ©
2011
7.
LAYER INTERACTION ©
2011
8.
Layer Interac>ons
There are three main scenarios for your app to talk to native library: - Directly - Via native service - Via native daemon It will depend on the type of app and type of native library which method works best. © 2011
9.
Audio Framework ©
2011
10.
Camera and Video
Framework © 2011
11.
Java Na>ve Interface
JNI defines naming and coding convention so that Java VM can find and call native code. JNI is built into JVM to provide access to OS I/O and others. Your JNI code runs on top Java VM. © 2011
12.
Building and Running
JNI Code © 2011
13.
NATIVE
DEVELOPMENT KIT © 2011
14.
What’s in NDK?
Tools to build and cross-compile your native code for the device architecture (ARMv5TE and ARMv7-A; x86 in future releases) A way to package your library into the APK file so you can distribute your application easily A set of native system headers that will be supported for the future releases of Android platform (libc, libm, libz, liblog, libjnigrahics, OpenGL/OpenSL ES, JNI headers, minimal C++ support headers, and Android native app APIs) (some) documentation, sample code and examples © 2011
15.
Why NDK?
NDK allows you to develop parts of your Android application in C/C++. You cannot develop native-only apps in NDK – though 2.3 now supports NativeActivity, which allows handling lifecycle callbacks in native code, but access to Services and Content Providers still requires JNI. NDK code still subject to security sandboxing. Main motivation for native code is performance (CPU-intensive, self-contained, low-memory footprint code) and the re-use of legacy code. © 2011
16.
Using NDK ©
2011
17.
Fibonacci Example
Fibonacci algorithm is easy to implement both in Java and C, to compare speed differences. © 2011
18.
Implemen>ng Java Library
1. Use Java keyword native to declare future C methods 2. Use System.loadLibrary() to load the na>ve module 3. Process your Java library with javah –jni to get the header file s © 2011
19.
Implemen>ng C Code
1. Place all your C code in /jni/ folder 2. Copy header file into this folder 3. Create C file and include the header file 4. Create Android.mk file 5. Run ndk-build in root of your project to create library module in /lib/! © 2011
20.
ANDROID INTERFACE DEFINITION
LANGUAGE © 2011
21.
Binder IPC
High-performance IPC: shared memory, per-process thread pool, synchronous © 2011
22.
Implemen>ng Remote Server
1. Define the interface as an AIDL file 2. Implement the remote service 3. Declare it in Android Manifest © 2011
23.
Implemen>ng Remote Client
1. Copy the AIDL file 2. Implement ServiceConnection object – Use Stub().asInterface() to cast IBinder to service 3. Bind to the service 4. Call the remote service – Handle RemoteException! © 2011
24.
Summary
Android is open and complete system for mobile development. It is based on Java and augmented with XML, with lower levels written in C/C++. It takes about 3-5 days of intensive training to learn Android application development for someone who has basic Java (or similar) experience. Marko Gargenta, Marakana.com marko@marakana.com +1-415-647-7000 © 2011
Télécharger maintenant