2017-08-02 25 views
1

該文檔說它應該受支持。 看來,它不是在gen.go文件中實現:Gomobile綁定:不支持的基本類型:uint64

case types.Uint8: // types.Byte 
     return "uint8_t" 
    // TODO(crawshaw): case types.Uint, types.Uint16, types.Uint32, types.Uint64: 

我讀,我需要打補丁去移動支持 但是修改後的文件來支持答:64,(去/ src目錄/ golang.org /x/mobile/bind/gen.go) 並重新啓動手機:gomobile init

同樣的錯誤仍然出現,我在這裏丟失了一些明顯的東西?

+0

你從哪裏看到你需要修補Go Mobile?你遵循了哪個程序?請包括_full_信息。 – Flimzy

回答

0

我認爲這裏的問題是Java沒有unsigned。因此,Java的接口不能將uint64(和uint32 IIRC)文件類型作爲全局變量,函數返回值或函數參數。

您可以在Go mobile中使用uint64。

兩種解決方案基於以上:

  1. 限制非法類型到Java的暴露降到最低
  2. 轉換UINT64在圍棋的Int64和長期轉換爲BigInteger的Java編寫的。
0

我解決了這個問題,通過修補Go mobile,靈感來自於這個非常棒的StackOverflow!我非常鬆散地使用「補丁」,我不鼓勵任何人使用此代碼,因爲它非常針對特定目的。

我只是短路的default情況下返回uint64 - 你可以看到正是我在這裏做:https://github.com/Sidetalker/mobile/commit/01eb11be69a781e71c7f00df6fc17b35f828f7a2

我需要做其他的發現了一把/替換更改,您可以在該分支見得到它正確地構建,而且我還必須修復我非常確定的是byte類型的Go移動bug。所有這些都可以在分支上看到。

此外,關鍵的是,我不得不完全go get這個項目 - 使我的變化和運行gomobile init是不夠的。

請勿使用此代碼。記下這個答案。

+0

嘿,我最終修補了這個,我改變了gen.go文件,我不得不重新編譯「go install ...」 – nicwhitts

相關問題