SlideShare a Scribd company logo
1 of 46
Download to read offline
Intel Developers Relations Division
androidndk:Entrandonomundonativo
Eduardo Carrara
Developer Evangelist – Intel
@DuCarrara
+EduardoCarraraDeAraujo
Intel Developers Relations Division 2
Agenda
O Android NDK
Será que você o usa e não sabe?
Cuidados com a Interface Binária
Começando com o Android Studio + gradle-experimental
Perguntas?
Intel Developers Relations Division
Androidndk
O Native Development Kit
Intel Developers Relations Division 4
"O Android NDK é um conjunto de ferramentas que
permitem implementar partes de sua aplicação utilizando
linguagens de código nativas como C e C++."
- NDK Android Developers Portal
Intel Developers Relations Division 5
e talvez você já esteja fazendo isso...
... vamos explorar alguns usos interessantes do NDK.
Intel Developers Relations Division
AplicaçõesdoNDK
O que podemos fazer com ele!?
Intel Developers Relations Division 7
Game Engines
Outras+…
*Other names and brands may be claimed as the property of others.
Intel Developers Relations Division 8
Visão Computacional
• Filtros lineares e não lineares de imagens.
• Tranformações Geométricas de imagens.
• Estimativa de Movimentos em videos.
• Subtração de Fundo em videos.
• Rastreamento de objetos.
• ...
Outras: Cardboard-SDK, Vuforia, Layar, LibCCV,
Wikitude ...
OpenCV.org
*Other names and brands may be claimed as the property of others.
Intel Developers Relations Division 9
Desenvolvimento Cross Platform
*Other names and brands may be claimed as the property of others.
Intel Developers Relations Division 10
Outros usos e Bibliotecas
Realm
Swift
Libpng
Intel TBB
Intel IPP
Libcairo and libpixman
Libsonic
Busybox
Speex
FFMpeg
OpenSSL
Lua
...
*Other names and brands may be claimed as the property of others.
Intel Developers Relations Division 11
Tantas aplicações bacanas!
Então podemos utilizar o
NDK para TUDO?!
Intel Developers Relations Division
Entendendoondk
Intel Developers Relations Division
Fonte: Using the NDK Performantly (Big Android BBQ 2015)
15
Visão Geral da Arquitetura
App Code
Classes do Framework
Runtime
Bibliotecas do
Sistema
Kernel Linux
JNI
Suas Bibliotecas
ABI Estável
Intel Developers Relations Division 17
Na Prática...
Microchip Icon – Icon Finder.
App
0010011100
0011100111
x86
ARM
MIPS
O seu código:
• Mais próximo do HW
• Dependente de Plataforma
Você deve se preocupar
com isso!
Intel Developers Relations Division 18
Raio-X do seu APK
com NDK
Intel Developers Relations Division 19
3 Regras de Ouro para adoção do NDK
1
2
3 Código legado que deve ser reaproveitado e muito caro para portar.
Problemas Específicos de performance.
Funcionalidades e Experiências que exigem performance.
Intel Developers Relations Division 20
3 (Principais) Barreiras para adoção do NDK
1
2
3 Ganhos de Performance não são garantidos.
Complexidade de Implementação e Manutenção.
Dependência de Plataforma e Compatibilidade.
Intel Developers Relations Division 21
Podemos, mas não devemos usar o NDK para tudo.
Logo ...
Ainda interessado?
Tome a “pílula vermelha” e vamos te mostrar o quão
longe isso vai...
Intel Developers Relations Division
Utilizandoondk
Intel Developers Relations Division 23
Conceitos Fundamentais: Java Native Interface (JNI)
Define como o Java e o código nativo irão conversar.
Java C / C++
• Carregar a lib com:
• System.loadLibrary()
• Definição de Métodos Nativos:
• Palavra reservada native
• Incluir o header do JNI:
• #include <jni.h>
• Utilizar tipos específicos do JNI:
• jstring, jint, jboolean, etc.
• Variáveis Especiais:
• JNIEnv*, JavaVM*
Intel Developers Relations Division 24
JNI: Mapeamento de Métodos Java -> C / C++
A Função no C / C++ deve:
Usar e retornar primitivas e objetos Java JNI:
Seguir o padrão de nomenclatura:
Ou ser regitrada manualmente:
jint xxx(JNIEnv* env, jobject instance, ...) { ... }
Java_com_example_hellojni_HelloWorldJni_method
JNIEnv->RegisterNatives();
Intel Developers Relations Division 25
JNI: Exemplo
Java
C / C++
public class HelloWorldJNI {
static {
System.loadLibrary("hello-jni");
}
public native String getHelloWorldStringFromJNI();
}
#include <jni.h>
jstring
Java_com_example_hellojni_HelloWorldJNI_getHelloWorldStringFromJNI(JNIEnv *env, jobject instance) {
return (*env)->NewStringUTF(env, "Hello World!");
}
Intel Developers Relations Division 26
Old but Gold
Compilando Apps NDK no estilo clássico.
JNICode
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
APP_ABI := all
jni/Android.mk jni/Application.mk
Intel Developers Relations Division 27
Old but Gold
ndk_build script
Compilando Apps NDK no estilo clássico.
Intel Developers Relations Division 28
Old but Gold
Empacotando Apps NDK no estilo
“quase” clássico.
• Adicione as libs no diretório jniLibs.
• Crie as interfaces java – jni.
• Para pre-builts é só isso.
• Para compilar a partir do source é
um pouco mais complicado mas
possível.
Intel Developers Relations Division 29
Limitações
• Debug não é possível no AS. Necessário o uso do ndk-gdb e/ou Eclipse.
• Suporte do plugin do gradle atual foi marcado como deprecated (ouch).
Intel Developers Relations Division 30
... então para onde vamos?
Intel Developers Relations Division
Androidstudio+ndk+gradle-experimental
Intel Developers Relations Division 32
Avisos Importantes
• Utilizaremos a versão experimental do android gradle plugin.
• Integração com Android Studio melhorou mas ainda é instável e possui bugs.
• No Windows há problemas com o editor e/ou build que dificultam/impedem
o uso. (Issues 195483 e 204552).
• A documentação é praticamente inexistente ou incompleta.
Intel Developers Relations Division 33
Integração com AS
Instalação e
configuração do
NDK integrados ao
android studio.
Intel Developers Relations Division 34
Integração com AS
Intel Developers Relations Division 35
Integração com AS
Intel Developers Relations Division 36
gradle-experimental
Configuração
distributionUrl=https://services
.gradle.org/distributions/gradle-
2.10-all.zip
./build.gradle ./gradle/gradle-wrapper/gradle-wrapper.properties
dependencies {
classpath
'com.android.tools.build:gradle-
experimental:0.7.0'
}
Intel Developers Relations Division 37
gradle-experimental
Configuração: Combinação de Versões
Android Studio 1.5 2.0 2.1
gradle 2.8 2.10 2.10
gradle plugin 1.5.0 2.0.0 2.1.0
gradle-experimental plugin 0.4.0 0.6.0 0.7.0
Intel Developers Relations Division 38
gradle-experimental
Configuração: build.gradle
mudanças na DSL.
Sempre verifique:
- NDK Samples
- gradle-experimental docs
apply plugin: 'com.android.model.application'
model {
}
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.3"
defaultConfig.with {
applicationId = "com.example.hellojni"
minSdkVersion.apiLevel = 4
targetSdkVersion.apiLevel = 23
}
}
android.ndk {
moduleName = "hello-jni"
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-rules.txt'))
}
}
Intel Developers Relations Division 39
gradle-experimental
Configuração: múltiplos apks.
apply plugin: 'com.android.model.application'
model {
}
android.productFlavors {
}
// … standard gradle stuff
// … other gradle stuff
create ("armv7") {
}
create (“x86") {
}
ndk.abiFilters.add("armeabi-v7a")
ndk.abiFilters.add(“x86")
versionCode = calculateVersionCodeFor(
"armeabi-v7a")
versionCode = calculateVersionCodeFor(
“x86")
create (“fat")
Intel Developers Relations Division 40
gradle-experimental
Configuração: múltiplos apks.
apply plugin: 'com.android.model.application'
model {
}
def actualVersionCode = 13;
// … gradle stuff
// … other gradle stuff
def baseVersionCode = 1000000;
def versionCodeABIPrefixes = [
'armeabi':1, 'armeabi-v7a':2, 'arm64-v8a':3,
'mips': 5,'mips64': 6,
'x86': 8, 'x86_64': 9];
def calculateVersionCodeFor = { String abi ->
return versionCodeABIPrefixes.get(abi, 0) *
baseVersionCode + actualVersionCode
}
Intel Developers Relations Division 41
gradle-experimental
• Ainda é possível:
• Configurar bibliotecas pré-compiladas;
• Adicionar flags de compilação (gerais e por flavor);
• A documentação atual geralmente não acompanha os releases, portanto:
• Fique de olho nos NDK Samples para referências!
Intel Developers Relations Division 42
Pensamentos Finais
Ao usar NDK, direta ou indiretamente, adicione
suporte a maior quantidade possível de
plataformas.
Use o NDK sabiamente: teste, faça benchmarks
e garanta que ele é a solução adequada ao seu
problema.
Acompanhe e teste o plugin experimental do
gradle para NDK!
Intel Developers Relations Division
Perguntas?
Intel Developers Relations Division
referências
Intel Developers Relations Division 48
Referências
• NDK Development on Intel
• Intel Tools
• Android* NDK Official Documentation
• Android* NDK Gradle Experimental Documentation
• Android* NDK Google* Samples
• Gradle Stable NDK Support - Xavier Hallade
• New Android Studio NDK Support - Xavier Hallade
Intel Developers Relations Division
obrigado
Intel Developers Relations Division
Legal Notices and Disclaimers
 INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL
PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY
WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL® PRODUCTS INCLUDING LIABILITY OR WARRANTIES
RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. INTEL
PRODUCTS ARE NOT INTENDED FOR USE IN MEDICAL, LIFE SAVING, OR LIFE SUSTAINING APPLICATIONS.
 Intel may make changes to specifications and product descriptions at any time, without notice. Products with an “L” or “T” in the Price Point reference (e.g. U-L1, YT3, etc.) may be
discontinued by Intel at any time without an end of life announcement or “last time buy” opportunity.
 All products, dates, and figures specified are preliminary based on current expectations, and are subject to change without notice.
 Intel, processors, chipsets, and desktop boards may contain design defects or errors known as errata, which may cause the product to deviate from published specifications. Current
characterized errata are available on request.
 Any code names featured are used internally within Intel to identify products that are in development and not yet publicly announced for release. Customers, licensees and other third
parties are not authorized by Intel to use code names in advertising, promotion or marketing of any product or services and any such use of Intel's internal code names is at the sole risk
of the user.
 Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are
measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other
information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For
more information go to http://www.intel.com/performance
 Intel, Intel Inside, the Intel logo, Centrino, Centrino Inside, Intel Core, Intel Atom and Pentium are trademarks of Intel Corporation in the United States and other countries.
 Material in this presentation is intended as product positioning and not approved end user messaging.
 This document contains information on products in the design phase of development.
 *Other names and brands may be claimed as the property of others.
Copyright © 2016 Intel Corporation.
Intel Developers Relations Division
 Security features enabled by Intel® AMT require an enabled chipset, network hardware and software and a corporate network connection. Intel AMT may not be available or
certain capabilities may be limited over a host OS-based VPN or when connecting wirelessly, on battery power, sleeping, hibernating or powered off. Setup requires
configuration and may require scripting with the management console or further integration into existing security frameworks, and modifications or implementation of new
business processes. For more information, see http://www.intel.com/technology/manage/iamt.
 WiMAX connectivity requires a WiMAX enabled device and subscription to a WiMAX broadband service. WiMAX connectivity may require you to purchase additional software
or hardware at extra cost. Availability of WiMAX is limited, check with your service provider for details on availability and network limitations. Broadband performance and
results may vary due to environment factors and other variables. See www.intel.com/go/wimax for more information.
 Intel® My WiFi Technology is an optional feature and requires additional software and a Centrino® wireless adapter. Wi-Fi devices must be certified by the Wi-Fi Alliance for
802.11b/g/a in order to connect. See mywifi.intel.com for more details.
 Hyper-Threading Technology requires a computer system with a processor supporting HT Technology and an HT Technology-enabled chipset, BIOS and operating system.
Performance will vary depending on the specific hardware and software you use. For more information including details on which processors support HT Technology, see
here
 No system can provide absolute security under all conditions. Requires an enabled chipset, BIOS, firmware and software and a subscription with a capable Service
Provider. Consult your system manufacturer and Service Provider for availability and functionality. Intel assumes no liability for lost or stolen data and/or systems or any
other damages resulting thereof. For more information, visit http://www.intel.com/go/anti-theft Intel® Turbo Boost Technology requires a PC with a processor with Intel
Turbo Boost Technology capability. Intel Turbo Boost Technology performance varies depending on hardware, software and overall system configuration. Check with your
PC manufacturer on whether your system delivers Intel Turbo Boost Technology. For more information, see http://www.intel.com/technology/turboboost
 Requires an Intel® Wireless Display enabled PC, TV Adapter, and compatible television. Available on select Intel® Core processors. Does not support Blu-Ray or other
protected content playback. Consult your PC manufacturer. For more information, see www.intel.com/go/wirelessdisplay
 (Built-in Visuals) Available on the 2nd gen Intel® Core™ processor family. Includes Intel® HD Graphics, Intel® Quick Sync Video, Intel® Clear Video HD Technology, Intel® InTru™
3D Technology, and Intel® Advanced Vector Extensions. Also optionally includes Intel® Wireless Display depending on whether enabled on a given system or not. Whether you
will receive the benefits of built-in visuals depends upon the particular design of the PC you choose. Consult your PC manufacturer whether built-in visuals are enabled on
your system. Learn more about built-in visuals at http://www.intel.com/technology/visualtechnology/index.htm.
Legal Notices and Disclaimers, cont.
Intel Developers Relations Division

More Related Content

What's hot

Android NDK and the x86 Platform
Android NDK and the x86 PlatformAndroid NDK and the x86 Platform
Android NDK and the x86 Platform
Sebastian Mauer
 
Vipul divyanshu documentation on Kinect and Motion Tracking
Vipul divyanshu documentation  on Kinect and Motion TrackingVipul divyanshu documentation  on Kinect and Motion Tracking
Vipul divyanshu documentation on Kinect and Motion Tracking
Vipul Divyanshu
 

What's hot (20)

Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)
 
Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)
 
Android NDK
Android NDKAndroid NDK
Android NDK
 
Android NDK and the x86 Platform
Android NDK and the x86 PlatformAndroid NDK and the x86 Platform
Android NDK and the x86 Platform
 
Multi-Configuration support in MTJ
Multi-Configuration support in MTJMulti-Configuration support in MTJ
Multi-Configuration support in MTJ
 
Android Native Apps Development
Android Native Apps DevelopmentAndroid Native Apps Development
Android Native Apps Development
 
Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014
 
CDI 2.0 is upon us Devoxx
CDI 2.0 is upon us DevoxxCDI 2.0 is upon us Devoxx
CDI 2.0 is upon us Devoxx
 
Reverse Engineering Android Application
Reverse Engineering Android ApplicationReverse Engineering Android Application
Reverse Engineering Android Application
 
Vipul divyanshu documentation on Kinect and Motion Tracking
Vipul divyanshu documentation  on Kinect and Motion TrackingVipul divyanshu documentation  on Kinect and Motion Tracking
Vipul divyanshu documentation on Kinect and Motion Tracking
 
CDI 2.0 is coming
CDI 2.0 is comingCDI 2.0 is coming
CDI 2.0 is coming
 
Intellij idea features
Intellij idea featuresIntellij idea features
Intellij idea features
 
Steelcon 2015 Reverse-Engineering Obfuscated Android Applications
Steelcon 2015 Reverse-Engineering Obfuscated Android ApplicationsSteelcon 2015 Reverse-Engineering Obfuscated Android Applications
Steelcon 2015 Reverse-Engineering Obfuscated Android Applications
 
Android containerization in brief
Android containerization in briefAndroid containerization in brief
Android containerization in brief
 
Android App development and test environment, Understaing android app structure
Android App development and test environment, Understaing android app structureAndroid App development and test environment, Understaing android app structure
Android App development and test environment, Understaing android app structure
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
 
Android development tutorial
Android development tutorialAndroid development tutorial
Android development tutorial
 
CDI 2.0 is coming
CDI 2.0 is comingCDI 2.0 is coming
CDI 2.0 is coming
 
Advanced CDI in live coding
Advanced CDI in live codingAdvanced CDI in live coding
Advanced CDI in live coding
 
Reverse engineering android apps
Reverse engineering android appsReverse engineering android apps
Reverse engineering android apps
 

Viewers also liked

La gestión de la investigación educativa (comentarios)
La gestión de la investigación educativa (comentarios)La gestión de la investigación educativa (comentarios)
La gestión de la investigación educativa (comentarios)
elsamolinaa
 
img-718132057-0001
img-718132057-0001img-718132057-0001
img-718132057-0001
Daniel ANG
 
How does your media product represent particular social groups?
How does your media product represent particular social groups?How does your media product represent particular social groups?
How does your media product represent particular social groups?
abbiesmediaproject
 
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
Scott Abel
 
LSE_to_build_RM100_million_supply_vessel_
LSE_to_build_RM100_million_supply_vessel_LSE_to_build_RM100_million_supply_vessel_
LSE_to_build_RM100_million_supply_vessel_
Daniel ANG
 

Viewers also liked (20)

Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - Adaptador
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
Video
VideoVideo
Video
 
Mapa mental de generacion
Mapa mental de generacionMapa mental de generacion
Mapa mental de generacion
 
La gestión de la investigación educativa (comentarios)
La gestión de la investigación educativa (comentarios)La gestión de la investigación educativa (comentarios)
La gestión de la investigación educativa (comentarios)
 
Expectiations and challenges for the Automatic Ecognition Technology. Kanako ...
Expectiations and challenges for the Automatic Ecognition Technology. Kanako ...Expectiations and challenges for the Automatic Ecognition Technology. Kanako ...
Expectiations and challenges for the Automatic Ecognition Technology. Kanako ...
 
Meet the FIAT/IFTA partners 2015
Meet the FIAT/IFTA partners 2015Meet the FIAT/IFTA partners 2015
Meet the FIAT/IFTA partners 2015
 
img-718132057-0001
img-718132057-0001img-718132057-0001
img-718132057-0001
 
How does your media product represent particular social groups?
How does your media product represent particular social groups?How does your media product represent particular social groups?
How does your media product represent particular social groups?
 
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...
 
Visual Business Model
Visual Business ModelVisual Business Model
Visual Business Model
 
LSE_to_build_RM100_million_supply_vessel_
LSE_to_build_RM100_million_supply_vessel_LSE_to_build_RM100_million_supply_vessel_
LSE_to_build_RM100_million_supply_vessel_
 
Payaman mind set
Payaman mind setPayaman mind set
Payaman mind set
 
Total E&P OML 58 #3
Total E&P OML 58 #3Total E&P OML 58 #3
Total E&P OML 58 #3
 
18 03-2012
18 03-201218 03-2012
18 03-2012
 
2012 Month of the Military Child Calhoun, GA
2012 Month of the Military Child Calhoun, GA2012 Month of the Military Child Calhoun, GA
2012 Month of the Military Child Calhoun, GA
 
O Princípe Sapo
O Princípe SapoO Princípe Sapo
O Princípe Sapo
 
Membrana celular
Membrana celularMembrana celular
Membrana celular
 
Referring Physician Omni-Channel Experience
Referring Physician Omni-Channel ExperienceReferring Physician Omni-Channel Experience
Referring Physician Omni-Channel Experience
 
Thinking the archives of 2020: Opportunitiws, priorities, Issues
Thinking the archives of 2020: Opportunitiws, priorities, IssuesThinking the archives of 2020: Opportunitiws, priorities, Issues
Thinking the archives of 2020: Opportunitiws, priorities, Issues
 

Similar to Android NDK: Entrando no Mundo Nativo

RT Lab Android Application
RT Lab Android ApplicationRT Lab Android Application
RT Lab Android Application
Praahas Amin
 

Similar to Android NDK: Entrando no Mundo Nativo (20)

Developing Multi-OS Native Mobile Applications with Intel INDE
Developing Multi-OS Native Mobile Applications with Intel INDEDeveloping Multi-OS Native Mobile Applications with Intel INDE
Developing Multi-OS Native Mobile Applications with Intel INDE
 
Getting started with the NDK
Getting started with the NDKGetting started with the NDK
Getting started with the NDK
 
Go native benchmark test su dispositivi x86: java, ndk, ipp e tbb
Go native  benchmark test su dispositivi x86: java, ndk, ipp e tbbGo native  benchmark test su dispositivi x86: java, ndk, ipp e tbb
Go native benchmark test su dispositivi x86: java, ndk, ipp e tbb
 
Android on Intel platforms : current state, near-future, future & developers ...
Android on Intel platforms : current state, near-future, future & developers ...Android on Intel platforms : current state, near-future, future & developers ...
Android on Intel platforms : current state, near-future, future & developers ...
 
9780134433646 annuzzi ch02 (1)
9780134433646 annuzzi ch02 (1)9780134433646 annuzzi ch02 (1)
9780134433646 annuzzi ch02 (1)
 
Let your tests drive your code
Let your tests drive your codeLet your tests drive your code
Let your tests drive your code
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
What is the best approach to tdd
What is the best approach to tddWhat is the best approach to tdd
What is the best approach to tdd
 
Multi-OS Engine Technology Overview
Multi-OS Engine Technology OverviewMulti-OS Engine Technology Overview
Multi-OS Engine Technology Overview
 
Android develop guideline
Android develop guidelineAndroid develop guideline
Android develop guideline
 
RT Lab Android Application
RT Lab Android ApplicationRT Lab Android Application
RT Lab Android Application
 
Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
 
Back-2-Basics: Code Contracts
Back-2-Basics: Code ContractsBack-2-Basics: Code Contracts
Back-2-Basics: Code Contracts
 
Aws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, ImplementationAws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, Implementation
 
Hello, Android Studio 3.2 & Android App Bundle @ I/O Extended Bangkok 2018
Hello, Android Studio 3.2 & Android App Bundle @ I/O Extended Bangkok 2018Hello, Android Studio 3.2 & Android App Bundle @ I/O Extended Bangkok 2018
Hello, Android Studio 3.2 & Android App Bundle @ I/O Extended Bangkok 2018
 
Nareshkumar_CV
Nareshkumar_CVNareshkumar_CV
Nareshkumar_CV
 
Extending your apps to wearables - DroidCon Paris 2014
Extending your apps to wearables -  DroidCon Paris 2014Extending your apps to wearables -  DroidCon Paris 2014
Extending your apps to wearables - DroidCon Paris 2014
 
Bring Intelligence to the Edge with Intel® Movidius™ Neural Compute Stick
Bring Intelligence to the Edge with Intel® Movidius™ Neural Compute StickBring Intelligence to the Edge with Intel® Movidius™ Neural Compute Stick
Bring Intelligence to the Edge with Intel® Movidius™ Neural Compute Stick
 
Intel Movidius Neural Compute Stick presentation @QConf San Francisco
Intel Movidius Neural Compute Stick presentation @QConf San FranciscoIntel Movidius Neural Compute Stick presentation @QConf San Francisco
Intel Movidius Neural Compute Stick presentation @QConf San Francisco
 
NET Code Testing
NET Code TestingNET Code Testing
NET Code Testing
 

More from Eduardo Carrara de Araujo

More from Eduardo Carrara de Araujo (19)

Só um appzinho aê!? - O guia de sobrevivência para o dev da ideia inovadora a...
Só um appzinho aê!? - O guia de sobrevivência para o dev da ideia inovadora a...Só um appzinho aê!? - O guia de sobrevivência para o dev da ideia inovadora a...
Só um appzinho aê!? - O guia de sobrevivência para o dev da ideia inovadora a...
 
Melhorando seu App com Kotlin e Testes
Melhorando seu App com Kotlin e TestesMelhorando seu App com Kotlin e Testes
Melhorando seu App com Kotlin e Testes
 
Android apps ci
Android apps ciAndroid apps ci
Android apps ci
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps Android
 
2016 - Por que mobile?
2016 - Por que mobile?2016 - Por que mobile?
2016 - Por que mobile?
 
Testes: Por onde Começar?
Testes: Por onde Começar?Testes: Por onde Começar?
Testes: Por onde Começar?
 
Implementation of a Participatory Sensing Solution to Collect Data About Pave...
Implementation of a Participatory Sensing Solution to Collect Data About Pave...Implementation of a Participatory Sensing Solution to Collect Data About Pave...
Implementation of a Participatory Sensing Solution to Collect Data About Pave...
 
GDG ABC - Aventura 2015
GDG ABC - Aventura 2015GDG ABC - Aventura 2015
GDG ABC - Aventura 2015
 
Android Test Automation Workshop
Android Test Automation WorkshopAndroid Test Automation Workshop
Android Test Automation Workshop
 
Why mobile?
Why mobile?Why mobile?
Why mobile?
 
Android M - Getting Started
Android M - Getting StartedAndroid M - Getting Started
Android M - Getting Started
 
Testando Sua App Android na Nuvem
Testando Sua App Android na NuvemTestando Sua App Android na Nuvem
Testando Sua App Android na Nuvem
 
Utilizando Espresso e UIAutomator no Teste de Apps Android
Utilizando Espresso e UIAutomator no Teste de Apps AndroidUtilizando Espresso e UIAutomator no Teste de Apps Android
Utilizando Espresso e UIAutomator no Teste de Apps Android
 
Começando com Android (#AndroidOnIntel)
Começando com Android (#AndroidOnIntel)Começando com Android (#AndroidOnIntel)
Começando com Android (#AndroidOnIntel)
 
Android Auto Basics
Android Auto BasicsAndroid Auto Basics
Android Auto Basics
 
Debugging in Android
Debugging in AndroidDebugging in Android
Debugging in Android
 
Android 101: Do Plano ao Play
Android 101: Do Plano ao PlayAndroid 101: Do Plano ao Play
Android 101: Do Plano ao Play
 
Testing Your App in the Cloud
Testing Your App in the CloudTesting Your App in the Cloud
Testing Your App in the Cloud
 
Android 101: Do Plano ao Play em 30 minutos
Android 101: Do Plano ao Play em 30 minutosAndroid 101: Do Plano ao Play em 30 minutos
Android 101: Do Plano ao Play em 30 minutos
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Android NDK: Entrando no Mundo Nativo

  • 1. Intel Developers Relations Division androidndk:Entrandonomundonativo Eduardo Carrara Developer Evangelist – Intel @DuCarrara +EduardoCarraraDeAraujo
  • 2. Intel Developers Relations Division 2 Agenda O Android NDK Será que você o usa e não sabe? Cuidados com a Interface Binária Começando com o Android Studio + gradle-experimental Perguntas?
  • 3. Intel Developers Relations Division Androidndk O Native Development Kit
  • 4. Intel Developers Relations Division 4 "O Android NDK é um conjunto de ferramentas que permitem implementar partes de sua aplicação utilizando linguagens de código nativas como C e C++." - NDK Android Developers Portal
  • 5. Intel Developers Relations Division 5 e talvez você já esteja fazendo isso... ... vamos explorar alguns usos interessantes do NDK.
  • 6. Intel Developers Relations Division AplicaçõesdoNDK O que podemos fazer com ele!?
  • 7. Intel Developers Relations Division 7 Game Engines Outras+… *Other names and brands may be claimed as the property of others.
  • 8. Intel Developers Relations Division 8 Visão Computacional • Filtros lineares e não lineares de imagens. • Tranformações Geométricas de imagens. • Estimativa de Movimentos em videos. • Subtração de Fundo em videos. • Rastreamento de objetos. • ... Outras: Cardboard-SDK, Vuforia, Layar, LibCCV, Wikitude ... OpenCV.org *Other names and brands may be claimed as the property of others.
  • 9. Intel Developers Relations Division 9 Desenvolvimento Cross Platform *Other names and brands may be claimed as the property of others.
  • 10. Intel Developers Relations Division 10 Outros usos e Bibliotecas Realm Swift Libpng Intel TBB Intel IPP Libcairo and libpixman Libsonic Busybox Speex FFMpeg OpenSSL Lua ... *Other names and brands may be claimed as the property of others.
  • 11. Intel Developers Relations Division 11 Tantas aplicações bacanas! Então podemos utilizar o NDK para TUDO?!
  • 12. Intel Developers Relations Division Entendendoondk
  • 13. Intel Developers Relations Division Fonte: Using the NDK Performantly (Big Android BBQ 2015) 15 Visão Geral da Arquitetura App Code Classes do Framework Runtime Bibliotecas do Sistema Kernel Linux JNI Suas Bibliotecas ABI Estável
  • 14. Intel Developers Relations Division 17 Na Prática... Microchip Icon – Icon Finder. App 0010011100 0011100111 x86 ARM MIPS O seu código: • Mais próximo do HW • Dependente de Plataforma Você deve se preocupar com isso!
  • 15. Intel Developers Relations Division 18 Raio-X do seu APK com NDK
  • 16. Intel Developers Relations Division 19 3 Regras de Ouro para adoção do NDK 1 2 3 Código legado que deve ser reaproveitado e muito caro para portar. Problemas Específicos de performance. Funcionalidades e Experiências que exigem performance.
  • 17. Intel Developers Relations Division 20 3 (Principais) Barreiras para adoção do NDK 1 2 3 Ganhos de Performance não são garantidos. Complexidade de Implementação e Manutenção. Dependência de Plataforma e Compatibilidade.
  • 18. Intel Developers Relations Division 21 Podemos, mas não devemos usar o NDK para tudo. Logo ... Ainda interessado? Tome a “pílula vermelha” e vamos te mostrar o quão longe isso vai...
  • 19. Intel Developers Relations Division Utilizandoondk
  • 20. Intel Developers Relations Division 23 Conceitos Fundamentais: Java Native Interface (JNI) Define como o Java e o código nativo irão conversar. Java C / C++ • Carregar a lib com: • System.loadLibrary() • Definição de Métodos Nativos: • Palavra reservada native • Incluir o header do JNI: • #include <jni.h> • Utilizar tipos específicos do JNI: • jstring, jint, jboolean, etc. • Variáveis Especiais: • JNIEnv*, JavaVM*
  • 21. Intel Developers Relations Division 24 JNI: Mapeamento de Métodos Java -> C / C++ A Função no C / C++ deve: Usar e retornar primitivas e objetos Java JNI: Seguir o padrão de nomenclatura: Ou ser regitrada manualmente: jint xxx(JNIEnv* env, jobject instance, ...) { ... } Java_com_example_hellojni_HelloWorldJni_method JNIEnv->RegisterNatives();
  • 22. Intel Developers Relations Division 25 JNI: Exemplo Java C / C++ public class HelloWorldJNI { static { System.loadLibrary("hello-jni"); } public native String getHelloWorldStringFromJNI(); } #include <jni.h> jstring Java_com_example_hellojni_HelloWorldJNI_getHelloWorldStringFromJNI(JNIEnv *env, jobject instance) { return (*env)->NewStringUTF(env, "Hello World!"); }
  • 23. Intel Developers Relations Division 26 Old but Gold Compilando Apps NDK no estilo clássico. JNICode LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY) APP_ABI := all jni/Android.mk jni/Application.mk
  • 24. Intel Developers Relations Division 27 Old but Gold ndk_build script Compilando Apps NDK no estilo clássico.
  • 25. Intel Developers Relations Division 28 Old but Gold Empacotando Apps NDK no estilo “quase” clássico. • Adicione as libs no diretório jniLibs. • Crie as interfaces java – jni. • Para pre-builts é só isso. • Para compilar a partir do source é um pouco mais complicado mas possível.
  • 26. Intel Developers Relations Division 29 Limitações • Debug não é possível no AS. Necessário o uso do ndk-gdb e/ou Eclipse. • Suporte do plugin do gradle atual foi marcado como deprecated (ouch).
  • 27. Intel Developers Relations Division 30 ... então para onde vamos?
  • 28. Intel Developers Relations Division Androidstudio+ndk+gradle-experimental
  • 29. Intel Developers Relations Division 32 Avisos Importantes • Utilizaremos a versão experimental do android gradle plugin. • Integração com Android Studio melhorou mas ainda é instável e possui bugs. • No Windows há problemas com o editor e/ou build que dificultam/impedem o uso. (Issues 195483 e 204552). • A documentação é praticamente inexistente ou incompleta.
  • 30. Intel Developers Relations Division 33 Integração com AS Instalação e configuração do NDK integrados ao android studio.
  • 31. Intel Developers Relations Division 34 Integração com AS
  • 32. Intel Developers Relations Division 35 Integração com AS
  • 33. Intel Developers Relations Division 36 gradle-experimental Configuração distributionUrl=https://services .gradle.org/distributions/gradle- 2.10-all.zip ./build.gradle ./gradle/gradle-wrapper/gradle-wrapper.properties dependencies { classpath 'com.android.tools.build:gradle- experimental:0.7.0' }
  • 34. Intel Developers Relations Division 37 gradle-experimental Configuração: Combinação de Versões Android Studio 1.5 2.0 2.1 gradle 2.8 2.10 2.10 gradle plugin 1.5.0 2.0.0 2.1.0 gradle-experimental plugin 0.4.0 0.6.0 0.7.0
  • 35. Intel Developers Relations Division 38 gradle-experimental Configuração: build.gradle mudanças na DSL. Sempre verifique: - NDK Samples - gradle-experimental docs apply plugin: 'com.android.model.application' model { } android { compileSdkVersion = 23 buildToolsVersion = "23.0.3" defaultConfig.with { applicationId = "com.example.hellojni" minSdkVersion.apiLevel = 4 targetSdkVersion.apiLevel = 23 } } android.ndk { moduleName = "hello-jni" } android.buildTypes { release { minifyEnabled = false proguardFiles.add(file('proguard-rules.txt')) } }
  • 36. Intel Developers Relations Division 39 gradle-experimental Configuração: múltiplos apks. apply plugin: 'com.android.model.application' model { } android.productFlavors { } // … standard gradle stuff // … other gradle stuff create ("armv7") { } create (“x86") { } ndk.abiFilters.add("armeabi-v7a") ndk.abiFilters.add(“x86") versionCode = calculateVersionCodeFor( "armeabi-v7a") versionCode = calculateVersionCodeFor( “x86") create (“fat")
  • 37. Intel Developers Relations Division 40 gradle-experimental Configuração: múltiplos apks. apply plugin: 'com.android.model.application' model { } def actualVersionCode = 13; // … gradle stuff // … other gradle stuff def baseVersionCode = 1000000; def versionCodeABIPrefixes = [ 'armeabi':1, 'armeabi-v7a':2, 'arm64-v8a':3, 'mips': 5,'mips64': 6, 'x86': 8, 'x86_64': 9]; def calculateVersionCodeFor = { String abi -> return versionCodeABIPrefixes.get(abi, 0) * baseVersionCode + actualVersionCode }
  • 38. Intel Developers Relations Division 41 gradle-experimental • Ainda é possível: • Configurar bibliotecas pré-compiladas; • Adicionar flags de compilação (gerais e por flavor); • A documentação atual geralmente não acompanha os releases, portanto: • Fique de olho nos NDK Samples para referências!
  • 39. Intel Developers Relations Division 42 Pensamentos Finais Ao usar NDK, direta ou indiretamente, adicione suporte a maior quantidade possível de plataformas. Use o NDK sabiamente: teste, faça benchmarks e garanta que ele é a solução adequada ao seu problema. Acompanhe e teste o plugin experimental do gradle para NDK!
  • 40. Intel Developers Relations Division Perguntas?
  • 41. Intel Developers Relations Division referências
  • 42. Intel Developers Relations Division 48 Referências • NDK Development on Intel • Intel Tools • Android* NDK Official Documentation • Android* NDK Gradle Experimental Documentation • Android* NDK Google* Samples • Gradle Stable NDK Support - Xavier Hallade • New Android Studio NDK Support - Xavier Hallade
  • 43. Intel Developers Relations Division obrigado
  • 44. Intel Developers Relations Division Legal Notices and Disclaimers  INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL® PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. INTEL PRODUCTS ARE NOT INTENDED FOR USE IN MEDICAL, LIFE SAVING, OR LIFE SUSTAINING APPLICATIONS.  Intel may make changes to specifications and product descriptions at any time, without notice. Products with an “L” or “T” in the Price Point reference (e.g. U-L1, YT3, etc.) may be discontinued by Intel at any time without an end of life announcement or “last time buy” opportunity.  All products, dates, and figures specified are preliminary based on current expectations, and are subject to change without notice.  Intel, processors, chipsets, and desktop boards may contain design defects or errors known as errata, which may cause the product to deviate from published specifications. Current characterized errata are available on request.  Any code names featured are used internally within Intel to identify products that are in development and not yet publicly announced for release. Customers, licensees and other third parties are not authorized by Intel to use code names in advertising, promotion or marketing of any product or services and any such use of Intel's internal code names is at the sole risk of the user.  Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For more information go to http://www.intel.com/performance  Intel, Intel Inside, the Intel logo, Centrino, Centrino Inside, Intel Core, Intel Atom and Pentium are trademarks of Intel Corporation in the United States and other countries.  Material in this presentation is intended as product positioning and not approved end user messaging.  This document contains information on products in the design phase of development.  *Other names and brands may be claimed as the property of others. Copyright © 2016 Intel Corporation.
  • 45. Intel Developers Relations Division  Security features enabled by Intel® AMT require an enabled chipset, network hardware and software and a corporate network connection. Intel AMT may not be available or certain capabilities may be limited over a host OS-based VPN or when connecting wirelessly, on battery power, sleeping, hibernating or powered off. Setup requires configuration and may require scripting with the management console or further integration into existing security frameworks, and modifications or implementation of new business processes. For more information, see http://www.intel.com/technology/manage/iamt.  WiMAX connectivity requires a WiMAX enabled device and subscription to a WiMAX broadband service. WiMAX connectivity may require you to purchase additional software or hardware at extra cost. Availability of WiMAX is limited, check with your service provider for details on availability and network limitations. Broadband performance and results may vary due to environment factors and other variables. See www.intel.com/go/wimax for more information.  Intel® My WiFi Technology is an optional feature and requires additional software and a Centrino® wireless adapter. Wi-Fi devices must be certified by the Wi-Fi Alliance for 802.11b/g/a in order to connect. See mywifi.intel.com for more details.  Hyper-Threading Technology requires a computer system with a processor supporting HT Technology and an HT Technology-enabled chipset, BIOS and operating system. Performance will vary depending on the specific hardware and software you use. For more information including details on which processors support HT Technology, see here  No system can provide absolute security under all conditions. Requires an enabled chipset, BIOS, firmware and software and a subscription with a capable Service Provider. Consult your system manufacturer and Service Provider for availability and functionality. Intel assumes no liability for lost or stolen data and/or systems or any other damages resulting thereof. For more information, visit http://www.intel.com/go/anti-theft Intel® Turbo Boost Technology requires a PC with a processor with Intel Turbo Boost Technology capability. Intel Turbo Boost Technology performance varies depending on hardware, software and overall system configuration. Check with your PC manufacturer on whether your system delivers Intel Turbo Boost Technology. For more information, see http://www.intel.com/technology/turboboost  Requires an Intel® Wireless Display enabled PC, TV Adapter, and compatible television. Available on select Intel® Core processors. Does not support Blu-Ray or other protected content playback. Consult your PC manufacturer. For more information, see www.intel.com/go/wirelessdisplay  (Built-in Visuals) Available on the 2nd gen Intel® Core™ processor family. Includes Intel® HD Graphics, Intel® Quick Sync Video, Intel® Clear Video HD Technology, Intel® InTru™ 3D Technology, and Intel® Advanced Vector Extensions. Also optionally includes Intel® Wireless Display depending on whether enabled on a given system or not. Whether you will receive the benefits of built-in visuals depends upon the particular design of the PC you choose. Consult your PC manufacturer whether built-in visuals are enabled on your system. Learn more about built-in visuals at http://www.intel.com/technology/visualtechnology/index.htm. Legal Notices and Disclaimers, cont.