Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Java Binding Tips and Tricks 2017
Search
Atsushi Eno
September 21, 2017
Programming
0
370
Java Binding Tips and Tricks 2017
monkeyfest.io
Atsushi Eno
September 21, 2017
Tweet
Share
More Decks by Atsushi Eno
See All by Atsushi Eno
[COSCUP2024] Catching up Trends in Audio App Development
atsushieno
0
400
Building Kotlin Multiplatform Libraries in 2024
atsushieno
0
3.3k
Kotlin Multiplatformで MIDI 1.0/2.0 ライブラリを作っている話
atsushieno
1
650
building_audio_plugin_ecosystem_on_Android.pdf
atsushieno
0
1.1k
get updated to the latest realtime audio processings knowledge base (2023) (再履修: 2023年までの リアルタイムオーディオ処理)
atsushieno
1
1.1k
learning how DAWs work, with Zrythm
atsushieno
0
1.1k
What for, Where and How to Adopt MIDI 2.0
atsushieno
0
1.2k
audio plugin format study meetup 2022.7.6 (JP)
atsushieno
0
1.6k
CLAPオーディオプラグイン is 何?
atsushieno
1
1.3k
Other Decks in Programming
See All in Programming
Macとオーディオ再生 2024/11/02
yusukeito
0
380
デザインパターンで理解するLLMエージェントの作り方 / How to develop an LLM agent using agentic design patterns
rkaga
8
650
Arm移行タイムアタック
qnighy
0
340
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
6
1.6k
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
1.1k
DevTools extensions で 独自の DevTool を開発する | FlutterKaigi 2024
kokiyoshida
0
110
Modular Monolith Monorepo ~シンプルさを保ちながらmonorepoのメリットを最大化する~
yuisakamoto
6
600
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
220
RubyLSPのマルチバイト文字対応
notfounds
0
120
Tauriでネイティブアプリを作りたい
tsucchinoko
0
380
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
350
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
Ruby is Unlike a Banana
tanoku
97
11k
The Language of Interfaces
destraynor
154
24k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Building Adaptive Systems
keathley
38
2.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Become a Pro
speakerdeck
PRO
25
5k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Transcript
Java Binding Tips and Tricks 2017
Agenda ▪ ▪ ▪
Java Bindings Libraries in Xamarin.Android Ecosystem Xamarin.Android (Mono.Android.dll) other Java
Libs Framework Libraries (System*) OpenTK other .NET Libs (PCL, netstandard, XA libs) Android Framework & Java Framework Subset
What are Java Bindings? ▪ ▪ ▪
Why use Java Bindings? ▪ ▫ ▪ ▫ ▫
Which are Java Bindings, for example? ▪ ▪ ▪ ▪
github:xamarin/XamarinComponents
Discover Java Android Experience ▪ github:wasabeef/awesome-android-ui ▪ ▪
How Java Bindings work ▪ ▪ JNI ▪ ▪
How Java Bindings work ▪ ▪ ▫ ▫ ▪ ▫
▪ new
Project Structure Tips and Tricks
Java Binding Project: general steps
How Java Bindings are Built .jar api.xml *.cs *.dll *.cs
*.cs GenerateBindings CSCompile Metadata.xml additional *.cs reference *.dll reference *.dll ExportJarToXml javadoc .jar
Migrate to new Class parser (if old) ▪ ▪ ▪
▫ ▪ ▫ ▫ new
Jar/Aar and Build Actions ▪ ▫ ▫
Xamarin.Build.Download package ▪ ▫ ▫ ▪ ▪ ▫ new
▪ Library Dependency Tips b.jar class C2 extends a.C1 {
... } ABinding.dll public class C1 { ... } a.jar api.xml BBinding.dll public class C2 : A.C1 { ...} a.jar class C1 { ... } b.jar
Library Dependency Tips ▪ ▫ ▫ ▪ ▫ ▫
Give meaningful Parameter Names ▪ ▫ ▫ ▪ ▫ new
Importing API Documentation ▪ ▫
Metadata Fixup Tips and Tricks
▪ ▪ ▪ ▪ Build Bindings without Metadata fixup
Metadata fixup: why is it required? ▪ ▫ ▫ ▪
▫ ▫
▪ ▪ ▫ ▫ ▫ ▪ ▪ [Java Bindings Metadata]
Metadata.xml
Find the causes of unexpected results ▪ ▪ ▫
Easiest build fix ▪ ▫ ▪
Individual Metadata fixup Tips ▪ ▪ ▪ ▪ ▪ ▪
▪ ▪ ▪ Troubleshooting Bindings
Namespace / Type Name conflicts
Fix Inconsistent Member Access Java C#
Dealing with Variants and Generics Java C#
Dealing with Variants and Generics Java C#
Dealing with Variants and Generics
Name Collision on EventArgs Java C#
Name Collision on EventArgs
Beautifying Managed API ▪ ▫ ▫ ▫ ▪ ▫ →
▪ ▫ →
Knowing Limitations...
Future Topics
Java8 Default Interface Methods ▪ ▫ ▪ ▫ ▫ ▪
▫
Java8 Default Interface Methods ▪ ▪ ▪
Android Architecture Components ▪ ▫ ▪ ▫ ▫
Android Architecture Components ▪ ▫ ▫ ▪ ▫ ▫
Thanks ▪ ▫ ▫ ▫ ▫ ▫