ネイティブ Java ライブラリをバインドしようとしています。この jar ファイルは以前にバインド プロジェクトに統合されており、最新バージョンで jar を更新しようとしています。
ビルド中に次の問題が発生します。
1>obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java:81: error: cannot find symbol
1> public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
1> ^
1> symbol: class DeferredAuthorizationReason
1> location: package com.creditcall.cardeasemobile
1>obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java:86: error: cannot find symbol
1> private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);
1> ^
1> symbol: class DeferredAuthorizationReason
1> location: package com.creditcall.cardeasemobile
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error : error: cannot find symbol
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error : public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error : symbol: class DeferredAuthorizationReason
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error : location: package com.creditcall.cardeasemobile
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error :
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error : error: cannot find symbol
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error : private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error : symbol: class DeferredAuthorizationReason
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error : location: package com.creditcall.cardeasemobile
1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error :
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error : error: cannot find symbol
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error : public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error : symbol: class DeferredAuthorizationReason
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error : location: package com.creditcall.cardeasemobile
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error :
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error : error: cannot find symbol
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error : private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error : symbol: class DeferredAuthorizationReason
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error : location: package com.creditcall.cardeasemobile
1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error :
これらのメソッドは次の場所で確認できますcemListener.java
。
public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
{
n_deferredAuthorization (p0, p1, p2);
}
private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);
DeferredAuthorizationReason
が存在し、C# ファイルからアクセスできる値を持っていることがわかります。バインディングが機能しているように見えますか?なんらかの理由でcemListener.java
見えないという問題があると思います。DeferredAuthorizationReason
Metadata.xml を変更する必要があると思いますが、問題が C# ではなく Java ファイル内にあると思われるため、何が必要かわかりません。
これは、api.xml のクラスです。
<class abstract="false"
deprecated="not deprecated"
extends="java.lang.Enum"
extends-generic-aware="java.lang.Enum<com.creditcall.cardeasemobile.DeferredAuthorizationReason>"
final="true"
name="DeferredAuthorizationReason"
static="false"
visibility="public">
<method abstract="false"
deprecated="not deprecated"
final="false"
name="valueOf"
native="false"
return="com.creditcall.cardeasemobile.DeferredAuthorizationReason"
static="true"
synchronized="false"
visibility="public">
<parameter name="p0"
type="java.lang.String">
</parameter>
</method>
<method abstract="false" deprecated="not deprecated" final="false" name="values" native="false" return="com.creditcall.cardeasemobile.DeferredAuthorizationReason[]" static="true" synchronized="false" visibility="public">
</method>
<field deprecated="not deprecated" final="true" name="CommunicationFailed" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
</field>
<field deprecated="not deprecated" final="true" name="ConnectionFailed" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
</field>
<field deprecated="not deprecated" final="true" name="None" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
</field>
<field deprecated="not deprecated" final="true" name="ProcessingFailed" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
</field>
</class>
問題を引き起こしていないように見える他の列挙型を見ることができます。このファイルがstatic="false"
.
Metadata.xml でこれを修正しようとしましたが、効果がないようです:
<attr path="/api/package[@name='com.creditcall.cardeasemobile']/class[@name='DeferredAuthorizationReason']" name="static">true</attr>