Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java Binding Tips and Tricks 2017

Atsushi Eno
September 21, 2017

Java Binding Tips and Tricks 2017

monkeyfest.io

Atsushi Eno

September 21, 2017
Tweet

More Decks by Atsushi Eno

Other Decks in Programming

Transcript

  1. Java Binding Tips and Tricks 2017

    View Slide

  2. Agenda



    View Slide

  3. 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

    View Slide

  4. What are Java Bindings?



    View Slide

  5. Why use Java Bindings?





    View Slide

  6. Which are Java Bindings, for example?




    github:xamarin/XamarinComponents

    View Slide

  7. Discover Java Android Experience

    github:wasabeef/awesome-android-ui


    View Slide

  8. How Java Bindings work

    ▪ JNI


    View Slide

  9. How Java Bindings work







    new

    View Slide

  10. Project Structure
    Tips and Tricks

    View Slide

  11. Java Binding Project: general steps

    View Slide

  12. 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

    View Slide

  13. Migrate to new Class parser (if old)







    new

    View Slide

  14. Jar/Aar and Build Actions



    View Slide

  15. Xamarin.Build.Download package






    new

    View Slide


  16. 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

    View Slide

  17. Library Dependency Tips






    View Slide

  18. Give meaningful Parameter Names





    new

    View Slide

  19. Importing API Documentation


    View Slide

  20. Metadata Fixup
    Tips and Tricks

    View Slide





  21. Build Bindings without Metadata fixup

    View Slide

  22. Metadata fixup: why is it required?






    View Slide







  23. ▪ [Java Bindings Metadata]
    Metadata.xml

    View Slide

  24. Find the causes of unexpected results



    View Slide

  25. Easiest build fix



    View Slide

  26. Individual Metadata fixup Tips









    Troubleshooting
    Bindings

    View Slide

  27. Namespace / Type Name conflicts

    View Slide

  28. Fix Inconsistent Member Access
    Java C#

    View Slide

  29. Dealing with Variants and Generics
    Java C#

    View Slide

  30. Dealing with Variants and Generics
    Java C#

    View Slide

  31. Dealing with Variants and Generics

    View Slide

  32. Name Collision on EventArgs
    Java C#

    View Slide

  33. Name Collision on EventArgs

    View Slide

  34. Beautifying Managed API










    View Slide

  35. Knowing Limitations...

    View Slide

  36. Future Topics

    View Slide

  37. Java8 Default Interface Methods







    View Slide

  38. Java8 Default Interface Methods



    View Slide

  39. Android Architecture Components





    View Slide

  40. Android Architecture Components






    View Slide

  41. Thanks






    View Slide