How to include a native android library on a vendor NDK app - Android Q&A, Help & Troubleshooting

Hi,
It's my first question here, so thank you for this forum!
I want to use Android Native Window functionality on my cpp NDK application.
So, I've added the include to the top of my cpp file:
#include <android/native_window.h>
And added the android library to my Android.mk file:
LOCAL_LDLIBS += -landroid
But get a linker error:
Android.mk: error: "my_app (native:vendor) can not link against libandroid (native::latform)"
Click to expand...
Click to collapse
Is someone known how can I use the NativeWindow API on my vendor application?
Thanks a lot!
Netanel

Related

[Q] libpcap static linking errors

Hello,
I have downloaded the libpcap in external folder from android source code using the Git and
repo. I used the toolcains of ndk (android-ndk-r5b) to compile the library following these
steps:
./configure --prefix=path-to-android-src/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
make clean
make
make install
and then a file libpcap.a is produced.
I have make a simple sniffer using libpcap (sniffer.c). When I try to compile it, these errors occur:
agcc sniffer.c libpcap.a
sniffer.c:9:18: error: pcap.h: No such file or directory
sniffer.c:19: warning: 'struct pcap_pkthdr' declared inside parameter list
sniffer.c:19: warning: its scope is only this definition or declaration, which is probably not what you want
sniffer.c: In function 'processPacket':
sniffer.c:23: warning: incompatible implicit declaration of built-in function 'printf'
sniffer.c:24: error: dereferencing pointer to incomplete type
sniffer.c:26: error: dereferencing pointer to incomplete type
sniffer.c:33: error: dereferencing pointer to incomplete type
sniffer.c: In function 'main':
sniffer.c:45: error: 'pcap_t' undeclared (first use in this function)
sniffer.c:45: error: (Each undeclared identifier is reported only once
sniffer.c:45: error: for each function it appears in.)
sniffer.c:45: error: 'descr' undeclared (first use in this function)
sniffer.c:46: error: 'PCAP_ERRBUF_SIZE' undeclared (first use in this function)
sniffer.c:62: warning: incompatible implicit declaration of built-in function 'printf'
sniffer.c:66: warning: incompatible implicit declaration of built-in function 'fprintf'
sniffer.c:66: error: 'stderr' undeclared (first use in this function)
sniffer.c:72: warning: incompatible implicit declaration of built-in function 'fprintf'
when I try to produce the object code in advance:
agcc -c sniffer.o sniffer.c
the same errors occured.
Can someone explain me how to solve this problem?
here is the alias of agcc I use in bashrc file:
./configure --prefix=/home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
Also, I have attached a file with the outputs of the commands above: configure, make and make install.
Thank you in advance!
I used the options -I and -L to specify the include and library files, and these errors are gone now..
Here is my new error log:
agcc --static -I /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/include -L /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/lib -o sniffer sniffer.c libpcap.a
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
libpcap.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
any ideas?
I'm not 100% sure, but if you want to build native library for android you shouldn't use ./configure script. You should create Android.mk file and build library using it. Android.mk file is a native build environment for Android.
Refer to android-ndk\docs\ANDROID-MK.html for more information.
Yeah!
Thank you Zuljin!!!
I put the libpcap direcotry into the android-ndk-r5b/samples, I modified a bit the Android.mdk
and the structure of the direcotry, so as to look like the other ones inside the samples dir and
I used the ndk-build command inside the android-ndk-r5b direcory:
ndk-build -C samples/android-ndk-r5b
All worked fine! I was able to produce a libpicap.so file, and put it in the phone using the
commands:
in android:
# su
# mount -o,rw remount /dev/block/mtdblock4 /system/lib
in my Desktop:
$ adb push libpcap.so /system/lib/
I made a simple sniffer, I compiled and linked with the libpcap.so and works perfectly in
my HTC Hero!
Hi,
I have also trying to build this libpcap on Android.
I have downloaded the source from platform_external_libpcap and put all these files under jni directory for a android-ndk project (default) and tried building using ndk-build script.
But nothing happens but the control returns plainly without compiling the .so or .a file.
Can you tell me how you organized the folders in ndk project.?
regards,
Vijayan
Hello Vijayan,
You have to make a directory i.e. libpcap and then inside this directory,
you've got to create another one named as jni and put there all the source
files, as you have done. Then, inside this directory (jni) create a file named as
Android.mk so that it contains the follow lines:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=\
/bpf_dump.c\
/bpf/net/bpf_filter.c\
/bpf_image.c\
/etherent.c\
/fad-gifc.c\
/gencode.c\
/grammar.c\
/inet.c\
/nametoaddr.c\
/optimize.c\
/pcap.c\
/pcap-linux.c\
/savefile.c\
/scanner.c\
/version.c
LOCAL_CFLAGS:=-O2 -g
LOCAL_CFLAGS+=-DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -Dlinux -D__GLIBC__ -D_GNU_SOURCE
LOCAL_MODULE:= pcap
LOCAL_MODULE_FILENAME:= libpcap
LOCAL_LDLIBS := \
-ldl
include $(BUILD_SHARED_LIBRARY)
Then, you only have to type this command:
ndk-build -C <path-to-jni-direcotry>
That's all! Now, inside the libpcap directory, and in the path:
libpcap/libs/armeabi/ should have been created the file you want:
libpcap.so
Let me know if you have any problems,
Thanasis
Hi,
Thanks. Now I'm able to compile the libpcap.so.
using this .so I have compiled the jpcap-0.7 (C source fiiles) to generate libjpcap.so.
Then I have created my Sniffer Application on Android. I have added the jpcap.jar, jpcap.so and libpcap.so in the lib folder of my Application.
But when I call this line
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
am getting the following runtime error:
FATAL EXCEPTION: main
java.lang.UnsatisfiedLinkError: getDeviceList
at jpcap.JpcapCaptor.getDeviceList(Native Method)
at com.example.snifferapp.SnifferApp.onCreate(SnifferApp.java:26)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Click to expand...
Click to collapse
Can you tellme What is going wrong here ?
Thanks.
Vijay
Yes, I had the same problem with you when I tried to make a sniffing application
using another one known java wrapper of libpcap: the jNetPcap, and particularly
I couldn't get the devices through this call: Pcap.findAllDevs(alldevs, errbuf);
That's because, even if you have root privileges on the console of the phone, as
you have a rooted phone, you cannot raun an application as root. That's not possible.
You can do that, only if your application is signed with the key of the platform, that is
of the Android OS that runs inside your phone.. So, the only way is to built by yourself
the Android OS and put it into the mobile. And then you have to sign your application
with the key that you have used to sign the OS.
For more information you can look here:
http://stackoverflow.com/questions/5966603/jnetpcap-on-android-problem-with-findalldevs-method
Hi,
Thanks for your reply.
But its very confusing.
Can you tellme, Whether Its possible to run a client application into Android which can monitor the network traffic in the device by anymeans?
If then what are all the possible ways. (like jpcap, etc....)
My idea is to develop a simple client application. I cannot think of building the whole Android OS and loading it into each device.
Hope to get a reply.
Thanks,
Vijay
I haven't done it before, because I only experience with native
programs that do network monitoring..
I think there are two simple solutions here. The first one is what exactly
Shark does: A tcpdump is running in the background that produces
traffic traces (pcap files) and you can develop an application that in periodic
time intervals reads these files and produce some outputs to the user.
The other one solution I can imagine is to develop again a native sniffer in
C with libpcap and then for each packet you receive or better for a batch of
packets you receive, you can send it through sockets to you application for
further processing..
Hope that helps..
FYI: There is a new application in Android called faceniff that does the work of
firesheep. That is you can hijack web sessions from facebook users. How is it
possible this application to monitor the web traffic of the phone? I think that
uses a native sniffer for this.. I am not sure, but it is not open source..
Hi, I did the steps as you described above:
Create a dir 'libpcap' with subdir 'jni'
Download the 'platform_external_libpcap' from 'github.com/android/platform_external_libpcap' (based on original libpcap version 0.9.8) and put the files at 'libpcap/jni'
Change the 'Android.mk' (see post number 6 of this thread)
run 'path/to/ndk-build -C path/to/libpcap/ndk' (android-ndk-r6)
When I do the last step of this list no 'libpcap/libs/armeabi/libpcap.so' will be produced but I get this output (I can reproduce this behavior on ubuntu 10.04 x86_64 and on debian i586):
> <user>@<host>:~/android/libpcap$ path/to/android-ndk-r6/ndk-build -C /home/<user>/android/libpcap/jni
> make: Entering directory `/home/<user>/android/libpcap/jni'
> SharedLibrary : libpcap.so
> /home/<user>/android/libpcap/obj/local/armeabi/objs/pcap//grammar.o: In function `pcap_parse':
> /home/<user>/android/libpcap/jni/y.tab.c:1711: undefined reference to `pcap_lex'
> collect2: ld returned 1 exit status
> make: *** [/home/<user>/android/libpcap/obj/local/armeabi/libpcap.so] Error 1
> make: Leaving directory `/home/<user>/android/libpcap/jni'
Does someone know what this error means and how to solve this problem?
daim0nas said:
Yeah!
Thank you Zuljin!!!
I put the libpcap direcotry into the android-ndk-r5b/samples, I modified a bit the Android.mdk
and the structure of the direcotry, so as to look like the other ones inside the samples dir and
I used the ndk-build command inside the android-ndk-r5b direcory:
ndk-build -C samples/android-ndk-r5b
All worked fine! I was able to produce a libpicap.so file, and put it in the phone using the
commands:
in android:
# su
# mount -o,rw remount /dev/block/mtdblock4 /system/lib
in my Desktop:
$ adb push libpcap.so /system/lib/
I made a simple sniffer, I compiled and linked with the libpcapp.so and works perfectly in
my HTC Hero!
Click to expand...
Click to collapse
Can you post your libpcap for us please.

Android SW Development - Porting MPD to Android

Hello, I am looking to port MPD, the music player daemon SERVER to the Android platform. I was wondering if anyone had any advice to this end?
So far I imagine it will involve getting the sources of MPD (can't do that at work so will check tonight), finding an Android compiler and building all the dependencies and MPD itself using that? I believe the Android NDK can compile C and C++ into .apk's which then run in an Android virtual machine, but I'm not sure what issues that might cause on MPD in terms of accessing the audio hardware etc..
Failing this, perhaps an alternative is to install Linux for Android and run MPD directly out of that? I want to stick my phone straight into a speaker and use it to play music from a Windows or Linux machine on my LAN - this is exactly what MPD enables so I would really like to see a server port for Android, as would many others from what I've seen in my searching for it.
PS I know this is a sw development question but apparently I don't have enough posts to ask this question in the appropriate place.
I think this deserves a bump. Also a moderator needs to move it to the correct forum since I had too few posts to post it to the correct one.
I have considerable interest in getting MPD to run on Android as well. Now that XBMC is running on Android and the Nexus Q exists, it seems I have found an acceptable HTPC frontend.
I myself have not yet used XBMC for my music though, perhaps it is sufficient and mpd is not needed?
In terms of getting MPD to run in Android, we can drop the need for FFmpeg by using mediaplayer: developer.android.com/guide/topics/media/mediaplayer.html
What about a raspberry pi and raspbmc, regarding your wish for an HTPC? Believe this is much cheaper than using an Android based device.
Thanks for referencing me to that API... perhaps the ideal way to proceed is to develop a basic Android app using that and a basic JSON-RPC interface to be able to control it from any other device.
is there any progress in this regard? i'd love to install an mpd server, when i get my ouya
antisystem said:
is there any progress in this regard? i'd love to install an mpd server, when i get my ouya
Click to expand...
Click to collapse
Checkout github.com/rumpeltux/mpd/tree/android. It compiles and runs fine for me.
rumpeltux said:
Checkout github.com/rumpeltux/mpd/tree/android. It compiles and runs fine for me.
Click to expand...
Click to collapse
It didn't work for me..
How did you achieve it?
combro2k said:
It didn't work for me..
How did you achieve it?
Click to expand...
Click to collapse
I cant compile it, too.
A good Readme with depencies would be great.
k3x said:
I cant compile it, too.
A good Readme with depencies would be great.
Click to expand...
Click to collapse
I used a current Ubuntu. You may need: git build-essentials realpath autoconf automake libc6-dev-i386, not sure if more.
You’ll also need the android SDK and NDK (I used version r8e).
Code:
# clone the repository
cd mpd
git checkout android
# Be sure to adjust the paths in the top of compile-android.sh according to your sdk & ndk-location
./autogen.sh # Will start compiling, but it's ok if it fails.
./compile-android.sh
still not working
Thank you, but its is still not working.
I have sdk and ndk (same version) and adjusted the paths.
./autogen.sh #no errors
./compile-android.sh
ive tried to install the libs (configure: WARNING: ...) and reduced the warnings, but these libs i cant find.
problem is now:
Code:
In file included from src/PcmConvert.hxx:27:0,
from src/PcmConvert.cxx:21:
src/pcm_resample.h:31:24: fatal error: samplerate.h: No such file or directory
compilation terminated.
make[1]: *** [src/libpcm_a-PcmConvert.o] Fehler 1
Additional information:
in attachment
sudo cp /usr/include/samplerate.h ~/Arbeitsfläche/mpd-android/src
Code:
In file included from /tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/bits/locale_facets.h:43:0,
from /tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/bits/basic_ios.h:39,
from /tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/ios:45,
from /tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/ostream:40,
from /tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/iostream:40,
from /usr/include/adplug/database.h:27,
from /usr/include/adplug/player.h:29,
from /usr/include/adplug/adplug.h:27,
from src/decoder/AdPlugDecoderPlugin.cxx:29:
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:46:35: error: '_U' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:47:32: error: '_L' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:48:32: error: '_U' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:48:37: error: '_L' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:49:32: error: '_N' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:50:33: error: '_X' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:50:38: error: '_N' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:51:32: error: '_S' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:52:32: error: '_P' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:52:37: error: '_U' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:52:42: error: '_L' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:52:47: error: '_N' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:52:52: error: '_B' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:53:32: error: '_P' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:53:37: error: '_U' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:53:42: error: '_L' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:53:47: error: '_N' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:54:32: error: '_C' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:55:32: error: '_P' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:56:32: error: '_U' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:56:37: error: '_L' was not declared in this scope
/tmp/ndk-felix/arm-linux-androideabi-4.6/bin/../lib/gcc/../../include/c++/4.6/arm-linux-androideabi/bits/ctype_base.h:56:42: error: '_N' was not declared in this scope
k3x said:
Thank you, but its is still not working.
I have sdk and ndk (same version) and adjusted the paths.
./autogen.sh #no errors
./compile-android.sh
ive tried to install the libs (configure: WARNING: ...) and reduced the warnings, but these libs i cant find.
problem is now:
Code:
In file included from src/PcmConvert.hxx:27:0,
from src/PcmConvert.cxx:21:
src/pcm_resample.h:31:24: fatal error: samplerate.h: No such file or directory
compilation terminated.
make[1]: *** [src/libpcm_a-PcmConvert.o] Fehler 1
Additional information:
in attachment
Click to expand...
Click to collapse
mpd seems to be using the host system to detect which libraries are available. You’ll either need to uninstall those (in your case libsamplerate0-dev I guess) or adjust the configure command for mpd in compile-android.sh with a flag to explicitly disable the library (like --disable-lsr I guess).
My configuration looks like this (if you have more things in there, you most likely need to disable these explicitly):
Code:
########### MPD CONFIGURATION ############
Archive support:
(-bzip2) (-ISO9660) (-ZIP)
Client support:
(+IPv6) (+TCP) (+UNIX Domain Sockets)
File format support:
(-AAC) (-AdPlug) (-C64 SID) (-FFMPEG) (-FLAC) (-FluidSynth) (-GME)
(-libsndfile) (-MikMod) (-MODPLUG) (+MAD) (-MPG123) (-Musepack)
(+Opus) (-OggTremor) (+OggVorbis) (-WAVE) (-WavPack) (-WildMidi)
Other features:
(-libsamplerate) (-libmpdclient) (+inotify) (-SQLite)
Metadata support:
(+ID3)
Playback support:
(-ALSA) (-FFADO) (-FIFO) (+File Recorder) (+HTTP Daemon) (-JACK)
(-libao) (-Media MVP) (-OSS) (-OpenAL) (-OS X) (-Pipeline)
(-PulseAudio) (-ROAR) (-SHOUTcast) (-Solaris) (-WinMM)
Streaming encoder support:
(-FLAC) (-LAME) (+Ogg Vorbis) (+Opus) (-TwoLAME) (+WAVE)
Streaming support:
(-CDIO_PARANOIA) (-CURL) (-Despotify) (-Last.FM) (-Soundcloud)
(-MMS) (-SOUP)
##########################################
I got error
Code:
./compile-android.sh: 8: ./compile-android.sh: realpath: not found
But is it truly impossible to use direct alsa output here? Running this as root could possibly solve some problems...

[Q] [CM10.2] libhardware_legacy not compiling because of wifi

Hi!
I'm trying to compile my first cyanogen rom for my Galaxy 3 (i5800). I downloaded the Android source from androidarmv6 and the device folder from marcellusbe's repo and i edited it to include samsung fimg drivers (original device folders has openfimg which IMHO is still not good for daily usage because of lag, very limited opengles support etc...) and the device configuration and filesystem table to support MTD converted phones. At first compiling went pretty good i just got some: "Thumb does not support this addressing mode *" that i fixed by adding
Code:
LOCAL_CFLAGS += -marm
to involved Android.mk however after resolving those errors it started compiling host libraries and it started giving TONS of no such file or directory errors, but compilation didn't stop so i didn't touch anything, then this error appeared and i can't find any patch/solution/workaround:
Code:
target thumb C: libhardware_legacy <= hardware/libhardware_legacy/wifi/wifi.c
hardware/libhardware_legacy/wifi/wifi.c: In function 'update_ctrl_interface':
hardware/libhardware_legacy/wifi/wifi.c:473:5: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
hardware/libhardware_legacy/wifi/wifi.c: In function 'wifi_start_supplicant':
hardware/libhardware_legacy/wifi/wifi.c:894:20: error: dereferencing pointer to incomplete type
hardware/libhardware_legacy/wifi/wifi.c:911:26: error: dereferencing pointer to incomplete type
make: *** [/home/francesco/cm10_port/cm_armv6/out/target/product/apollo/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/wifi/wifi.o] Error 1
I also downloaded the latest wifi.c from cyanogen github but nothing.
Someone knows how to resolve this?
Thanks in advance!

Linking libjpeg_static to CWM recovery issues

I am trying to add jpeg support to CWM recovery
I modified needed files:
c files header:
Code:
#include "jpeglib.h"
Android.mk
Code:
LOCAL_C_INCLUDES +=\
external/jpeg
LOCAL_STATIC_LIBRARIES += libjpeg_static
It compiles good but at linking stage I get:
Code:
undefined reference to 'jpeg_std_error'
undefined reference to 'jpeg_CreateDecompress'
...
I tried many ways, but I couldn't make it correctly link to libjpeg_static
Anyone have an idea on this?
Use nm to confirm those symbols actually exist in the static lib.
const_char said:
Use nm to confirm those symbols actually exist in the static lib.
Click to expand...
Click to collapse
Code:
nm libjpeg_static.a | grep jpeg_std_error
nm libjpeg_static.a | grep jpeg_CreateDecompress
#output:
#00000000 T jpeg_CreateDecompress
#00000000 T jpeg_std_error
T: text zone. So, they are not included
The issue is in libjpegstatic compiling
Maybe I am missing some flags, despite I tried many
Do you also have the command line of the compiler to confirm that it is actually linking to that lib?
Also, I don't remember, maybe you could also give a try with LOCAL_STATIC_LIBRARIES += jpeg_static?
const_char said:
Do you also have the command line of the compiler to confirm that it is actually linking to that lib?
Also, I don't remember, maybe you could also give a try with LOCAL_STATIC_LIBRARIES += jpeg_static?
Click to expand...
Click to collapse
I tried it obviously
If you are interested in trying to compile cwm with it, let me know
I will then commit changes to git
But you can try this:
lunch for your device
mmm external/jpeg
It will compile the ststic lib. Do not care about the dynamic error
You can see that compiled static lib with mmm is missing the links using nm

[Q] Cross compiling Python module using Android gcc Long bit error

I am attempting to compile Python along with the modules "openssl pil zope2" for Android using the "Python-for-android" project (https://github.com/kivy/python-for-android).
However it is not successful and errors out with the below error:
Code:
Getting distribution for 'zope.security==3.7.4'.
In file included from
/home/zac/Documents/Projects/Apps/python-for-android/build/hostpython/Python-2.7.2/Include/Python.h:58:0,
from src/zope/security/_proxy.c:19:
/home/zac/Documents/Projects/Apps/python-for-android/build/hostpython/Python-2.7.2/Include/pyport.h:849:2:
error: #error "LONG_BIT definition appears wrong for platform (bad
gcc/glibc config?)."
[B]#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc
config?)."[/B]
^
src/zope/security/_proxy.c: In function 'init_proxy':
src/zope/security/_proxy.c:1006:3: warning: dereferencing type-punned
pointer will break strict-aliasing rules [-Wstrict-aliasing]
Py_INCREF(&SecurityProxyType);
^
error: Setup script exited with error: command
'arm-linux-androideabi-gcc' failed with exit status 1
An error occurred when trying to install zope.security 3.7.4. Look
above this message for any errors that were output by easy_install.
While:
Installing test.
Getting distribution for 'zope.security==3.7.4'.
Error: Couldn't install: zope.security 3.7.4
What I am wondering is if anyone else has ever had a similar issue when trying to use the Android gcc, I have build zope.security just fine using the ARM gcc so it is not a platform issue but some bug/issue with the provided Android gcc in the NDK

Categories

Resources