PARSE.com许可与反编译代码,用于将Java库与XAMARIN绑定到C#

Parse.com licensing with decompilation of code for binding the java libraries to C# with Xamarin

请原谅我,因为我真的不知道在哪里问这个问题,但我想这对很多人知道答案是很有帮助的。如果我不应该在这里问这个问题,请把我重定向到一个更好的网站去问。谢谢您。

不管怎样,我在很多应用程序中都使用Parse,特别是在Android和基于Web的应用程序中,它作为数据的后端。这是一个很好的服务,他们提供了很好的文档,我很喜欢。不过,我最近将Android上的原生Java转换成了XAMARIN。我很高兴发现Parse有一个Xamarin.android应用程序的现有SDK!不幸的是,我需要在SDK中没有实现的推送通知功能,但在原生Java/Android SDK中进行了文档化和维护。

因此,在阅读了关于我的问题的论坛上的每一个评论之后,我把Java和Android库从解析到Xamarin的C语言的Android绑定起来,因为这似乎是除了使用REST API之外唯一的解决方案。XAMARIN有一个很好的工具,可以将Java绑定到C语言,但是,我可能错了,我的理解是XAMARIN绑定工具必须将Java源从原生Android解析SDK反编译,通过它解析,然后在其周围创建C语言包装。

但是,如果您进入Parse的站点并查看它们的许可证,就会发现Parse的代码无法进行反编译。另一方面,当您进入Xamarin时,它们有用于解析的IOS绑定,它们似乎已经将自己绑定到C,并将其分发到Github上。而且,在Parse的论坛上,每当有人建议绑定SDK时,没有人回应说不允许绑定。

所以我的问题是:

XAMARIN如何能在不解压本地Java的情况下绑定库?

将解析/ Android SDK从Java绑定到C*并将其用于生产应用程序或分发它是合法的吗?

再次感谢!


正如我所知道的,Java绑定库没有任何内容。它创建了一个绑定项目,该项目根据声明性方法自动用C包装器包装库。它只包装公共类和方法。

下面是为您的tubeplayer生成的包装器代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[Register ("com/google/android/youtube/player/YouTubePlayer","","Google.Android.Youtube.Player.IYouTubePlayerInvoker")]
public partial interface IYouTubePlayer : IJavaObject {

    bool HasNext {
        // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.youtube.player']/interface[@name='YouTubePlayer']/method[@name='hasNext' and count(parameter)=0]"
        [Register ("hasNext","()Z","GetHasNextHandler:Google.Android.Youtube.Player.IYouTubePlayerInvoker, Google.Android.Youtube.Player")] get;
    }

    bool HasPrevious {
        // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.youtube.player']/interface[@name='YouTubePlayer']/method[@name='hasPrevious' and count(parameter)=0]"
        [Register ("hasPrevious","()Z","GetHasPreviousHandler:Google.Android.Youtube.Player.IYouTubePlayerInvoker, Google.Android.Youtube.Player")] get;
    }

    bool IsPlaying {
        // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.youtube.player']/interface[@name='YouTubePlayer']/method[@name='isPlaying' and count(parameter)=0]"
        [Register ("isPlaying","()Z","GetIsPlayingHandler:Google.Android.Youtube.Player.IYouTubePlayerInvoker, Google.Android.Youtube.Player")] get;
    }

    // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.youtube.player']/interface[@name='YouTubePlayer']/method[@name='addFullscreenControlFlag' and count(parameter)=1 and parameter[1][@type='int']]"
    [Register ("addFullscreenControlFlag","(I)V","GetAddFullscreenControlFlag_IHandler:Google.Android.Youtube.Player.IYouTubePlayerInvoker, Google.Android.Youtube.Player")]
    void AddFullscreenControlFlag (int p0);

    // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.youtube.player']/interface[@name='YouTubePlayer']/method[@name='cuePlaylist' and count(parameter)=1 and parameter[1][@type='java.lang.String']]"
    [Register ("cuePlaylist","(Ljava/lang/String;)V","GetCuePlaylist_Ljava_lang_String_Handler:Google.Android.Youtube.Player.IYouTubePlayerInvoker, Google.Android.Youtube.Player")]
    void CuePlaylist (string p0);

    // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.youtube.player']/interface[@name='YouTubePlayer']/method[@name='cuePlaylist' and count(parameter)=3 and parameter[1][@type='java.lang.String'] and parameter[2][@type='int'] and parameter[3][@type='int']]"
    [Register ("cuePlaylist","(Ljava/lang/String;II)V","GetCuePlaylist_Ljava_lang_String_IIHandler:Google.Android.Youtube.Player.IYouTubePlayerInvoker, Google.Android.Youtube.Player")]
    void CuePlaylist (string p0, int p1, int p2);

    // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.youtube.player']/interface[@name='YouTubePlayer']/method[@name='cueVideo' and count(parameter)=1 and parameter[1][@type='java.lang.String']]"
    [Register ("cueVideo","(Ljava/lang/String;)V","GetCueVideo_Ljava_lang_String_Handler:Google.Android.Youtube.Player.IYouTubePlayerInvoker, Google.Android.Youtube.Player")]
    void CueVideo (string p0);

您可以从架构描述和Java绑定描述中了解更多信息。