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
410
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
Some Music Libraries for Kotlin (with some .NET -> Kotlin migration stories)
atsushieno
0
170
Building App Extensions equivalents on Android (maybe?)
atsushieno
1
370
Taking trends in music app development into the future mobile ecosystem
atsushieno
0
330
DTM entry level hands-on
atsushieno
0
440
[COSCUP2024] Catching up Trends in Audio App Development
atsushieno
0
830
Building Kotlin Multiplatform Libraries in 2024
atsushieno
0
4.1k
Kotlin Multiplatformで MIDI 1.0/2.0 ライブラリを作っている話
atsushieno
1
780
building_audio_plugin_ecosystem_on_Android.pdf
atsushieno
0
1.2k
get updated to the latest realtime audio processings knowledge base (2023) (再履修: 2023年までの リアルタイムオーディオ処理)
atsushieno
1
1.2k
Other Decks in Programming
See All in Programming
WindowInsetsだってテストしたい
ryunen344
1
240
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.5k
PipeCDのプラグイン化で目指すところ
warashi
1
260
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
120
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
330
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
150
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
100
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
180
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
340
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
270
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
1.2k
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
140
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Designing for humans not robots
tammielis
253
25k
Speed Design
sergeychernyshev
32
1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Producing Creativity
orderedlist
PRO
346
40k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Stop Working from a Prison Cell
hatefulcrawdad
270
21k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Building Adaptive Systems
keathley
43
2.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
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 ▪ ▫ ▫ ▫ ▫ ▫