Xamarin 바인딩 프로젝트에서 JAR 등을 바인딩할 때 Java의 Finaliza를 포함할 때의 대응 방법입니다.
3817 단어 C#Xamarin.Android
C#에는 동일한 목적을 가진 분석기가 있습니다.C#에서 분석기는 클래스 이름에'~'를 붙여 선언하지만 내부는'Finalize'의 함수 이름으로 변환된다.따라서 Finalize 함수 이름을 사용할 때 다음 경고나 오류가 발생합니다.
Xamarin 바인딩 프로젝트에서 JAR에 Finalize가 포함되어 있으면 Java의 "finalize"는 C#의 "Finalize"함수 이름이 되어 오류가 발생합니다.
본래'자바의finalize라는 함수명을 C#의 분석기로 바꾸고 싶다'는 모습이 있어야 하는데 그렇지 않다.
Xamarin 바인딩 프로젝트에서 구축 중 오류가 발생하면 "Metadata.xml"을 편집하여 변환 방법을 상세하게 지시하여 오류를 피할 수 있습니다.그렇다면 이번에는 메타데이터.xml을 어떻게 지정할까요?인터넷에서 찾아봤는데 좋은 방법이 없는 것 같아요.
방안 1. 사라지면 된다는 말
파인리자를 사용해서는 안 되기 때문에 없애도 문제없다.
<remove-node path="/api/package[@name='your.package.name']/class[@name='Proper.ClassName']/method[@name='finalize' and count(parameter)=0]" />
방안 2. 강제 변경파Java의
protected final void finalize()
함수 이름protected override sealed unsafe void Finalize()
오류로 변환하지만 강제unsafe /**/ ~FooIterator()
이런 분석기는대단한 손.<attr path="/api/package[@name='com.company.api']/class[@name='FooIterator']/method[@name='finalize']" name="managedName">~FooIterator</attr>
<attr path="/api/package[@name='com.company.api']/class[@name='FooIterator']/method[@name='finalize']" name="visibility"></attr>
<attr path="/api/package[@name='com.company.api']/class[@name='FooIterator']/method[@name='finalize']" name="managedReturn">/**/</attr>
방안 3. 스스로 찾은 방법.먼저 구축합니다.당연히 잘못이지.오류 목록은 다음과 같습니다.
오류 일람 창에서 오류가 발생한 곳을 두 번 클릭하여 오류를 표시합니다.
Finalize 는 함수 이름입니다.적파선은 나에게 "여기가 틀렸다"고 말했다.이 소스 코드를 직접 수정합니다.만약 이 예라면, 예를 들어 이번에는 이벤트급 해석기인데, 함수 이름은 Finalize에서 '~ 이벤트'로 변경되었다.'proted override seald''void'가 필요하지 않으므로 삭제합니다.
이렇게 수정하면 구축을 선택하면 순조롭게 구축할 수 있습니다.그러나 재구축 또는 청결은 선택할 수 없습니다.'재구성' 을 선택하면 분석기는 원래의 원료 공급기로 돌아간다.
뭐가 제일 좋아요?
Reference
이 문제에 관하여(Xamarin 바인딩 프로젝트에서 JAR 등을 바인딩할 때 Java의 Finaliza를 포함할 때의 대응 방법입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/secile/items/b01ddcad2d5eb7d3bbec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)