True!
My bad. It was really stupid to get a .so in the linux-x86 SDK dir and
think that it would work.
I fixed that stupid mistake and here what I got:
SharedLibrary : libSEMyProjL.so
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-g++ -Wl,-
soname,libSEMyProjL.so -shared --sysroot=/android/android-ndk-r5/
platforms/android-5/arch-arm /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/SEMyProjLCore.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/SEMyProjLEngine.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/SEMyProjLServices.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/JSEMyProjL.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/BrandAbstractCCD.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/BrandAbstraction.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/BrandAbstractMchip.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/BrandAbstractVSDC.o /android/MyProj/obj/local/armeabi/objs/
SEMyProjL/SEALConfig.o /android/MyProj/obj/local/armeabi/libSCore.a /
android/MyProj/obj/local/armeabi/libstdc++.a /android/MyProj/obj/local/
armeabi/libcrypto.so /android/MyProj/obj/local/armeabi/libssl.so /
android/MyProj/obj/local/armeabi/libz.so /android/android-ndk-r5/
platforms/android-5/arch-arm/usr/lib/libc.so /android/android-ndk-r5/
platforms/android-5/arch-arm/usr/lib/libstdc++.so /android/android-ndk-
r5/platforms/android-5/arch-arm/usr/lib/libm.so -Wl,--no-undefined -
Wl,-z,noexecstack -L/android/android-ndk-r5/platforms/android-5/arch-
arm/usr/lib -lstdc++ -Wl,-rpath-link=/android/android-ndk-r5/platforms/
android-5/arch-arm/usr/lib -lsupc++ -o /android/MyProj/obj/local/
armeabi/libSEMyProjL.so
Install : libSEMyProjL.so => libs/armeabi/libSEMyProjL.so
mkdir -p /android/MyProj/libs/armeabi
install -p /android/MyProj/obj/local/armeabi/libSEMyProjL.so /android/
MyProj/libs/armeabi/libSEMyProjL.so
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded /
android/MyProj/libs/armeabi/libSEMyProjL.so
Install : libcrypto.so => libs/armeabi/libcrypto.so
mkdir -p /android/MyProj/libs/armeabi
install -p /android/MyProj/obj/local/armeabi/libcrypto.so /android/
MyProj/libs/armeabi/libcrypto.so
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded /
android/MyProj/libs/armeabi/libcrypto.so
Executable : openssl
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-g++ -Wl,--gc-sections -
Wl,-z,nocopyreloc --sysroot=/android/android-ndk-r5/platforms/
android-5/arch-arm /android/MyProj/obj/local/armeabi/objs/openssl/
app_rand.o /android/MyProj/obj/local/armeabi/objs/openssl/apps.o /
android/MyProj/obj/local/armeabi/objs/openssl/asn1pars.o /android/
MyProj/obj/local/armeabi/objs/openssl/ca.o /android/MyProj/obj/local/
armeabi/objs/openssl/ciphers.o /android/MyProj/obj/local/armeabi/objs/
openssl/crl.o /android/MyProj/obj/local/armeabi/objs/openssl/crl2p7.o /
android/MyProj/obj/local/armeabi/objs/openssl/dgst.o /android/MyProj/
obj/local/armeabi/objs/openssl/dh.o /android/MyProj/obj/local/armeabi/
objs/openssl/dhparam.o /android/MyProj/obj/local/armeabi/objs/openssl/
dsa.o /android/MyProj/obj/local/armeabi/objs/openssl/dsaparam.o /
android/MyProj/obj/local/armeabi/objs/openssl/ecparam.o /android/
MyProj/obj/local/armeabi/objs/openssl/ec.o /android/MyProj/obj/local/
armeabi/objs/openssl/enc.o /android/MyProj/obj/local/armeabi/objs/
openssl/engine.o /android/MyProj/obj/local/armeabi/objs/openssl/
errstr.o /android/MyProj/obj/local/armeabi/objs/openssl/gendh.o /
android/MyProj/obj/local/armeabi/objs/openssl/gendsa.o /android/MyProj/
obj/local/armeabi/objs/openssl/genpkey.o /android/MyProj/obj/local/
armeabi/objs/openssl/genrsa.o /android/MyProj/obj/local/armeabi/objs/
openssl/nseq.o /android/MyProj/obj/local/armeabi/objs/openssl/ocsp.o /
android/MyProj/obj/local/armeabi/objs/openssl/openssl.o /android/
MyProj/obj/local/armeabi/objs/openssl/passwd.o /android/MyProj/obj/
local/armeabi/objs/openssl/pkcs12.o /android/MyProj/obj/local/armeabi/
objs/openssl/pkcs7.o /android/MyProj/obj/local/armeabi/objs/openssl/
pkcs8.o /android/MyProj/obj/local/armeabi/objs/openssl/pkey.o /android/
MyProj/obj/local/armeabi/objs/openssl/pkeyparam.o /android/MyProj/obj/
local/armeabi/objs/openssl/pkeyutl.o /android/MyProj/obj/local/armeabi/
objs/openssl/prime.o /android/MyProj/obj/local/armeabi/objs/openssl/
rand.o /android/MyProj/obj/local/armeabi/objs/openssl/req.o /android/
MyProj/obj/local/armeabi/objs/openssl/rsa.o /android/MyProj/obj/local/
armeabi/objs/openssl/rsautl.o /android/MyProj/obj/local/armeabi/objs/
openssl/s_cb.o /android/MyProj/obj/local/armeabi/objs/openssl/
s_client.o /android/MyProj/obj/local/armeabi/objs/openssl/s_server.o /
android/MyProj/obj/local/armeabi/objs/openssl/s_socket.o /android/
MyProj/obj/local/armeabi/objs/openssl/s_time.o /android/MyProj/obj/
local/armeabi/objs/openssl/sess_id.o /android/MyProj/obj/local/armeabi/
objs/openssl/smime.o /android/MyProj/obj/local/armeabi/objs/openssl/
speed.o /android/MyProj/obj/local/armeabi/objs/openssl/spkac.o /
android/MyProj/obj/local/armeabi/objs/openssl/verify.o /android/MyProj/
obj/local/armeabi/objs/openssl/version.o /android/MyProj/obj/local/
armeabi/objs/openssl/x509.o /android/MyProj/obj/local/armeabi/
libssl.so /android/MyProj/obj/local/armeabi/libcrypto.so /android/
android-ndk-r5/platforms/android-5/arch-arm/usr/lib/libc.so /android/
android-ndk-r5/platforms/android-5/arch-arm/usr/lib/libstdc++.so /
android/android-ndk-r5/platforms/android-5/arch-arm/usr/lib/libm.so -
Wl,--no-undefined -Wl,-z,noexecstack -Wl,-rpath-link=/android/android-
ndk-r5/platforms/android-5/arch-arm/usr/lib -lsupc++ -o /android/
MyProj/obj/local/armeabi/openssl
Install : openssl => libs/armeabi/openssl
mkdir -p /android/MyProj/libs/armeabi
install -p /android/MyProj/obj/local/armeabi/openssl /android/MyProj/
libs/armeabi/openssl
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded /
android/MyProj/libs/armeabi/openssl
Install : libssl.so => libs/armeabi/libssl.so
mkdir -p /android/MyProj/libs/armeabi
install -p /android/MyProj/obj/local/armeabi/libssl.so /android/MyProj/
libs/armeabi/libssl.so
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded /
android/MyProj/libs/armeabi/libssl.so
Executable : ssltest
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-g++ -Wl,--gc-sections -
Wl,-z,nocopyreloc --sysroot=/android/android-ndk-r5/platforms/
android-5/arch-arm /android/MyProj/obj/local/armeabi/objs/ssltest/
ssltest.o /android/MyProj/obj/local/armeabi/libssl.so /android/
MyProj/obj/local/armeabi/libcrypto.so /android/android-ndk-r5/
platforms/android-5/arch-arm/usr/lib/libc.so /android/android-ndk-r5/
platforms/android-5/arch-arm/usr/lib/libstdc++.so /android/android-ndk-
r5/platforms/android-5/arch-arm/usr/lib/libm.so -Wl,--no-undefined -
Wl,-z,noexecstack -Wl,-rpath-link=/android/android-ndk-r5/platforms/
android-5/arch-arm/usr/lib -lsupc++ -o /android/MyProj/obj/local/
armeabi/ssltest
Install : ssltest => libs/armeabi/ssltest
mkdir -p /android/MyProj/libs/armeabi
install -p /android/MyProj/obj/local/armeabi/ssltest /android/MyProj/
libs/armeabi/ssltest
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded /
android/MyProj/libs/armeabi/ssltest
Install : libz.so => libs/armeabi/libz.so
mkdir -p /android/MyProj/libs/armeabi
install -p /android/MyProj/obj/local/armeabi/libz.so /android/MyProj/
libs/armeabi/libz.so
/android/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/
prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded /
android/MyProj/libs/armeabi/libz.so
Which means I'm successfully compiling openssl and libz with ndk-build
besides linking them with my library.
My target library is the libSEMyProjL.so (it has my JNI symbols) and
here it goes its Android.mk LOCAL_SHARED_LIBRARIES line:
LOCAL_SHARED_LIBRARIES := libcrypto libssl libz
Which is reflected when it's being linked:
/android/MyProj/obj/local/armeabi/libSCore.a /android/MyProj/obj/
local/armeabi/libstdc++.a /android/MyProj/obj/local/armeabi/
libcrypto.so /android/MyProj/obj/local/armeabi/libssl.so /android/
MyProj/obj/local/armeabi/libz.so /android/android-ndk-r5/platforms/
android-5/arch-arm/usr/lib/libc.so /android/android-ndk-r5/platforms/
android-5/arch-arm/usr/lib/libstdc++.so /android/android-ndk-r5/
platforms/android-5/arch-arm/usr/lib/libm.so -Wl,--no-undefined -Wl,-
z,noexecstack -L/android/android-ndk-r5/platforms/android-5/arch-arm/
usr/lib -lstdc++ -Wl,-rpath-link=/android/android-ndk-r5/platforms/
android-5/arch-arm/usr/lib -lsupc++ -o /android/MyProj/obj/local/
armeabi/libSEMyProjL.so
But when I try to load it on the EMULATOR:
static {
System.loadLibrary("libSEMyProjL");
}
Thread [<3> main] (Suspended (exception UnsatisfiedLinkError))
Runtime.loadLibrary(String, ClassLoader) line: 489
System.loadLibrary(String) line: 557
SEMyProjLInterface.<clinit>() line: 12
MyProjHandler.<init>(int, EditText, Context, Activity) line: 42
MyProj.onCreate(Bundle) line: 72
Instrumentation.callActivityOnCreate(Activity, Bundle) line: 1047
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord,
Intent) line: 2521
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord,
Intent) line: 2574
ActivityThread.access$2400(ActivityThread, ActivityThread
$ActivityRecord, Intent) line: 121
ActivityThread$H.handleMessage(Message) line: 1925
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 136
ActivityThread.main(String[]) line: 4425
Method.invokeNative(Object, Object[], Class, Class[], Class, int,
boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 860
ZygoteInit.main(String[]) line: 618
NativeStart.main(String[]) line: not available [native method]
Do you have a clue?
Is there any Android LDD like to check what dependencies are not being
satisfied?
Thanks!