2016-05-09 9 views
4

私はこのため23へminSdkVersion.apiLevelセットtargetSdkVersion.apiLevel 18にセットされたAndroidアプリ私は18APIレベルと比較したAndroid NDKプラットフォームのバージョンの正確さは何ですか?

にNDK platformVersionを設定するが、残念ながらミックスにOpenSSLを追加した後、JNIライブラリは現在、リンクに障害が発生しています

/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'signal' 
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr' 
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr' 
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function open_console: error: undefined reference to 'tcgetattr' 

platformVersionを21に設定すると問題が解決します(19でも動作しません)。

APIレベルが18ですが、JNIライブラリが21にリンクされている場合、これはAndroidアプリの意味ですか?それは4.3を実行しているデバイスで起動時にクラッシュするのだろうか?

私はsignalシンボルが4.3から欠けているとは思いません。これはNDKのバグですか?

答えて

2

これは、あなたの共有ライブラリをandroid-20以前のバージョンにインストールするとまったく同じことになります。読み込みに失敗します。 signalが見つかりませんでした。Androidランタイムは、カールのようなコマンドラインツールを実行することはありませんでした。

+0

実際にJNIライブラリが<21にロードされるようにこれらのシンボルを弱くリンクすることが可能かどうかは分かりますか?私は彼らがまったく呼ばれていないと確信しているので、彼らが 'null'に解決するかどうかは関係ありません。 – Pol

+0

あなたはhttps://wiki.openssl.org/index.php/Androidの指示に従っていますか? –

+0

私は、提供された './Configure android-armv7'を使ってOpenSSLを構築しました。静的ライブラリを生成し、それをJNI動的ライブラリにマージします。 OpenSSLハッシングAPIを使用する場合しかし、それは私が 'RAND_bytes()'を使用し始めたときです。上記のリンクエラーが出ています。 – Pol

関連する問題