P/Invoke tries to make your life easier by automatically converting (“marshalling”) data types from managed code to native code and the other way around.
Currently, MonoDroid (Mono for Android) doesn’t support native libraries (or any other Android resource type) in library projects (bug report). Fortunately, they support normal .NET assembly resources. This led me to write a workaround for this missing feature.
The Class ∞
Here’s the class that implements to loader.
- 2012-07-18: Updates documentation and added some logging
2012-07-11: Initial revision
How to use ∞
To use this class, you first need to create a directory structure for the native libraries, like this:
Project +- NativeLibs +- armeabi-v7a +- armeabi +- other ABIs you want to support
Now place the native libraries in the apropriate directories, for example:
Project +- NativeLibs +- armeabi-v7a | +- libsqlite.so +- armeabi +- libsqlite.so
Then select “Embedded Resource” as Build Action in the file’s properties (Hotkey: F4).
Now use one of the
Load() methods to load the library. For example, if you have a type called
MyType in the project’s default namespace (specified in the project settings), you can use this call to load a library called
Note: If you renamed the directory “NativeLibs” from above, you can specify it as third parameter for
Mono for Android let’s you write Android applications in a .NET language (for example, C#). It comes with wrappers for almost the entire Android API so building “standard” apps is easy enough. However, sometimes you may need to work with third party Java classes that aren’t part of Android itself. These classes usually come as a
.jar file. Fortunately, Mono for Android provides a way to access those Java classes. Unfortunately, this way is a “little” bit tricky and documentation on this is (currently) quite limited.
This article will show some basic example of how to call a method of a Java class from Mono for Android. We will use Visual Studio 2010 in this article, as it is (in my opinion) currently superior to Mono Develop.
Update: Mono for Android v4.2 and higher provides an automatic way for doing the things described in this article. This is a lot easier than the manual way and thus the preferred way.
If you search for WCF tutorials, you’ll find a lot of elaborate examples that involve editing several files.
This tutorial is (supposed to be) different. It uses the simple most approach I could find for using WCF. It’ll only involve one file and no XML descriptors (read:
I’ll explain how to use WCF for communicating between .NET processes and how to use it for HTTP requests.
The initial code is based primarily on this nice tutorial.
Let’s get started.
This article provides a quick comparison between C++/CLI and C#. It’s meant for those who know C# (and possibly C++) and will explain which C++/CLI language construct correspond with which in C#. (I don’t know Visual Basic so I can’t add infos about this here.)
Note: This is not a complete reference but rather quick reference for those features that are (in my opinion) the most unclear.