golang-design/clipboard

ld: error: duplicate symbol: when using with Fyne Android

ntsd opened this issue · 2 comments

ntsd commented

I tried to remove the clipboard it's working fine.

logs

$ fyne-cross android
[i] Target: android/multiple
[i] Cleaning target directories...
[✓] "dist" dir cleaned: C:\Users\ntsd\Desktop\git\ntsd\cross-clipboard\fyne-cross\dist\android
[✓] "temp" dir cleaned: C:\Users\ntsd\Desktop\git\ntsd\cross-clipboard\fyne-cross\tmp\android
[✓] "bin" dir cleaned: C:\Users\ntsd\Desktop\git\ntsd\cross-clipboard\fyne-cross\bin\android
[i] Checking for go.mod: C:\Users\ntsd\Desktop\git\ntsd\cross-clipboard\go.mod
[✓] go.mod found
[i] Packaging app...
go build -buildmode=c-shared -o /tmp/gomobile-work-1926614866/lib/armeabi-v7a/libcross-clipboard.so github.com/ntsd/cross-clipboard failed: exit status 2
# fyne.io/fyne/v2/internal/driver/mobile
android.c:50:9: warning: returning 'const char *' from a function with result type 'char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
android.c:67:48: warning: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned int') to parameter of type 'jobject' (aka 'void *') [-Wint-conversion]     
android.c:71:55: warning: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned int') to parameter of type 'jobject' (aka 'void *') [-Wint-conversion]     
android.c:122:48: warning: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned int') to parameter of type 'jobject' (aka 'void *') [-Wint-conversion]    
android.c:125:48: warning: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned int') to parameter of type 'jobject' (aka 'void *') [-Wint-conversion]    
android.c:181:50: warning: passing 'char *' to parameter of type 'jbyte *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]   
android.c:191:48: warning: passing 'char *' to parameter of type 'const jbyte *' (aka 'const signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
# fyne.io/fyne/v2/app
app_mobile_and.c:46:48: warning: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned int') to parameter of type 'jobject' (aka 'void *') [-Wint-conversion]
app_mobile_and.c:49:48: warning: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned int') to parameter of type 'jobject' (aka 'void *') [-Wint-conversion]
app_mobile_and.c:85:30: warning: incompatible integer to pointer conversion passing 'uintptr_t' (aka 'unsigned int') to parameter of type 'jobject' (aka 'void *') [-Wint-conversion]
app_mobile_and.c:98:33: warning: incompatible pointer to integer conversion passing 'JNIEnv *' (aka 'const struct JNINativeInterface **') to parameter of type 'uintptr_t' (aka 'unsigned int') [-Wint-conversion]
app_mobile_and.c:42:36: note: passing argument to parameter 'jni_env' here
# github.com/ntsd/cross-clipboard
/usr/local/go/pkg/tool/linux_amd64/link: running /usr/local/android_sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi16-clang failed: exit status 1
ld: error: duplicate symbol: callMain
>>> defined at _cgo_export.c:44
>>>            /tmp/go-link-655786190/000020.o:(callMain)
>>> defined at _cgo_export.c:44
>>>            /tmp/go-link-655786190/000039.o:(.text+0x50)

ld: error: duplicate symbol: onConfigurationChanged
>>> defined at _cgo_export.c:334
>>>            /tmp/go-link-655786190/000020.o:(onConfigurationChanged)
>>> defined at _cgo_export.c:317
>>>            /tmp/go-link-655786190/000039.o:(.text+0x4D4)

ld: error: duplicate symbol: onContentRectChanged
>>> defined at _cgo_export.c:298
>>>            /tmp/go-link-655786190/000020.o:(onContentRectChanged)
>>> defined at _cgo_export.c:298
>>>            /tmp/go-link-655786190/000039.o:(.text+0x484)

ld: error: duplicate symbol: onCreate
>>> defined at _cgo_export.c:150
>>>            /tmp/go-link-655786190/000020.o:(onCreate)
>>> defined at _cgo_export.c:150
>>>            /tmp/go-link-655786190/000039.o:(.text+0x214)

ld: error: duplicate symbol: onDestroy
>>> defined at _cgo_export.c:167
>>>            /tmp/go-link-655786190/000020.o:(onDestroy)
>>> defined at _cgo_export.c:167
>>>            /tmp/go-link-655786190/000039.o:(.text+0x25C)

ld: error: duplicate symbol: onInputQueueCreated
>>> defined at _cgo_export.c:260
>>>            /tmp/go-link-655786190/000020.o:(onInputQueueCreated)
>>> defined at _cgo_export.c:260
>>>            /tmp/go-link-655786190/000039.o:(.text+0x3E4)

ld: error: duplicate symbol: onInputQueueDestroyed
>>> defined at _cgo_export.c:279
>>>            /tmp/go-link-655786190/000020.o:(onInputQueueDestroyed)
>>> defined at _cgo_export.c:279
>>>            /tmp/go-link-655786190/000039.o:(.text+0x434)

ld: error: duplicate symbol: onLowMemory
>>> defined at _cgo_export.c:351
>>>            /tmp/go-link-655786190/000020.o:(onLowMemory)
>>> defined at _cgo_export.c:334
>>>            /tmp/go-link-655786190/000039.o:(.text+0x51C)

ld: error: duplicate symbol: onNativeWindowCreated
>>> defined at _cgo_export.c:203
>>>            /tmp/go-link-655786190/000020.o:(onNativeWindowCreated)
>>> defined at _cgo_export.c:203
>>>            /tmp/go-link-655786190/000039.o:(.text+0x2F4)

ld: error: duplicate symbol: onNativeWindowDestroyed
>>> defined at _cgo_export.c:241
>>>            /tmp/go-link-655786190/000020.o:(onNativeWindowDestroyed)
>>> defined at _cgo_export.c:241
>>>            /tmp/go-link-655786190/000039.o:(.text+0x394)

ld: error: duplicate symbol: onNativeWindowRedrawNeeded
>>> defined at _cgo_export.c:222
>>>            /tmp/go-link-655786190/000020.o:(onNativeWindowRedrawNeeded)
>>> defined at _cgo_export.c:222
>>>            /tmp/go-link-655786190/000039.o:(.text+0x344)

ld: error: duplicate symbol: onPause
>>> defined at _cgo_export.c:116
>>>            /tmp/go-link-655786190/000020.o:(onPause)
>>> defined at _cgo_export.c:116
>>>            /tmp/go-link-655786190/000039.o:(.text+0x184)

ld: error: duplicate symbol: onResume
>>> defined at _cgo_export.c:78
>>>            /tmp/go-link-655786190/000020.o:(onResume)
>>> defined at _cgo_export.c:78
>>>            /tmp/go-link-655786190/000039.o:(.text+0xE0)

ld: error: duplicate symbol: onSaveInstanceState
>>> defined at _cgo_export.c:95
>>>            /tmp/go-link-655786190/000020.o:(onSaveInstanceState)
>>> defined at _cgo_export.c:95
>>>            /tmp/go-link-655786190/000039.o:(.text+0x128)

ld: error: duplicate symbol: onStart
>>> defined at _cgo_export.c:61
>>>            /tmp/go-link-655786190/000020.o:(onStart)
>>> defined at _cgo_export.c:61
>>>            /tmp/go-link-655786190/000039.o:(.text+0x98)

ld: error: duplicate symbol: onStop
>>> defined at _cgo_export.c:133
>>>            /tmp/go-link-655786190/000020.o:(onStop)
>>> defined at _cgo_export.c:133
>>>            /tmp/go-link-655786190/000039.o:(.text+0x1CC)

ld: error: duplicate symbol: onWindowFocusChanged
>>> defined at _cgo_export.c:184
>>>            /tmp/go-link-655786190/000020.o:(onWindowFocusChanged)
>>> defined at _cgo_export.c:184
>>>            /tmp/go-link-655786190/000039.o:(.text+0x2A4)

ld: error: duplicate symbol: setCurrentContext
>>> defined at _cgo_export.c:25
>>>            /tmp/go-link-655786190/000020.o:(setCurrentContext)
>>> defined at _cgo_export.c:25
>>>            /tmp/go-link-655786190/000039.o:(.text+0x0)

ld: error: duplicate symbol: ANativeActivity_onCreate
>>> defined at android.c:76
>>>            /tmp/go-link-655786190/000023.o:(ANativeActivity_onCreate)
>>> defined at android.c:72
>>>            /tmp/go-link-655786190/000041.o:(.text+0x40)

ld: error: duplicate symbol: JNI_OnLoad
>>> defined at android.c:57
>>>            /tmp/go-link-655786190/000023.o:(JNI_OnLoad)
>>> defined at android.c:53
>>>            /tmp/go-link-655786190/000041.o:(.text+0x0)

ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
clang: error: linker command failed with exit code 1 (use -v to see invocation)


[✗] could not package the Fyne app: could not package the Fyne app: exit status 1

Go version: 1.18
Clipboard version: 0.6.2
Fyne version: 2.1.4
NDK version: 21.4.7075529, 23.1.7779620

I don't think the package can be compatible with Fyne, or at least I couldn't find a way to be compatible with any other GUI frameworks (such as Gio). The reason is to be able to work with Android, it requires code to run on JVM, and this is a separate environment in Fyne compared to this package, which we use gomobile.

As far as I understood, this package implements the same clipboard functionality (copying text) as Fyne. If you only need Android/iOS support, Fyne's API set is probably enough for your use case: https://developer.fyne.io/api/v2.1/clipboard.html

ntsd commented

Thank you, I just tested with gomobile it works, I think I will use another OpenGL framework.