+ pluginhost test project
This commit is contained in:
		
							
								
								
									
										48
									
								
								src/PluginSdkBinding/Additions/AboutAdditions.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/PluginSdkBinding/Additions/AboutAdditions.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
Additions allow you to add arbitrary C# to the generated classes
 | 
			
		||||
before they are compiled.  This can be helpful for providing convenience
 | 
			
		||||
methods or adding pure C# classes.
 | 
			
		||||
 | 
			
		||||
== Adding Methods to Generated Classes ==
 | 
			
		||||
 | 
			
		||||
Let's say the library being bound has a Rectangle class with a constructor
 | 
			
		||||
that takes an x and y position, and a width and length size.  It will look like
 | 
			
		||||
this:
 | 
			
		||||
 | 
			
		||||
public partial class Rectangle
 | 
			
		||||
{
 | 
			
		||||
    public Rectangle (int x, int y, int width, int height)
 | 
			
		||||
	{
 | 
			
		||||
	    // JNI bindings
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Imagine we want to add a constructor to this class that takes a Point and
 | 
			
		||||
Size structure instead of 4 ints.  We can add a new file called Rectangle.cs
 | 
			
		||||
with a partial class containing our new method:
 | 
			
		||||
 | 
			
		||||
public partial class Rectangle
 | 
			
		||||
{
 | 
			
		||||
    public Rectangle (Point location, Size size) :
 | 
			
		||||
	    this (location.X, location.Y, size.Width, size.Height)
 | 
			
		||||
	{
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
At compile time, the additions class will be added to the generated class
 | 
			
		||||
and the final assembly will a Rectangle class with both constructors.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
== Adding C# Classes ==
 | 
			
		||||
 | 
			
		||||
Another thing that can be done is adding fully C# managed classes to the
 | 
			
		||||
generated library.  In the above example, let's assume that there isn't a
 | 
			
		||||
Point class available in Java or our library.  The one we create doesn't need
 | 
			
		||||
to interact with Java, so we'll create it like a normal class in C#.
 | 
			
		||||
 | 
			
		||||
By adding a Point.cs file with this class, it will end up in the binding library:
 | 
			
		||||
 | 
			
		||||
public class Point
 | 
			
		||||
{
 | 
			
		||||
    public int X { get; set; }
 | 
			
		||||
	public int Y { get; set; }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								src/PluginSdkBinding/Jars/AboutJars.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/PluginSdkBinding/Jars/AboutJars.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
This directory is for Android .jars.
 | 
			
		||||
 | 
			
		||||
There are 2 types of jars that are supported:
 | 
			
		||||
 | 
			
		||||
== Input Jar ==
 | 
			
		||||
 | 
			
		||||
This is the jar that bindings should be generated for.
 | 
			
		||||
 | 
			
		||||
For example, if you were binding the Google Maps library, this would
 | 
			
		||||
be Google's "maps.jar".
 | 
			
		||||
 | 
			
		||||
Set the build action for these jars in the properties page to "InputJar".
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
== Reference Jars ==
 | 
			
		||||
 | 
			
		||||
These are jars that are referenced by the input jar.  C# bindings will
 | 
			
		||||
not be created for these jars.  These jars will be used to resolve
 | 
			
		||||
types used by the input jar.
 | 
			
		||||
 | 
			
		||||
NOTE: Do not add "android.jar" as a reference jar.  It will be added automatically
 | 
			
		||||
based on the Target Framework selected.
 | 
			
		||||
 | 
			
		||||
Set the build action for these jars in the properties page to "ReferenceJar".
 | 
			
		||||
							
								
								
									
										64
									
								
								src/PluginSdkBinding/PluginSdkBinding.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/PluginSdkBinding/PluginSdkBinding.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
			
		||||
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 | 
			
		||||
    <ProductVersion>8.0.30703</ProductVersion>
 | 
			
		||||
    <SchemaVersion>2.0</SchemaVersion>
 | 
			
		||||
    <ProjectGuid>{3DA3911E-36DE-465E-8F15-F1991B6437E5}</ProjectGuid>
 | 
			
		||||
    <ProjectTypeGuids>{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
 | 
			
		||||
    <OutputType>Library</OutputType>
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>PluginSdkBinding</RootNamespace>
 | 
			
		||||
    <AssemblyName>PluginSdkBinding</AssemblyName>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
    <TargetFrameworkVersion>v2.2</TargetFrameworkVersion>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <Optimize>false</Optimize>
 | 
			
		||||
    <OutputPath>bin\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <OutputPath>bin\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="Mono.Android" />
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Core" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <None Include="Jars\AboutJars.txt" />
 | 
			
		||||
    <None Include="Additions\AboutAdditions.txt" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <TransformFile Include="Transforms\Metadata.xml" />
 | 
			
		||||
    <TransformFile Include="Transforms\EnumFields.xml" />
 | 
			
		||||
    <TransformFile Include="Transforms\EnumMethods.xml" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <EmbeddedJar Include="..\java\Keepass2AndroidPluginSDK\bin\keepass2androidpluginsdk.jar">
 | 
			
		||||
      <Link>Jars\keepass2androidpluginsdk.jar</Link>
 | 
			
		||||
    </EmbeddedJar>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
 | 
			
		||||
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
			
		||||
       Other similar extension points exist, see Microsoft.Common.targets.
 | 
			
		||||
  <Target Name="BeforeBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  <Target Name="AfterBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  -->
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										34
									
								
								src/PluginSdkBinding/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/PluginSdkBinding/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Runtime.CompilerServices;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
using Android.App;
 | 
			
		||||
 | 
			
		||||
// General Information about an assembly is controlled through the following 
 | 
			
		||||
// set of attributes. Change these attribute values to modify the information
 | 
			
		||||
// associated with an assembly.
 | 
			
		||||
[assembly: AssemblyTitle("PluginSdkBinding")]
 | 
			
		||||
[assembly: AssemblyDescription("")]
 | 
			
		||||
[assembly: AssemblyConfiguration("")]
 | 
			
		||||
[assembly: AssemblyCompany("")]
 | 
			
		||||
[assembly: AssemblyProduct("PluginSdkBinding")]
 | 
			
		||||
[assembly: AssemblyCopyright("Copyright ©  2014")]
 | 
			
		||||
[assembly: AssemblyTrademark("")]
 | 
			
		||||
[assembly: AssemblyCulture("")]
 | 
			
		||||
[assembly: ComVisible(false)]
 | 
			
		||||
 | 
			
		||||
// Version information for an assembly consists of the following four values:
 | 
			
		||||
//
 | 
			
		||||
//      Major Version
 | 
			
		||||
//      Minor Version 
 | 
			
		||||
//      Build Number
 | 
			
		||||
//      Revision
 | 
			
		||||
//
 | 
			
		||||
// You can specify all the values or you can default the Build and Revision Numbers 
 | 
			
		||||
// by using the '*' as shown below:
 | 
			
		||||
// [assembly: AssemblyVersion("1.0.*")]
 | 
			
		||||
[assembly: AssemblyVersion("1.0.0.0")]
 | 
			
		||||
[assembly: AssemblyFileVersion("1.0.0.0")]
 | 
			
		||||
 | 
			
		||||
// Add some common permissions, these can be removed if not needed
 | 
			
		||||
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
 | 
			
		||||
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
 | 
			
		||||
							
								
								
									
										14
									
								
								src/PluginSdkBinding/Transforms/EnumFields.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/PluginSdkBinding/Transforms/EnumFields.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
<enum-field-mappings>
 | 
			
		||||
  <!--
 | 
			
		||||
  This example converts the constants Fragment_id, Fragment_name,
 | 
			
		||||
  and Fragment_tag from android.support.v4.app.FragmentActivity.FragmentTag
 | 
			
		||||
  to an enum called Android.Support.V4.App.FragmentTagType with values
 | 
			
		||||
  Id, Name, and Tag.
 | 
			
		||||
  
 | 
			
		||||
  <mapping jni-class="android/support/v4/app/FragmentActivity$FragmentTag" clr-enum-type="Android.Support.V4.App.FragmentTagType">
 | 
			
		||||
    <field jni-name="Fragment_name" clr-name="Name" value="0" />
 | 
			
		||||
    <field jni-name="Fragment_id" clr-name="Id" value="1" />
 | 
			
		||||
    <field jni-name="Fragment_tag" clr-name="Tag" value="2" />
 | 
			
		||||
  </mapping>
 | 
			
		||||
  -->
 | 
			
		||||
</enum-field-mappings>
 | 
			
		||||
							
								
								
									
										13
									
								
								src/PluginSdkBinding/Transforms/EnumMethods.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/PluginSdkBinding/Transforms/EnumMethods.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<enum-method-mappings>
 | 
			
		||||
  <!--
 | 
			
		||||
  This example changes the Java method:
 | 
			
		||||
    android.support.v4.app.Fragment.SavedState.writeToParcel (int flags)
 | 
			
		||||
  to be:
 | 
			
		||||
    android.support.v4.app.Fragment.SavedState.writeToParcel (Android.OS.ParcelableWriteFlags flags)
 | 
			
		||||
  when bound in C#.
 | 
			
		||||
  
 | 
			
		||||
  <mapping jni-class="android/support/v4/app/Fragment.SavedState">
 | 
			
		||||
    <method jni-name="writeToParcel" parameter="flags" clr-enum-type="Android.OS.ParcelableWriteFlags" />
 | 
			
		||||
  </mapping>
 | 
			
		||||
  -->
 | 
			
		||||
</enum-method-mappings>
 | 
			
		||||
							
								
								
									
										9
									
								
								src/PluginSdkBinding/Transforms/Metadata.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/PluginSdkBinding/Transforms/Metadata.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
<metadata>
 | 
			
		||||
  <!--
 | 
			
		||||
  This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
 | 
			
		||||
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
 | 
			
		||||
  
 | 
			
		||||
  This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
 | 
			
		||||
  <remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
 | 
			
		||||
  -->
 | 
			
		||||
</metadata>
 | 
			
		||||
		Reference in New Issue
	
	Block a user