You may need to remove the TARGET_ABI directive from my example.
On Thu, Sep 20, 2012 at 8:05 PM, farmdve data.bg <farm...@data.bg> wrote: > Look at mine and configure where needed > > LOCAL_PATH := $(call my-dir) > > include $(CLEAR_VARS) > LOCAL_MODULE := crypto-prebuilt > LOCAL_SRC_FILES := libcrypto.a > TARGET_ABI := android-8-armeabi > include $(PREBUILT_STATIC_LIBRARY) > > include $(CLEAR_VARS) > LOCAL_MODULE := ssl-prebuilt > LOCAL_SRC_FILES := libssl.a > include $(PREBUILT_STATIC_LIBRARY) > > include $(CLEAR_VARS) > LOCAL_MODULE := appname #will turn into libappname > LOCAL_SRC_FILES := main.c > LOCAL_CFLAGS := -Wextra -O3 > LOCAL_LDFLAGS := -llog > LOCAL_STATIC_LIBRARIES := crypto-prebuilt ssl-prebuilt > include $(BUILD_SHARED_LIBRARY) > > On Mon, Sep 17, 2012 at 7:45 PM, Indtiny s <indt...@gmail.com> wrote: >> Hi, >> Thanks.. I have generated the static libraries and pointed to the those >> libraries in my application android make . >> >> Below is the Android.mk file for my application which uses the curl and >> openssl , Here do I need to build the static library separately for the >> openssl or have I followed the correct way ..? >> >> >> LOCAL_PATH:= $(call my-dir) >> >> ANDROID_ROOT := /home/chethan/Android/openssl >> CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline -Wnested-externs >> -Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal >> -Wno-multichar -Wsign-compare -Wno-format-nonliteral -Wendif-labels >> -Wstrict-prototypes -Wdeclaration-after-statement -Wno-system-headers >> -DHAVE_CONFIG_H >> >> include $(CLEAR_VARS) >> include $(LOCAL_PATH)/curl/lib/Makefile.inc >> LOCAL_MODULE := static-curl >> LOCAL_SRC_FILES := $(addprefix curl/lib/,$(CSOURCES)) >> LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include $(LOCAL_PATH)/curl/lib >> $(LOCAL_PATH)/ares $(ANDROID_ROOT)/openssl/include >> LOCAL_CFLAGS += $(CFLAGS) -DHAVE_CONFIG_H >> LOCAL_STATIC_LIBRARIES := static-ares >> LOCAL_LDFLAGS := -lssl -lcrypto -lz -L$(ANDROID_ROOT)/openssl/libs/armeabi >> -L/Android/android-ndk-r8/platforms/android-4/arch-arm/usr/libarget/product/generic/system/lib >> include $(BUILD_STATIC_LIBRARY) >> >> >> >> # include $(BUILD_SHARED_LIBRARY) >> include $(CLEAR_VARS) >> LOCAL_MODULE := curl >> LOCAL_SRC_FILES := curl.c >> LOCAL_STATIC_LIBRARIES := static-curl >> LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include $(LOCAL_PATH)/curl/lib >> LOCAL_CFLAGS += -Wall >> LOCAL_LDFLAGS += -llog -lssl -lcrypto -lz >> -L$(ANDROID_ROOT)/openssl/libs/armeabi >> -L$(ANDROID_ROOT)/openssl/obj/local/armeabi >> >> include $(BUILD_SHARED_LIBRARY) >> >> >> On Mon, Sep 17, 2012 at 7:47 AM, farmdve data.bg <farm...@data.bg> wrote: >>> >>> Check the obj/local/armeabi folder for the static libraries. >>> >>> On Mon, Sep 17, 2012 at 7:02 AM, Indtiny s <indt...@gmail.com> wrote: >>> > Hi, >>> > Can you pls tell me how to genearte the the static library from the >>> > android-openssl (from the link which you have sent .! >>> > >>> > I tried to edit SHARED to STATIC in the Android.mk file at both ssl and >>> > crypto , but that did nt create any static library ..! >>> > >>> > >>> > >>> > On Sun, Sep 16, 2012 at 11:39 PM, farmdve data.bg <farm...@data.bg> >>> > wrote: >>> >> >>> >> Trust me, I tried to load the shared libraries as well, but failed. >>> >> Statically linking was the only way to ensure my application uses the >>> >> latest OpenSSL regardless of Android version(though my ABI is set to >>> >> API level 8). >>> >> >>> >> On Sat, Sep 15, 2012 at 1:18 PM, Indtiny s <indt...@gmail.com> wrote: >>> >> > Hi, >>> >> > >>> >> > Actually in my java application I will load all three shared libries >>> >> > (ssl,crypto and curl) ... Hence Iam trying build all libs as shared >>> >> > . >>> >> > >>> >> > I tried to debug it as per your input , now I am getting the response >>> >> > as >>> >> > 1 i >>> >> > .e CURLE_UNSUPPORTED_PROTOCOL (1) when I tried to execute the https >>> >> > . >>> >> > >>> >> > >>> >> > >>> >> > I think still the openssl is not included properly ..!! >>> >> > >>> >> > >>> >> > >>> >> > I dunno where I have gone wrong . >>> >> > >>> >> > >>> >> > >>> >> > Rgds >>> >> > >>> >> > Indu >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > On Sat, Sep 15, 2012 at 1:04 AM, farmdve data.bg <farm...@data.bg> >>> >> > wrote: >>> >> >> >>> >> >> Try using LogCat by connecting an Android device via USB, or >>> >> >> launching >>> >> >> an emulator and opening a new Command Prompt for Windows or Terminal >>> >> >> instance in linux and type adb logcat. >>> >> >> Then launch the app and look at the output. >>> >> >> >>> >> >> You see, Android ships with OpenSSL, but the version is usually >>> >> >> quite >>> >> >> old. You need to compile OpenSSL 1.0.1c as static and link >>> >> >> statically >>> >> >> to use the new library. >>> >> >> >>> >> >> On Fri, Sep 14, 2012 at 9:14 PM, Indtiny s <indt...@gmail.com> >>> >> >> wrote: >>> >> >> > Hi, >>> >> >> > I have just ran ndk-build for the code >>> >> >> > https://github.com/aluvalassuman/OpenSSL1.0.1cForAndroid and it >>> >> >> > generated >>> >> >> > the two shared libraries in libs/ floder which I required , >>> >> >> > libcrypto.so >>> >> >> > and >>> >> >> > libssl.so( as build say these are shared libarray) I just >>> >> >> > included >>> >> >> > them >>> >> >> > in >>> >> >> > the curl code as prebuilt shared library(edited now to shared in >>> >> >> > the >>> >> >> > android >>> >> >> > make) , then Since I need to include the curl with openssl in my >>> >> >> > java >>> >> >> > code >>> >> >> > I want to build curl as shared library only .. I just changed my >>> >> >> > android >>> >> >> > curl make to shared .. >>> >> >> > And sorry it was System.loadLibrary("curltest"); only .. but >>> >> >> > still >>> >> >> > I'm >>> >> >> > not >>> >> >> > getting the any response from the curl ...? am I following the >>> >> >> > correct >>> >> >> > way >>> >> >> > to use the openssl , becoz when I test the curl alone I get the >>> >> >> > proper >>> >> >> > http >>> >> >> > page requested ... ! >>> >> >> > >>> >> >> > Rgds >>> >> >> > Indu >>> >> >> > >>> >> >> > >>> >> >> > On Fri, Sep 14, 2012 at 1:54 PM, farmdve data.bg <farm...@data.bg> >>> >> >> > wrote: >>> >> >> >> >>> >> >> >> It's not clear if you built libcurl as a static library to begin >>> >> >> >> with. >>> >> >> >> And not clear if you built OpenSSL as a static or shared library. >>> >> >> >> >>> >> >> >> And you must load curltest(as that is the name of the module) not >>> >> >> >> curl. >>> >> >> >> >>> >> >> >> On Fri, Sep 14, 2012 at 8:28 PM, Indtiny s <indt...@gmail.com> >>> >> >> >> wrote: >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > Hi, >>> >> >> >> > >>> >> >> >> > yes I'm able to built the openssl1.0.1c version for android and >>> >> >> >> > got >>> >> >> >> > the >>> >> >> >> > shared libraries . >>> >> >> >> > >>> >> >> >> > Now I want to use the same with curl , first I built simple >>> >> >> >> > curl >>> >> >> >> > application >>> >> >> >> > and tested and it worked now I tried to include the openssl . >>> >> >> >> > below is the android.mk file which I have written to include >>> >> >> >> > openssl >>> >> >> >> > libraries for the curl code . >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > LOCAL_PATH:= $(call my-dir) >>> >> >> >> > >>> >> >> >> > CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline \ >>> >> >> >> > -Wnested-externs -Wmissing-declarations -Wmissing-prototypes >>> >> >> >> > -Wno-long-long >>> >> >> >> > \ >>> >> >> >> > -Wfloat-equal -Wno-multichar -Wsign-compare >>> >> >> >> > -Wno-format-nonliteral \ >>> >> >> >> > -Wendif-labels -Wstrict-prototypes >>> >> >> >> > -Wdeclaration-after-statement >>> >> >> >> > \ >>> >> >> >> > -Wno-system-headers -DHAVE_CONFIG_H >>> >> >> >> > >>> >> >> >> > include $(CLEAR_VARS) >>> >> >> >> > >>> >> >> >> > ## Crypto lib >>> >> >> >> > include $(CLEAR_VARS) >>> >> >> >> > LOCAL_MODULE := xcryptox >>> >> >> >> > LOCAL_SRC_FILES := openssl/lib/libcrypto.so >>> >> >> >> > LOCAL_C_INCLUDES := $(LOCAL_PATH)/openssl/includes/openssl >>> >> >> >> > include $(PREBUILT_SHARED_LIBRARY) >>> >> >> >> > # >>> >> >> >> > ### SSL lib >>> >> >> >> > include $(CLEAR_VARS) >>> >> >> >> > LOCAL_MODULE := xsslx >>> >> >> >> > LOCAL_SRC_FILES := openssl/libssl/lib/libssl.so >>> >> >> >> > LOCAL_C_INCLUDES := $(LOCAL_PATH)/openssl/includes/openssl >>> >> >> >> > include $(PREBUILT_SHARED_LIBRARY) >>> >> >> >> > >>> >> >> >> > include $(LOCAL_PATH)/curl/lib/Makefile.inc . >>> >> >> >> > >>> >> >> >> > LOCAL_SRC_FILES := $(addprefix curl/lib/,$(CSOURCES)) >>> >> >> >> > LOCAL_CFLAGS += $(CFLAGS) >>> >> >> >> > LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include/ >>> >> >> >> > >>> >> >> >> > LOCAL_COPY_HEADERS_TO := libcurl >>> >> >> >> > LOCAL_COPY_HEADERS := $(addprefix >>> >> >> >> > curl/include/curl/,$(HHEADERS)) >>> >> >> >> > >>> >> >> >> > LOCAL_MODULE:= libcurl >>> >> >> >> > >>> >> >> >> > include $(BUILD_STATIC_LIBRARY) >>> >> >> >> > >>> >> >> >> > # Build shared library now >>> >> >> >> > # curltest >>> >> >> >> > >>> >> >> >> > include $(CLEAR_VARS) >>> >> >> >> > >>> >> >> >> > LOCAL_MODULE := curltest >>> >> >> >> > LOCAL_SRC_FILES := curltest.c >>> >> >> >> > LOCAL_STATIC_LIBRARIES := libcurl >>> >> >> >> > LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include >>> >> >> >> > include $(BUILD_SHARED_LIBRARY) >>> >> >> >> > >>> >> >> >> > And below is my C curtest code with ssl include . >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > #include <string.h> >>> >> >> >> > #include <jni.h> >>> >> >> >> > #include <stdio.h> >>> >> >> >> > #include <stdlib.h> >>> >> >> >> > #include "curl_config.h" >>> >> >> >> > #include "curl/curl.h" >>> >> >> >> > >>> >> >> >> > typedef struct pageInfo_t { >>> >> >> >> > char *data; >>> >> >> >> > int len; >>> >> >> >> > } pageInfo_t; >>> >> >> >> > >>> >> >> >> > static size_t >>> >> >> >> > HTTPData(void *buffer, size_t size, size_t nmemb, void >>> >> >> >> > *userData) >>> >> >> >> > { >>> >> >> >> > int len = size * nmemb; >>> >> >> >> > pageInfo_t *page = (pageInfo_t *)userData; >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > if (buffer && page->data && (page->len + len < (16 * 1024)) ) >>> >> >> >> > { >>> >> >> >> > memcpy(&page->data[page->len], buffer, len); >>> >> >> >> > page->len += len; >>> >> >> >> > } >>> >> >> >> > return len; >>> >> >> >> > } >>> >> >> >> > >>> >> >> >> > //Inteface funciton that will recieve web page fom Java >>> >> >> >> > jstring >>> >> >> >> > Java_com_mtterra_curltest_curltest_JNIGetWebpage( JNIEnv* env, >>> >> >> >> > jobject >>> >> >> >> > entryObject, >>> >> >> >> > jstring webpageJStr ) >>> >> >> >> > { >>> >> >> >> > pageInfo_t page; >>> >> >> >> > CURL *curl; >>> >> >> >> > CURLcode res; >>> >> >> >> > char *buffer; >>> >> >> >> > >>> >> >> >> > static const char *pCertFile = >>> >> >> >> > "/sdcared/indu/openssl/testcert.pem"; >>> >> >> >> > static const char >>> >> >> >> > *pCACertFile="/sdcared/indu/openssl/cacert.pem"; >>> >> >> >> > >>> >> >> >> > const char *pKeyName; >>> >> >> >> > const char *pKeyType; >>> >> >> >> > >>> >> >> >> > const char *pEngine; >>> >> >> >> > const jbyte *webpage; >>> >> >> >> > pKeyName = "/sdcared/indu/openssl/testkey.pem"; >>> >> >> >> > pKeyType = "PEM"; >>> >> >> >> > pEngine = NULL; >>> >> >> >> > webpage = (*env)->GetStringUTFChars(env, webpageJStr, NULL); >>> >> >> >> > if (webpage == NULL) { >>> >> >> >> > return NULL; /* OutOfMemoryError already thrown */ >>> >> >> >> > } >>> >> >> >> > >>> >> >> >> > page.data = (char *)malloc(16 * 1024); >>> >> >> >> > page.len = 0; >>> >> >> >> > if (page.data) >>> >> >> >> > memset(page.data, 32, 16 * 1024); >>> >> >> >> > >>> >> >> >> > buffer = (char *)malloc(1024); >>> >> >> >> > >>> >> >> >> > curl = curl_easy_init(); >>> >> >> >> > if(curl) { >>> >> >> >> > curl_easy_setopt(curl, CURLOPT_URL, webpage); >>> >> >> >> > curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HTTPData); >>> >> >> >> > curl_easy_setopt(curl, CURLOPT_WRITEDATA, &page); >>> >> >> >> > >>> >> >> >> > /* since PEM is default, we needn't set it for PEM */ >>> >> >> >> > curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM"); >>> >> >> >> > >>> >> >> >> > /* set the cert for client authentication */ >>> >> >> >> > curl_easy_setopt(curl,CURLOPT_SSLCERT,pCertFile); >>> >> >> >> > >>> >> >> >> > /* if we use a key stored in a crypto engine, >>> >> >> >> > we must set the key type to "ENG" */ >>> >> >> >> > curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,pKeyType); >>> >> >> >> > >>> >> >> >> > /* set the private key (file or ID in engine) */ >>> >> >> >> > curl_easy_setopt(curl,CURLOPT_SSLKEY,pKeyName); >>> >> >> >> > >>> >> >> >> > /* set the file with the certs vaildating the server */ >>> >> >> >> > curl_easy_setopt(curl,CURLOPT_CAINFO,pCACertFile); >>> >> >> >> > >>> >> >> >> > /* disconnect if we can't validate server's cert */ >>> >> >> >> > curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1L); >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > res = curl_easy_perform(curl); >>> >> >> >> > /* always cleanup */ >>> >> >> >> > curl_easy_cleanup(curl); >>> >> >> >> > (*env)->ReleaseStringUTFChars(env, webpageJStr, webpage); >>> >> >> >> > if(res == 0) { >>> >> >> >> > if (buffer) { >>> >> >> >> > page.data[page.len < 256 ? page.len : 256] = '\0'; >>> >> >> >> > sprintf(buffer, "pagedata(%d): %s. done.\n", page.len, >>> >> >> >> > page.data); >>> >> >> >> > return (*env)->NewStringUTF(env, buffer); >>> >> >> >> > } >>> >> >> >> > } >>> >> >> >> > sprintf(buffer, "Result %d", res); >>> >> >> >> > return (*env)->NewStringUTF(env, buffer); >>> >> >> >> > } else { >>> >> >> >> > return (*env)->NewStringUTF(env, "Unable to init cURL"); >>> >> >> >> > } >>> >> >> >> > } >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > I tried to run this but I get the response as just Result at >>> >> >> >> > the >>> >> >> >> > my >>> >> >> >> > java >>> >> >> >> > application code .. is the above method is the proper way to >>> >> >> >> > include >>> >> >> >> > the >>> >> >> >> > openssl in android..? >>> >> >> >> > in my java code I'm just loading System.loadLibrary("curl"); >>> >> >> >> > >>> >> >> >> > Rgds >>> >> >> >> > Indu >>> >> >> >> >>> >> >> >> >>> >> >> >> ______________________________________________________________________ >>> >> >> >> OpenSSL Project >>> >> >> >> http://www.openssl.org >>> >> >> >> User Support Mailing List >>> >> >> >> openssl-users@openssl.org >>> >> >> >> Automated List Manager >>> >> >> >> majord...@openssl.org >>> >> >> > >>> >> >> > >>> >> >> >>> >> >> ______________________________________________________________________ >>> >> >> OpenSSL Project >>> >> >> http://www.openssl.org >>> >> >> User Support Mailing List >>> >> >> openssl-users@openssl.org >>> >> >> Automated List Manager >>> >> >> majord...@openssl.org >>> >> > >>> >> > >>> >> ______________________________________________________________________ >>> >> OpenSSL Project http://www.openssl.org >>> >> User Support Mailing List openssl-users@openssl.org >>> >> Automated List Manager majord...@openssl.org >>> > >>> > >>> ______________________________________________________________________ >>> OpenSSL Project http://www.openssl.org >>> User Support Mailing List openssl-users@openssl.org >>> Automated List Manager majord...@openssl.org >> >> ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org