如何将Javadoc集成到Xamarin Java绑定库中?

时间:2016-05-25 23:59:15

标签: android xamarin xamarin.android

我已阅读Xamarin's documentation on this,并注意到有关the Xamarin Forums的讨论。要么丢失了某些东西,要么我错过了一些东西,因为在我的情况下这一切都不起作用,这是:

我的环境是OSX。我有一个用Java创建的AAR,需要提供这个作为Xamarin开发人员使用的DLL。我在Xamarin Studio中创建了一个Java绑定库,它生成了一个DLL,但是我的参数是被激活的(例如p0等)。我可以无休止地映射Metadata.xml中的每个参数但是...说它不是这样的!我想使用我的JavaDoc来完成繁重的工作,并通过添加以下内容来更改.csproj,如X​​amarin的文档中所示:

...     
<PropertyGroup>
   <Java7DocPaths>JavaDocs\myLib</Java7DocPaths>
</PropertyGroup>
..

我的JavaDocs位于.csproj文件的兄弟文件夹中(此处未显示myLib子文件夹):

enter image description here

我清理并重建了Java Binding项目,令我失望的是,尽管我付出了努力,仍然使用了参数名称。如何在OSX上使用Xamarin Studio实现此功能?

感谢SushiHangover。我用/ verbosity运行xbuild:debug没有错误,也没有警告。当我使用/ verbosity时:诊断它为JarToXml任务输出JavaDocs:{0},我正在探索可能导致这种情况的原因。

1 个答案:

答案 0 :(得分:2)

您没有指定JARTOXML目标的ExportJarToXml任务产生的警告。如果你不知道:

cd {YourJavaBindingLibraryDirectory}
rm -Rf bin obj # Remove build artifacts so all tasks all executed
xbuild /verbosity:debug # /verbosity:diagnostic if needed

注意:如果您没有看到任何警告,请尝试使用verbosity:diagnostic

在输出中搜索JARTOXML任务...

我看到的头号问题是:

J2X8001

JARTOXML:  warning J2X8001: Couldn't access javadocs at specified docpath.  Continuing without it...

仅供参考:此示例使用bluejamesbond/TextJustify-Android,一个非常棒的文本对齐库; - )

首先,仔细检查JavaDocPaths.csproj的关系:

.csproj包含:

<PropertyGroup>
  <JavaDocPaths>JavaDocs/textjustify-android-2.1.6-javadoc</JavaDocPaths>
</PropertyGroup>

Equals Project dir:

TextJustifyAndroid.csproj
~~~~
├── JavaDocs
│   ├── textjustify-android-2.1.6-javadoc
~~~~

注意:这与绑定项目.csproj位置相关,不是解决方案。

下一步,确保您已扩展JavaDoc jar并且它是原始结构。

以下是我个人构建项目树的方式:

├── Jars
│   └── textjustify-android-2.1.6.aar
├── JavaDocs
│   └── textjustify-android-2.1.6-javadoc.jar

我将* .javadoc.jar复制到我的JavaDocs子目录中,然后展开它们(我使用unzip,但保留dir结构的任何工具都很好)

unzip textjustify-android-2.1.6-javadoc.jar -d textjustify-android-2.1.6-javadoc

这导致:

├── Jars
│   └── textjustify-android-2.1.6.aar
├── JavaDocs
│   ├── textjustify-android-2.1.6-javadoc
│   │   ├── META-INF
│   │   │   └── MANIFEST.MF
│   │   ├── allclasses-frame.html
│   │   ├── allclasses-noframe.html
│   │   ├── com
│   │   │   └── bluejamesbond
│   │   │       └── text
│   │   ├── script.js
│  ~~~~~~~~~~~~~~~~~~~~~~~~
│   │   ├── serialized-form.html
│   │   └── stylesheet.css
│   └── textjustify-android-2.1.6-javadoc.jar

仅供参考:我保留目录名称中的版本以帮助进行版本控制,因为我可能正在使用同一项目中同一.aar|.jar的多个版本...但您可以重命名它,只需确保它匹配.csproj中的内容。

运行xbuild /verbosity:debug会导致ExportJarToXml目标没有产生警告:

~~~~
Target ExportJarToXml:
        Tool /usr/bin/java execution started with arguments: -XX:-UseSplitVerifier -jar /Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/mandroid/jar2xml.jar --jar=.../Justify/TextJustifyAndroid/obj/Debug/library_project_jars/classes.jar --ref=/Users/sushi/Library/Developer/Xamarin/android-sdk-macosx/platforms/android-22/android.jar --out=.../Justify/TextJustifyAndroid/obj/Debug/api.xml --javadocpath=.../Justify/TextJustifyAndroid/JavaDocs/textjustify-android-2.1.6-javadoc
~~~~