[Mono-dev] Using .so file in Android Library Project and then using it in an Android App

Burhan Eyuboglu burhaneyuboglu at gmail.com
Tue Dec 2 14:09:19 UTC 2014


When I add libcyusb.so, I got this error: "libcyusb.so is not a valid ELF
executable"

I checked the library, libcyusb.so is not ELF, it is a linker, however
libcyusb.so.1 is ELF 64 bit sharerd object. How can add libcyusb.so.1?
Because android accepts lib prefix and so suffix.

2014-11-28 12:32 GMT+02:00 Burhan Eyuboglu <burhaneyuboglu at gmail.com>:

> Now, I can add .so file into the csproj. However, a new error occured:
> libcyusb.so is not a valid ELF.
>
> I think while building libcyusb in linux, I should add Android as target
> OS. Is that true? If it is, how can I add it to the makefile? Do you know
> the commands for it?
>
> 2014-11-26 19:36 GMT+02:00 Rafael Teixeira <monoman at gmail.com>:
>
>> I think you'll need to add it to the application. I'm not sure Android
>> will let you install the native lib in any valid place afterwards, like
>> extracting it from an embedded resource and writing to a file, but I might
>> be wrong... Wait for the experts to chime in...
>>
>>
>> On Wed Nov 26 2014 at 3:05:25 PM Burhan Eyuboglu <
>> burhaneyuboglu at gmail.com> wrote:
>>
>>> Is <AndroidNativeLibrary> valid for adding .so file to
>>> AndroidLibraryProject? I m not trying to add it to AndroidApplication
>>>
>>> 26 Kasım 2014 Çarşamba tarihinde, Rafael Teixeira <monoman at gmail.com>
>>> yazdı:
>>>
>>>> It should be
>>>> <AndroidNativeLibrary Include="Resources\lib\armeabi-v7a\libcyusb.so" />,
>>>> that is what Jonathan meant by choosing the action (you can change it on
>>>> the properties window when selecting the item in the solution explorer),
>>>> also it is not a good thing to put it inside the Resources folder, it is
>>>> not an embeddable resource, it will be packed in the apk not in the managed
>>>> dll.
>>>>
>>>> On Wed Nov 26 2014 at 2:08:39 PM Burhan Eyuboglu <
>>>> burhaneyuboglu at gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>>
>>>>> I have created a lib file in the resources folder, and armeabi-v7a
>>>>> folder in the lib file and put the libcyusb.so there. When I look at the
>>>>> csproj file, it has changed like that:
>>>>>
>>>>> <ItemGroup>
>>>>>     <AndroidEmbeddedJavaLibrary
>>>>> Include="Resources\lib\armeabi-v7a\libcyusb.so" />
>>>>>
>>>>>
>>>>> However, I'm still getting " can not load dll" error:
>>>>>
>>>>> [monodroid-debug] Trying to initialize the debugger with options:
>>>>> --debugger-agent=transport=dt_socket,loglevel=0,address=127.0.0.1:8852
>>>>> ,server=y,embedding=1
>>>>> [libc] WARNING: generic atexit() called from legacy shared library
>>>>> [Mono] Image addref mscorlib[0x5ac6bfe0] -> mscorlib.dll[0x5ace0fa0]: 1
>>>>> [Mono] AOT module 'mscorlib.dll.so' not found: Cannot load library:
>>>>> load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/mscorlib.dll.so" not
>>>>> found
>>>>> [Mono] Assembly mscorlib[0x5ac6bfe0] added to domain RootDomain,
>>>>> ref_count=1
>>>>> [Mono] Assembly Loader probing location:
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/LibraryDenemesi.dll'.
>>>>> [Mono] Image addref LibraryDenemesi[0x5c771638] ->
>>>>> /storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/LibraryDenemesi.dll[0x5bb190f0]:
>>>>> 2
>>>>> [Mono] Assembly LibraryDenemesi[0x5c771638] added to domain
>>>>> RootDomain, ref_count=1
>>>>> [Mono] AOT module
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/
>>>>> LibraryDenemesi.dll.so' not found: Cannot load library:
>>>>> load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib//storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/
>>>>> LibraryDenemesi.dll.so" not found
>>>>> [Mono] Assembly Loader loaded assembly from location:
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/LibraryDenemesi.dll'.
>>>>> [Mono] Config attempting to parse:
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/LibraryDenemesi.dll.config'.
>>>>> [Mono] Config attempting to parse:
>>>>> '/Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/builds/install/mono-armv7/etc/mono/assemblies/LibraryDenemesi/LibraryDenemesi.config'.
>>>>> [Mono] Image addref CypressLibrary[0x5ac25fb0] ->
>>>>> CypressLibrary.dll[0x5bb1a420]: 1
>>>>> [Mono] Assembly CypressLibrary[0x5ac25fb0] added to domain RootDomain,
>>>>> ref_count=1
>>>>> [Mono] AOT module 'CypressLibrary.dll.so' not found: Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/CypressLibrary.dll.so"
>>>>> not found
>>>>> [monodroid-gc] GREF GC Threshold: 46800
>>>>> [Mono] Image addref Mono.Android[0x5aa93670] ->
>>>>> Mono.Android.dll[0x5ace36c8]: 1
>>>>> [Mono] Assembly Mono.Android[0x5aa93670] added to domain RootDomain,
>>>>> ref_count=1
>>>>> [Mono] AOT module 'Mono.Android.dll.so' not found: Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/Mono.Android.dll.so"
>>>>> not found
>>>>> [Mono] Assembly Ref addref Mono.Android[0x5aa93670] ->
>>>>> mscorlib[0x5ac6bfe0]: 2
>>>>> [Mono] Image addref System.Core[0x5aceeb28] ->
>>>>> System.Core.dll[0x59bb3240]: 1
>>>>> [Mono] Assembly System.Core[0x5aceeb28] added to domain RootDomain,
>>>>> ref_count=1
>>>>> [Mono] AOT module 'System.Core.dll.so' not found: Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/System.Core.dll.so"
>>>>> not found
>>>>> [Mono] Assembly Ref addref Mono.Android[0x5aa93670] ->
>>>>> System.Core[0x5aceeb28]: 2
>>>>> [Mono] Assembly Ref addref System.Core[0x5aceeb28] ->
>>>>> mscorlib[0x5ac6bfe0]: 3
>>>>> [Mono] Assembly Ref addref LibraryDenemesi[0x5c771638] ->
>>>>> Mono.Android[0x5aa93670]: 2
>>>>> [Mono] DllImport attempting to load: '__Internal'.
>>>>> [Mono] DllImport loaded library '(null)'.
>>>>> [Mono] DllImport searching in: '__Internal' ('(null)').
>>>>> [Mono] Searching for '_monodroid_gc_wait_for_bridge_processing'.
>>>>> [Mono] Probing '_monodroid_gc_wait_for_bridge_processing'.
>>>>> [Mono] Found as '_monodroid_gc_wait_for_bridge_processing'.
>>>>> [Mono] DllImport searching in: '__Internal' ('(null)').
>>>>> [Mono] Searching for '_monodroid_get_identity_hash_code'.
>>>>> [Mono] Probing '_monodroid_get_identity_hash_code'.
>>>>> [Mono] Found as '_monodroid_get_identity_hash_code'.
>>>>> Loaded assembly: MonoDroidConstructors [External]
>>>>> [Mono] Assembly Ref addref LibraryDenemesi[0x5c771638] ->
>>>>> mscorlib[0x5ac6bfe0]: 4
>>>>> [Mono] DllImport searching in: '__Internal' ('(null)').
>>>>> [Mono] Searching for '_monodroid_gref_log_new'.
>>>>> [Mono] Probing '_monodroid_gref_log_new'.
>>>>> [Mono] Found as '_monodroid_gref_log_new'.
>>>>> [Mono] Assembly Loader probing location:
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/CypressDenemeLibrary.dll'.
>>>>> [Mono] Image addref CypressDenemeLibrary[0x5f6dd4f8] ->
>>>>> /storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/CypressDenemeLibrary.dll[0x5f6dd150]:
>>>>> 2
>>>>> [Mono] Assembly CypressDenemeLibrary[0x5f6dd4f8] added to domain
>>>>> RootDomain, ref_count=1
>>>>> [Mono] AOT module
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/
>>>>> CypressDenemeLibrary.dll.so' not found: Cannot load library:
>>>>> load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib//storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/
>>>>> CypressDenemeLibrary.dll.so" not found
>>>>> [Mono] Assembly Loader loaded assembly from location:
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/CypressDenemeLibrary.dll'.
>>>>> [Mono] Config attempting to parse:
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/CypressDenemeLibrary.dll.config'.
>>>>> [Mono] Config attempting to parse:
>>>>> '/Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/builds/install/mono-armv7/etc/mono/assemblies/CypressDenemeLibrary/CypressDenemeLibrary.config'.
>>>>> [Mono] Assembly Ref addref LibraryDenemesi[0x5c771638] ->
>>>>> CypressDenemeLibrary[0x5f6dd4f8]: 2
>>>>> [Mono] Assembly Ref addref CypressDenemeLibrary[0x5f6dd4f8] ->
>>>>> mscorlib[0x5ac6bfe0]: 5
>>>>> [Mono] DllImport attempting to load: 'libcyusb.so'.
>>>>> [Mono] DllImport error loading library
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so':
>>>>> 'Cannot load library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib//storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so"
>>>>> not found'.
>>>>> [Mono] DllImport error loading library
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so':
>>>>> 'Cannot load library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib//storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so"
>>>>> not found'.
>>>>> [Mono] DllImport error loading library 'libcyusb.so': 'Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> [Mono] DllImport error loading library 'libcyusb.so': 'Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> [Mono] DllImport error loading library 'libcyusb.so': 'Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> [Mono] DllImport unable to load library 'Cannot load library:
>>>>> load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> Loaded assembly:
>>>>> /storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/CypressDenemeLibrary.dll
>>>>> [External]
>>>>> [MoreInfoHPW_ViewGroup] Parent view is not a TextView
>>>>> [Mono] DllImport searching in: '__Internal' ('(null)').
>>>>> [Mono] Searching for '_monodroid_gref_log_delete'.
>>>>> [Mono] Probing '_monodroid_gref_log_delete'.
>>>>> [Mono] Found as '_monodroid_gref_log_delete'.
>>>>> [Mono] DllImport attempting to load: 'libcyusb.so'.
>>>>> [Mono] DllImport error loading library
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so':
>>>>> 'Cannot load library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib//storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so"
>>>>> not found'.
>>>>> [Mono] DllImport error loading library
>>>>> '/storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so':
>>>>> 'Cannot load library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib//storage/emulated/0/Android/data/LibraryDenemesi.LibraryDenemesi/files/.__override__/libcyusb.so"
>>>>> not found'.
>>>>> [Mono] DllImport error loading library 'libcyusb.so': 'Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> [Mono] DllImport error loading library 'libcyusb.so': 'Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> [Mono] DllImport error loading library 'libcyusb.so': 'Cannot load
>>>>> library: load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> [Mono] DllImport unable to load library 'Cannot load library:
>>>>> load_library(linker.cpp:746): library
>>>>> "/data/data/LibraryDenemesi.LibraryDenemesi/lib/libcyusb.so" not found'.
>>>>> [Mono] Assembly Ref addref CypressDenemeLibrary[0x5f6dd4f8] ->
>>>>> Mono.Android[0x5aa93670]: 3
>>>>> [Mono] DllImport attempting to load: '/system/lib/liblog.so'.
>>>>> [Mono] DllImport loaded library '/system/lib/liblog.so'.
>>>>> [Mono] DllImport searching in: '/system/lib/liblog.so'
>>>>> ('/system/lib/liblog.so').
>>>>> [Mono] Searching for '__android_log_print'.
>>>>> [Mono] Probing '__android_log_print'.
>>>>> [Mono] Found as '__android_log_print'.
>>>>> System.DllNotFoundException: libcyusb.so
>>>>>   at (wrapper managed-to-native) DataDeneme:libusb_init ()
>>>>>   at LibraryDenemesi.MainActivity.OnCreate (Android.OS.Bundle bundle)
>>>>> [0x0004e] in
>>>>> c:\Users\Sercan\Documents\Projects\LibraryDenemesi\LibraryDenemesi\MainActivity.cs:34
>>>>> [libEGL] loaded /system/lib/egl/libEGL_mali.so
>>>>> [libEGL] loaded /system/lib/egl/libGLESv1_CM_mali.so
>>>>> [libEGL] loaded /system/lib/egl/libGLESv2_mali.so
>>>>> [] Device driver API match
>>>>> [] Device driver API version: 17
>>>>> [] User space API version: 17
>>>>> [] mali: REVISION=Linux-r3p1-01rel1 BUILD_DATE=Fri May 10 18:36:49 KST
>>>>> 2013
>>>>> [OpenGLRenderer] Enabling debug mode 0
>>>>>
>>>>>
>>>>>
>>>>> 2014-11-26 12:28 GMT+02:00 Burhan Eyuboglu <burhaneyuboglu at gmail.com>:
>>>>>
>>>>>>
>>>>>> ---------- Forwarded message ----------
>>>>>> From: Jonathan Pryor <jonpryor at vt.edu>
>>>>>> Date: 2014-11-25 17:47 GMT+02:00
>>>>>> Subject: Re: [Mono-dev] Using .so file in Android Library Project and
>>>>>> then using it in an Android App
>>>>>> To: Burhan Eyuboglu <burhaneyuboglu at gmail.com>
>>>>>>
>>>>>>
>>>>>> On Nov 25, 2014, at 7:17 AM, Burhan Eyuboglu <
>>>>>> burhaneyuboglu at gmail.com> wrote:
>>>>>> > I was trying to import with wrong name : "cylibusb". My library's
>>>>>> name is libcyusb.so.
>>>>>> > You said that libcyusb.so should be in the .apk files in the
>>>>>> previous mails, however I open the apk files (armeabi-v7a) and copy the
>>>>>> libcyusb.so into them and run the application,then it gives same error and
>>>>>> when I look at apk files after runining, there is no libcyusb.so in them.
>>>>>> >
>>>>>> > How can I put libcyusb.so to the lib/armeabi-v7a?
>>>>>>
>>>>>> You need to add libcyusb.so to your project with a Build action of
>>>>>> AndroidNativeLibrary.
>>>>>>
>>>>>> When adding libcyusb.so to your project, it must be located in a
>>>>>> directory that matches the ABI, e.g. you should have a
>>>>>> native-libs\armeabi-v7a\libcyusb.so file, and add that file to your project
>>>>>> with a Build action of AndroidNativeLibrary.
>>>>>>
>>>>>>  - Jon
>>>>>>
>>>>>>
>>>>>> I need .so file with AndroidLibraryProject not with
>>>>>> AndroidApplicationProject, and in the AndroidLibraryProject, there is no
>>>>>> lib or lib/armeabi-v7a folder. Where can I put libcyusb.so?
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Mono-devel-list mailing list
>>>>> Mono-devel-list at lists.ximian.com
>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>
>>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20141202/cc642cf3/attachment-0001.html>


More information about the Mono-devel-list mailing list