O Android NDK é a ferramenta que permite a utilização de código nativo (C/C++) em sua aplicação Android. Nesta apresentação conheça alguns usos interessantes do NDK, as vantagens e desvantagens de utilizá-lo, além de como começar a usar esta ferramenta com o Android Studio.
The Android NDK is a set of tools that allows the integration of native code (C/C++) in your Android app. In this presentation get know interesting usages of NDK, advantages and disadvantages, and how to stat using it with Android Studio.
Overview of Android NDK (Native Development Toolkit).
Android application development is primarily done with the Android SDK.
Apps are written in Java thus benefitting from the high-level constructs
of the managed environment as well as the wealth of functionality provided
by the Android application platform.
However, sometimes it is necessary to implement certain functionality natively
in C++, e.g. when access to hardware is required or 3rd party stacks have to
be included that are only available as C++ code.
The NDK is a lightweight development toolkit for writing native applications
and libraries that can interwork with Java application code.
The Android Native Development Kit (NDK)
NDK Info
What , Why , Why not ?
Requirement Tools & Installation of NDK
Developing an ADD application that uses the NDK
Using Native Development Toolkit . Information collected from many sources http://lyaug.fr/slides/presentation-ndk/#/step-11
http://psrdotcom.blogspot.fr/2011/12/android-ndk-jni-windows-xp7-with-3264.html
Native development kit (ndk) introductionRakesh Jha
Native development kit (ndk) introduction
Topics covered include •
o What is an NDK and Why NDK? •
o Java Native Interface (JNI) •
o Using NDK •
o NDK and JNI by Example •
o NDK's Stable APIs
• Android NDK Multithreading
o Introduction To NDK Native Threading
o Creating and terminating native threads at Android NDK
Build with pthreads
Thread creation
Thread termination
o Synchronizing native threads with conditional variables at Android NDK
Initialize and destroy conditional variables
o Synchronizing native threads with semaphore at Android NDK
Initialize and destroy a semaphore
o Managing data for native threads at Android NDK
The Android NDK is a set of tools that allows the integration of native code (C/C++) in your Android app. In this presentation get know interesting usages of NDK, advantages and disadvantages, and how to stat using it with Android Studio.
Overview of Android NDK (Native Development Toolkit).
Android application development is primarily done with the Android SDK.
Apps are written in Java thus benefitting from the high-level constructs
of the managed environment as well as the wealth of functionality provided
by the Android application platform.
However, sometimes it is necessary to implement certain functionality natively
in C++, e.g. when access to hardware is required or 3rd party stacks have to
be included that are only available as C++ code.
The NDK is a lightweight development toolkit for writing native applications
and libraries that can interwork with Java application code.
The Android Native Development Kit (NDK)
NDK Info
What , Why , Why not ?
Requirement Tools & Installation of NDK
Developing an ADD application that uses the NDK
Using Native Development Toolkit . Information collected from many sources http://lyaug.fr/slides/presentation-ndk/#/step-11
http://psrdotcom.blogspot.fr/2011/12/android-ndk-jni-windows-xp7-with-3264.html
Native development kit (ndk) introductionRakesh Jha
Native development kit (ndk) introduction
Topics covered include •
o What is an NDK and Why NDK? •
o Java Native Interface (JNI) •
o Using NDK •
o NDK and JNI by Example •
o NDK's Stable APIs
• Android NDK Multithreading
o Introduction To NDK Native Threading
o Creating and terminating native threads at Android NDK
Build with pthreads
Thread creation
Thread termination
o Synchronizing native threads with conditional variables at Android NDK
Initialize and destroy conditional variables
o Synchronizing native threads with semaphore at Android NDK
Initialize and destroy a semaphore
o Managing data for native threads at Android NDK
Using the Android Native Development Kit (NDK)DroidConTLV
Android NDK is used to integrate C/C++ code into Android applications. Learn when and how to use it ; and what it implies to do so from development, integration within Eclipse and Android Studio, to distribution.
http://fr.droidcon.com/2014/agenda/
http://fr.droidcon.com/2014/agenda/detail?title=The+Android+Native+Development+Kit
The Android NDK is used to integrate C/C++ code into Android applications and libraries.
Learn how you can use the NDK and NDK-based libraries with Eclipse and Android Studio, and how you can debug and optimize your code.
Discover what changes from the new Android Runtime may break your integration, and how you can target new 64-bit architectures with the upcoming android L-release.
Speaker : Alexander Weggerle, Intel
Slides of the talk gave to Devoxx with José Paumard about new features coming in CDI 2. Java SE support, asynchronous event, Interceptor on producers...
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginXavier Hallade
Android Studio is finally fully supporting the NDK so you can easily integrate C/C++ inside Android applications.
While this support is still experimental, it’s promising and worth already doing the final jump from other IDEs and build systems.
After a short introduction on what is the NDK, learn how to use it from Android Studio while avoiding several classic pitfalls.
New features coming in CDI 2.0, talk given during Java One 2016
- Java SE support
- Async events
- Ordered events
- Meta data configurators
- Interceptors on producers
Slides of Java One 2015 session "Advanced CDI in live coding"
In this session we explained how portable extensions work and shown third party framework integration with Metrics and Camel integration into CDI programming model
With growth in app market it is essential to guard our android apps against possible threats, in this presentation we will walk through various tools and techniques which some one can use to reverse engineer an android app, we will see how some one can get access to APP DB, CODE, API, PREFERENCES.
We will also see different tools and techniques to guard our app against possible threats from code obfuscation with tools like dexgaurd to newer methods like verification of api calls using google play services.
This session was taken in Barcamp 13 bangalore http://barcampbangalore.org/bcb/bcb13/reverse-engineering-an-android-app-securing-your-android-apps-against-attacks
and bangalore android user group meetup Jan meetup http://www.meetup.com/blrdroid/events/100360682/
Using the Android Native Development Kit (NDK)DroidConTLV
Android NDK is used to integrate C/C++ code into Android applications. Learn when and how to use it ; and what it implies to do so from development, integration within Eclipse and Android Studio, to distribution.
http://fr.droidcon.com/2014/agenda/
http://fr.droidcon.com/2014/agenda/detail?title=The+Android+Native+Development+Kit
The Android NDK is used to integrate C/C++ code into Android applications and libraries.
Learn how you can use the NDK and NDK-based libraries with Eclipse and Android Studio, and how you can debug and optimize your code.
Discover what changes from the new Android Runtime may break your integration, and how you can target new 64-bit architectures with the upcoming android L-release.
Speaker : Alexander Weggerle, Intel
Slides of the talk gave to Devoxx with José Paumard about new features coming in CDI 2. Java SE support, asynchronous event, Interceptor on producers...
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginXavier Hallade
Android Studio is finally fully supporting the NDK so you can easily integrate C/C++ inside Android applications.
While this support is still experimental, it’s promising and worth already doing the final jump from other IDEs and build systems.
After a short introduction on what is the NDK, learn how to use it from Android Studio while avoiding several classic pitfalls.
New features coming in CDI 2.0, talk given during Java One 2016
- Java SE support
- Async events
- Ordered events
- Meta data configurators
- Interceptors on producers
Slides of Java One 2015 session "Advanced CDI in live coding"
In this session we explained how portable extensions work and shown third party framework integration with Metrics and Camel integration into CDI programming model
With growth in app market it is essential to guard our android apps against possible threats, in this presentation we will walk through various tools and techniques which some one can use to reverse engineer an android app, we will see how some one can get access to APP DB, CODE, API, PREFERENCES.
We will also see different tools and techniques to guard our app against possible threats from code obfuscation with tools like dexgaurd to newer methods like verification of api calls using google play services.
This session was taken in Barcamp 13 bangalore http://barcampbangalore.org/bcb/bcb13/reverse-engineering-an-android-app-securing-your-android-apps-against-attacks
and bangalore android user group meetup Jan meetup http://www.meetup.com/blrdroid/events/100360682/
[Workshop] Analyzing Your Deliverables: Developing the Optimal Documentation ...Scott Abel
Presented by Nicki Bleiel at Documentation and Training LIfe Sciences, June 23-26, 2008 in Indianapolis.
Documentation deliverables have evolved beyond manuals and online help in recent years, and with the emergence of Web 2.0, things are changing faster than ever. Technical communicators have many more options to enhance the user experience, and developing many of them provide the opportunity to work with other departments to find a more holistic approach to content development and delivery. But there is no one-size-fits-all set of solutions. This workshop will review the types of analysis you need to do to determine which deliverables are right for your project, your customer, and your company.
Other factors that can’t be ignored, such as translation needs, staff/time constraints, file size limitations, corporate image and control, and proprietary concerns will also be discussed, including:
Analyzing the Product
* Intended audience; delivery method (desktop, web application, etc.); competitor offerings; software development methodology. The UI as part of the Help system. Product Management expectations.
Identifying User Wants and Needs
* Preferences and expectations for information; work environment; knowledge and experience levels.
Ascertaining Internal Needs and Opportunities
* Working with Training, Support, and Marketing to reduce duplication and provide the user with consistent, useful information.
* Finding ways to incorporate information from other departments to improve documentation.
Accessing Deliverable Options
* What is the optimum mix for the product?
* The traditional: online help, manuals, embedded help, job aids, forums, web sites, technical support knowledgebases.
* Emerging trends: wikis, blogs, RSS feeds, software demonstrations, podcasts, and other collaborative tools. They can supplement and/or enhance the traditional. Or, they may be a better fit for internal knowledge management or marketing use.
Optimizing the Library
* Single-sourcing; best practices for structuring information; continuous publishing
Example of a interactive dashboard embedded in a PowerPoint presentation. Use this dashboard to understand trends of your business. Compare the areas and break down the data.
You work hard to design marketing and outreach strategies to attract referring physicians and grow referral volume. Learn how you can simplify the referral process to ensure you capture the volume you worked so hard to attain by downloading our white paper: Physician Marketing & Outreach, Omni-Channel Experience.
Test-driven Development (TDD) is still a subject all developers agree is a great thing, but never get around to actually doing it for many reasons. In this workshop, I use real-world business requirements on legacy code for which we need to fix bugs and add features, but we’re doing it in a TDD way.
Amazon Web Services The Hague Meetup group, "Aws Deployment Tools - Overview, Details, Implementation" presentation. We've talked about AWS CodePipeline, CodeCommit, CodeBuilt and CodeDeploy.
#olindata #sentia
Blog post for detailed explanation and codes.
http://www.sentialabs.io/2018/08/20/AWS-Deployment-Tools.html
http://fr.droidcon.com/2014/agenda/detail?title=Extending+your+apps+to+wearables
speaker: Vitaliy Zasadnyy, GDG Lviv
Mobile developer, Google Developers Group and Gamedev Community Lviv co-founder. Interested in GameDev, Android, iOS, Google App Engine and community management. Used to work for enterprise giants like EPAM as well as for product companies such as NRavo. Nowedays work in two teams: first one make 3D MMO game using Unity, second - RnD. TEDx speaker.
Bring Intelligence to the Edge with Intel® Movidius™ Neural Compute StickDESMOND YUEN
Motiviation to move intelligence to the edge
Edge compute use cases
Barriers to moving intelligence to the edge
Deep learning algorithms – can they run on an edge device?
Movidius Neural Compute Stick (arch,usage, etc)
Só um appzinho aê!? - O guia de sobrevivência para o dev da ideia inovadora a...Eduardo Carrara de Araujo
É com grande frequência que o desenvolvimento de aplicações é subestimado em complexidade causando frustração, stress e grandes desperdícios de tempo e dinheiro. Para aplicativos móveis essa realidade não é diferente e muitas vezes passamos e passaremos pela discussão do "só um appzinho aê".
Mas se não é assim tão simples, afinal o que é necessário para se desenvolver um app? Quais habilidades e pontos de atenção podem colaborar para a morte ou sucesso de um projeto?
Nesta palestra vamos discutir ideias, habilidades e táticas que irão lhe ajudar a chegar ao seu MVP sem perder a cabeça.
Palestra apresentada no DevFest Centro Sul Fluminense realizado em Vassouras em Outubro de 2017.
O foco é o uso da linguagem Kotlin para o desenvolvimento de testes automatizados para aplicações Android.
Integração Contínua (CI) é um conceito em alta já alguns anos em diversas áreas relacionadas ao desenvolvimento de software. Por diversas razões o desenvolvimento mobile ficou para trás por bastante tempo, no entanto ao longo dos últimos anos muitas ferramentas apareceram e hoje esta já uma realidade que pode ser aplicada aos seus apps e bibliotecas. Nesta palestra será abordada a importância do CI para um time Android, as vantagens ao se adotar, algumas ferramentas disponíveis e um breve caso que tem dado certo.
Mix dos materiais apresentados nas trilhas Testes e Android na The Developers Conference SP 2017.
Como a melhorar seu processo de automação de testes de apps Android? Como reduzir Flakiness? O que é mocking e como ele pode melhorar sua produtividade? Qual o impacto dos testes de UI na sua suite de testes? O foco desta apresentação é falar destes tópicos e prover algumas sugestões de implementações que podem ajudar no dia a dia do desenvolvedor.
Palestra apresentada durante o iMasters Android DevConference 2016.
Palestra apresentada no DevFest Centro Sul Fluminense 2016
Entenda como mobile tem impactado a vida das pessoas e como é possível integrá-lo ao seu negócio para proporcionar uma experiência mais interessante aos seus clientes.
Palestra Apresentada na The Developers Conference SP 2016.
Todos concordam que o teste de aplicações e soluções é fundamental para garantir a qualidade do produto para o usuário. Já a automação dos testes e do processo de qualidade da aplicação é um sonho que muitos times e desenvolvedores gostariam de atingir, então por que é tão difícil? Nesta palestra exploraremos dicas, ferramentas e práticas para começar a automatizar os testes de sua aplicação Android. Se você sempre quis fazer isso e não sabia por onde começar esta é a hora!
Implementation of a Participatory Sensing Solution to Collect Data About Pave...Eduardo Carrara de Araujo
The focus of this work is the development of an alternative proposition to evaluate
the pavement conditions for a given city using a participatory sensing solution.
To substantiate the project the following areas had to be investigated: proposals
and standards in pavement management, how the pavement evaluation is done and
the effects of a bad quality pavement on the vehicle’s passengers. Research in the
areas of participatory sensing, tecnologies in mobility and software engineering were
done to ascertain how the relationship between these topics could collaborate in the
problem’s solution. With this elements in place it was possible to design, analysis and
develop a proof of concept as a software solution based in a client server architecture,
in which the client application collects data and the server application handles the
data storage and availability. The collected quantitative information analysis showed
that it is possible to determine the presence of defects and assess the pavement
quality even using simple collection devices like a smartphone, and also enable the
collection of qualitative information that could help measure the pavement quality
impact in the perspective of its users.
Support slides for the test automation workshop realized at the iMasters Android DevConference 2015 at São Paulo. The workshop focus was around Unit Tests with JUnit, UI Tests with Espresso and UIAutomator and Testing your app in the cloud with Testdroid.
Palestra apresentada na trilha de Testes dos TDCs Floripa, Sampa e Porto Alegre em 2015, discutindo sobre como soluções de nuvem podem ajudar a melhorar os testes de aplicações Android em um mundo fragmentado. Além disso introduzimos formas de automatizar os testes de sua aplicação para possibilidar o uso de device farms na nuvem com as ferramentas Espresso e UIAutomator.
Para vídeos sobre o funcionamento do TestDroid verifique o canal deles no YouTube: https://www.youtube.com/user/BitbarChannel
Palestra apresentando os primeiros passos na utilização do JUnit, Espresso e UIAutomator para a automação de testes em Apps Android, além de como utilizar os testes criados em uma device farm na nuvem para execução dos testes.
Para vídeos sobre o funcionamento do TestDroid verifique o canal deles no YouTube: https://www.youtube.com/user/BitbarChannel
Lecture about Android Auto delivered at the Android Meetup #5 organized by the GDG ABC on 2015 January 31st at ABC Federal University at Santo André, Brazil.
Session about android debugging tools and techniques delivered at an Android Meetup organized by GDG ABC on October 25th 2014 at FATEC São Caetano do Sul, Brazil
Lecture about techniques, frameworks and tools to automate the testing for your Android App and how to use Testdroid, one of the available device farms, to test your App in the cloud and overcome fragmentation issues.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
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?
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.
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?!
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!
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...
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).
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.
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!
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.