1

GoogleマップのiOSユーティリティのヒートマップ部分をバインドしようとしています。XamarinオブジェクトSharpie Obj-Cライブラリなぜ巨大なファイルを出力するのバインド?

https://github.com/googlemaps/google-maps-ios-utils

1:.a file Create

2:CreateMakefile &は

XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild 
PROJECT_ROOT=./GoogleMapiOSHeatmapUtility 
PROJECT=./GoogleMapiOSHeatmapUtility.xcodeproj 
TARGET=GoogleMapiOSHeatmapUtility 

all: lib$(TARGET).a 

lib$(TARGET)-i386.a: 
     $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -configuration Release clean build 
     -mv ./build/Release-iphonesimulator/lib$(TARGET).a [email protected] 

lib$(TARGET)-armv7.a: 
     $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7 -configuration Release clean build 
     -mv ./build/Release-iphoneos/lib$(TARGET).a [email protected] 

lib$(TARGET)-arm64.a: 
     $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch arm64 -configuration Release clean build 
     -mv ./build/Release-iphoneos/lib$(TARGET).a [email protected] 

lib$(TARGET).a: lib$(TARGET)-i386.a lib$(TARGET)-armv7.a lib$(TARGET)-arm64.a 
     xcrun -sdk iphoneos lipo -create -output [email protected] $^ 

clean: 
     -rm -f *.a *.dll 

3 makeコマンドを実行します。add 「.a」File BindingProject

4:ApiDefinitions & StructsAndEnumsファイル

を作成

sharpie bind --output=GoogleMapiOSHeatmapUtility --namespace=GoogleMapiOSHeatmapUtility --sdk=iphoneos11.1 ./GoogleMapiOSHeatmapUtility/*.h 

結果

Parsing 14 header files... 
In file included from /var/folders/kv/_n7jh8kd1cbd0sl1jy75k_cm0000gn/T/tmpcc4d148.h:6: 
/Users/xxxxxxxx/Documents/repository/GoogleMapiOSHeatmapUtility/GoogleMapiOSHeatmapUtility/GMUHeatmapTileLayer.h:45:1: warning: no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed 
     [-Wobjc-property-no-attribute] 
@property(nonatomic) GMUGradient *gradient; 
^ 
/Users/xxxxxxxxxxx/Documents/repository/GoogleMapiOSHeatmapUtility/GoogleMapiOSHeatmapUtility/GMUHeatmapTileLayer.h:45:1: warning: default property attribute 'assign' not appropriate for non-GC object 
     [-Wobjc-property-no-attribute] 

Binding... 
    [write] ApiDefinitions.cs 
    [write] StructsAndEnums.cs 

Binding Analysis: 
    Automated binding is complete, but there are a few APIs which have been flagged with [Verify] attributes. While the entire binding should be audited for best API design practices, look more closely at APIs 
    with the following Verify attribute hints: 

    ConstantsInterfaceAssociation (205 instances): 
    There's no foolproof way to determine with which Objective-C interface an extern variable declaration may be associated. Instances of these are bound as [Field] properties in a partial interface into a 
    nearby concrete interface to produce a more intuitive API, possibly eliminating the 'Constants' interface altogether. 

    MethodToProperty (201 instances): 
    An Objective-C method was bound as a C# property due to convention such as taking no parameters and returning a value (non-void return). Often methods like these should be bound as properties to surface a 
    nicer API, but sometimes false-positives can occur and the binding should actually be a method. 

    StronglyTypedNSArray (45 instances): 
    A native NSArray* was bound as NSObject[]. It might be possible to more strongly type the array in the binding based on expectations set through API documentation (e.g. comments in the header file) or by 
    examining the array contents through testing. For example, an NSArray* containing only NSNumber* instances can be bound as NSNumber[] instead of NSObject[]. 

    PlatformInvoke (3177 instances): 
    In general P/Invoke bindings are not as correct or complete as Objective-C bindings (at least currently). You may need to fix up the library name (it defaults to '__Internal') and return/parameter types 
    manually to conform to C calling conventionsfor the target platform. You may find you don't even want to expose the C API in your binding, but if you do, you'll probably also want to relocate the 
    definition to a more appropriate class and expose a stronger type-safe wrapper. For P/Invoke guidance, see http://www.mono-project.com/docs/advanced/pinvoke/. 

    InferredFromMemberPrefix (30 instances): 
    The name of this originally anonymous declaration was taken from a common prefix of its members. 

    Once you have verified a Verify attribute, you should remove it from the binding source code. The presence of Verify attributes intentionally cause build failures. 

    For more information about the Verify attribute hints above, consult the Objective Sharpie documentation by running 'sharpie docs' or visiting the following URL: 

    http://xmn.io/sharpie-docs 
2 warnings generated. 

Done. 

シャーピーbindコマンドを実行した後のコマンドを実行は、ApiDefinitions.csとStructsAndEnums.csが生成されますが、両方のファイルには、20,000以上のラインよりも、よりのコードを持っています3000エラーが発生しました

14のヘッダーファイルが使用され、100行も満たさないと、膨大なファイルが作成されるのはなぜですか?

私はXamarinを始めたばかりで、ここでかなり苦労しています。 ヒートマップを絶対に使用する必要がある理由があります。

+0

同じ問題、ここでいくつかの情報を見つけてくださいhttps://forums.xamarin.com/discussion/54222/shapie-saying-no-header-files-to-parse -xcodeproj-targetと-xcodeproj-configを渡した後 - 。運(同じエラーが –

+0

がコメントありがとうございました 私は、次のコマンドを試してみましたが、それは 'シャーピーバインド-xcodeproj-対象GoogleMapiOSHeatmapUtility -xcodeproj-config設定デバッグGoogleMapiOSHeatmapUtility.xcodeproj' GoogleMapiOSHeatmapUtility.xcodeproj うまく動作しませんでした発生しませんターゲット 'GoogleMapiOSHeatmapUtility'には解析するヘッダがありません – SSM

答えて

0

がなぜ巨大なファイルが14個のヘッダーファイルを使用するときに作成され、どれも100行を満たさないであろう、私を助けてください?

この問題は、最新のシャーピー(私は前にバインディングライブラリを作成していて、うまくいきました)に付属しているようです。

(ファイルの最後にある)巨大なファイルの一部しか役に立たない場合は、無駄なコードを削除することができます。

さらに、このプロジェクトが登録されている場合はCocosPodsで作成することをお勧めします。

+0

ありがとうございます Cocoapodsのバインディングは複数の静的ライブラリが含まれているため実行できませんでした不要なコードを削除し、再加工によってエラーが解消されるまで修正しました。その結果、私はバインディングライブラリを作成することができました。 私は感謝しています。どうもありがとうございます。 – SSM

関連する問題