2010-06-15 50 views

Trả lời

3

các bạn đã thử này, nó là một độc lập xây dựng của openssl đó là bao gồm trong Android: https://github.com/fries/android-external-openssl/blob/master/README.android

+0

chúng tôi thực sự duy trì phiên bản riêng của chúng ta về điều này bây giờ: https://github.com/guardianproject/android-ffmpeg –

+0

Chúng tôi đang sử dụng xây dựng openssl cung cấp trong guardianproject .. bây giờ tôi đang cố gắng để nâng cấp phiên bản openssl do một cảnh báo bảo mật android playstore gần đây. Tôi đã làm theo các bước trong tệp Readme nhưng bị kẹt tại: 5) Dọn dẹp trước khi xây dựng với: m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest. với kiến ​​thức của tôi m và mm có sẵn khi bạn thiết lập để xây dựng android từ nguồn, vì vậy tôi nhận được m: lệnh không tìm thấy và trong bước tiếp theo tương tự cho mm. Bất kỳ trợ giúp nào cũng được đánh giá rất cao! – Nonos

+0

@Nonos Bạn có nhận được giải pháp nào để cập nhật phiên bản OpenSSL không? Tôi cũng bị mắc kẹt vào bước 5. Herte là [câu hỏi] của tôi (http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple) nếu bạn có thể giúp tôi. –

2

tôi sẽ mô tả một số lời khuyên về việc sử dụng OpenSSL với Android:

  1. Nó là cần thiết để xây dựng thư viện OpenSSL sử dụng công cụ ndk, nếu không họ sẽ không tương thích với ndk. Compiling the latest OpenSSL for Android

    CC=~/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc 
    ./Configure android-armv7 
    export ANDROID_DEV=~/android-ndk-r9//platforms/android-8/arch-arm/usr 
    make build_libs 
    

    Giả sử các lệnh này sẽ được thực thi trong thư mục nguồn của OpenSSL.

  2. Để sử dụng các thư viện này (ssl và crypto) với thư viện của riêng bạn từ ndk, bạn cần tạo thêm các tệp * .mk trong thư mục jni. Ví dụ:

    include $(CLEAR_VARS) 
    
    LOCAL_MODULE := ssl-crypto 
    LOCAL_SRC_FILES := openssl-crypto/libcrypto.so 
    
    include $(PREBUILT_SHARED_LIBRARY) 
    

    và đưa vào Android.mk chính:

    include $(LOCAL_PATH)/openssl-ssl/Android.mk 
    

    và có lẽ thêm

    include $(CLEAR_VARS) 
    

    sau nó, để tránh sai sót. Thư viện sẽ được đặt vào libs/armabi.apk.

  3. Nếu bạn gặp lỗi could not load library ... needed by ... điều đó có thể có nghĩa là thư viện của bạn có tên soname với số phiên bản. AFAIK ndk không thể làm việc với các thư viện như vậy vào lúc này. Có một cách giải quyết (Dalvik is looking for .so file with '.0' extension - why?):

    rpl -R -e library.so.1.1 "library.so\x00\x00\x00\x00" libs obj 
    

    nơi rpl là một công cụ Linux chuỗi thay thế. Chạy tập lệnh này sau khi xây dựng và trước khi chạy ứng dụng của bạn và nó sẽ xóa số phiên bản khỏi tệp dự án. Theo liên kết để xem thêm thông tin.

    Nếu bạn sử dụng trình biên dịch C++, bạn có thể gặp lỗi "tham chiếu không xác định" trong các hàm C. Sử dụng extern "C" {} để tránh điều này (xem "C++ name mangling" để biết thêm thông tin).

  4. Cuối cùng, đừng quên đưa quyền sử dụng mạng vào tệp kê khai.

Các vấn đề liên quan