Xamarin C#.jar包装

时间:2016-02-22 11:55:33

标签: c# jar binding xamarin xamarin.android

我正试图在Xamarin中为SQLCypher for android创建一个绑定,我得到了4个我似乎无法克服的错误。

4个错误是:

  

错误CS0534:'BulkCursorToCursorAdaptor'未实现继承   抽象成员'AbstractCursor.GetType(int)'(CS0534)(SQLCyper)

public sealed partial class BulkCursorToCursorAdaptor : global::Info.Guardianproject.Database.AbstractWindowedCursor {
  

错误CS0534:'MatrixCursor'未实现继承的抽象   成员'AbstractCursor.GetType(int)'(CS0534)(SQLCyper)

public partial class MatrixCursor : global::Info.Guardianproject.Database.AbstractCursor {
  

错误CS0738:'AbstractCursor'未实现接口成员   'ICrossProcessCursor.Window'。 'AbstractCursor.Window'无法实现   'ICrossProcessCursor.Window'因为它没有匹配   返回'CursorWindow'的类型。 (CS0738)(SQLCyper)

public abstract partial class AbstractCursor : global::Java.Lang.Object, global::Android.Database.ICrossProcessCursor {
  

错误CS0534:'SQLiteCursor'没有实现继承的抽象   成员'AbstractCursor.GetType(int)'(CS0534)(SQLCyper)

public partial class SQLiteCursor : global::Info.Guardianproject.Database.AbstractWindowedCursor 

如你所见,3是相似的。

我的Xamarin是最新的,目标平台是Android 4.1 jellybean。

jar文件的来源是:http://www.java2s.com/Code/Jar/s/Downloadsqlcipherjar.htm

我正在尝试的另一个jar文件是:http://www.trojanpc.co.za/sqlcipher.jar

这是我从一个有这个jar的android项目中获取的,这个有不同的错误。

1 个答案:

答案 0 :(得分:2)

您不必自己创建绑定。它们以Xamarin组件的形式提供。

Android:https://components.xamarin.com/gettingstarted/sqlcipher-for-xamarin-android

iOS:https://components.xamarin.com/view/sqlcipher-for-xamarin-ios

一般信息:https://www.zetetic.net/sqlcipher/sqlcipher-for-xamarin/

我不知道链接罐子的年龄。所以我决定,根据最新的社区版本构建绑定。

我做了什么:

  1. 将android-database-sqlcipher-3.3.1-2.aar [1]添加到jar文件夹
  2. 将其构建操作设置为LibraryProjectZip
  3. 通过扩展元数据来消除构建错误

    <metadata>
        <attr path="/api/package[@name='net.sqlcipher']/class[@name='AbstractCursor']/method[@name='getWindow' and count(parameter)=0]" name="managedReturn">Android.Database.CursorWindow</attr>
        <remove-node path="/api/package[@name='net.sqlcipher']/interface[@name='Cursor']/method[@name='getType' and count(parameter)=1 and parameter[1][@type='int']]"></remove-node>
    </metadata>
    

    这会将Window属性的返回值设置为Android.Database.CursorWindow,因为接口需要它。 并删除了冗余的getType方法。

    1. 编译没有错误。
    2. 将其推送到github存储库:https://github.com/smstuebe/xamarin-sqlcipher
  4. 我没有测试它。如果您发现错误,请随时发送拉取请求。

    [1] https://bintray.com/bintray/jcenter/net.zetetic%3Aandroid-database-sqlcipher/3.3.1-2/view