Xamarin Android绑定库org​​.apache问题

时间:2016-09-01 09:18:34

标签: android xamarin xamarin.android

原始Android Jar库文件(mposlitesdk.jar)内有此子文件夹内容:

  • com(内部子文件夹“ingenico”和“zebra”)
  • META-INF
  • org(内部子文件夹“apache”,子文件夹“commons”和“http”)

使用目标23(Android 6.0)编译库。

库mposlitesdk.jar被定义为(通常)为嵌入式jar

编译器给了我:

  • J2XA006警告有关org.apache.http包里面的内容 文库
  

1> JARTOXML:警告J2XA006:引发了缺少的类错误   反映com.ingenico.pclutilities.PclUtilities:   com / hoho / android / usbserial / driver / UsbSerialPort 1> JARTOXML:警告   J2XA006:在反映时引发了缺少的类错误   org.apache.http.impl.client.DefaultRequestDirector:   org / apache / commons / logging / Log 1> JARTOXML:警告J2XA006:丢失   在反思时提出了阶级错误   org.apache.http.impl.client.HttpAuthenticator:   org / apache / commons / logging / Log 1> JARTOXML:警告J2XA006:丢失   在反思时提出了阶级错误   org.apache.http.impl.client.cache.ehcache.EhcacheHttpCacheStorage:   net / sf / ehcache / Ehcache 1> JARTOXML:警告J2XA006:缺少类   在反思时提出错误   org.apache.http.impl.client.cache.memcached.MemcachedHttpCacheStorage   :net / spy / memcached / OperationTimeoutException 1> JARTOXML:警告   J2XA006:在反映时引发了缺少的类错误   org.apache.http.impl.conn.HttpConnPool:   org / apache / commons / logging / Log 1> JARTOXML:警告J2XA006:丢失   在反思时提出了阶级错误   org.apache.http.impl.conn.HttpPoolEntry:   org / apache / commons / logging / Log 1> JARTOXML:警告J2XA006:丢失   反映org.apache.http.impl.conn.Wire时引发了类错误   :org / apache / commons / logging / Log 1> JARTOXML:警告J2XA006:缺失   在反思时提出了阶级错误   org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager:   组织/阿帕奇/公地/记录/登录

  • 使用char'的奇怪无效标记添加到生成的源:
  

OBJ \调试\产生\ SRC \ Org.Apache.Http.Impl.Client.AbstractAuthenticationHandler.cs(244,65,244,66):   错误CS1519:Il token'''nella dichiarazione del membro di classe,   struttura o interfaccianonèvalido

也许主要问题是org.apache.http是否在Xamarin Android命名空间中重复?

感谢您的任何建议 已附加日志

1 个答案:

答案 0 :(得分:2)

乍看之下的问题是org.apache.http在API 23下的表现不佳。原因如下:

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

Google已移除org.apache.http并将其移至optional库。这对Xamarin.Android意味着什么?嗯,这意味着它不再受API 23限制,因为谷歌不发送android.jar。因此,您可以使用几种解决方法:

1)使用9-22之间的任何API级别(Xamarin.Android将为此绑定)

2)如果要满足依赖关系而不为其创建C#绑定,请将org.apache.http.legacy.jar作为ReferenceJar添加到Binding项目中。如果要嵌入.jar并为其创建C#绑定,请使用EmbeddedReferenceJar

您可以在以下位置找到此.jar

android-sdk\platforms\android-23\optional(或者任何高于23的API级别,如API 24 /等都会拥有它)