問題タブ [android-native-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
528 参照

android - Android のネイティブ Web ブラウザのプラグインはバージョンに依存しますか?

Google がブラウザ プラグイン用の Android ソース コードで提供するコードを試してみました。より具体的には、この README に従って、

https://www.codeaurora.org/git/projects/qrd-gb-dsds-7225/repository/revisions/cc99b832a941dc8cbb86f1607d04eb87935ddbfd/entry/android/development/samples/BrowserPlugin/README

私の質問は、各プラットフォーム (Froyo、Gingerbread、Honeycomb など) ごとに個別のプラグインを配布する必要があるかどうかです。プラグイン内にネイティブ コードを含める予定です。

前もって感謝します!

0 投票する
1 に答える
12779 参照

android - NDK を使用せずに Android NDK でビルドされた共有ライブラリを APK に追加するにはどうすればよいですか?

Add a native lib to an APK のほぼ正確な複製。回答がなかったので、もう一度質問することにしました。

私はAndroidプロジェクトを持っています。Android NDK で構築された .so ライブラリがあります。そして、この .so を自分のプロジェクトで、できれば NDK を使用せずに使用したいと考えています。

では、特定の .so を APK に組み込む必要があることを Eclipse (または Android ツール) に伝えるにはどうすればよいでしょうか?

0 投票する
1 に答える
894 参照

android - APKをビルドすると、ファイル名からネイティブライブラリのバージョン番号が削除されます

autotoolsを使用して共有ライブラリを構築するレガシーコードがあります。これらのライブラリはAndroidアプリケーションで使用する必要があるため、単純なJavaクラスとそのJNIラッパーを(共有.soライブラリとして)作成しました。

レガシービルドシステムを適切に実行し、JavaプログラムのネイティブライブラリをビルドしてリンクするAndroid.mkスクリプトをすでに持っています。

出力ファイルは次のとおりです。

lib-wrapper.solib-aライブラリとの両方に依存しますlib-b。従来のautotoolsセットアップは、共有ライブラリファイル名にバージョン番号を追加することに注意してください。これは、依存関係としてに埋め込まれていlib-wrapper.soます。

問題:

APKのビルド中(たとえば、Eclipseから署名されていないパッケージをエクスポートする)、ファイル名からバージョン番号
が削除されます。これにより、エラーが発生します。

ライブラリを読み込めません:link_image [1721]:30は必要なライブラリ'lib-b.so.2'を'lib-wrapper.so'に読み込めませんでした

APKにはファイルが含まれているためですlib-b.so

APKのビルド中にバージョン番号を強制的に保持するにはどうすればよいですか?

x86ライブラリ/execのビルドに同じセットアップが使用されるため、レガシービルドシステムを変更することは(必須になるまで)かなり不可能です。

ありがとうございました。

0 投票する
1 に答える
1184 参照

android - Android4.x。apkを介してネイティブライブラリをデプロイし、他のアプリケーションからロードします

私はいくつかのネイティブライブラリを持っており、apkパッケージを介してそれらをデプロイしたいと思います(つまり、それらをlibsフォルダーまたはリソースにコピーします)。次に、別のアプリケーションをインストールし、以下を使用してそれらのライブラリをロードする必要があります。

どちらの方法でそれを行うことができますか?私が理解しているように、セキュリティ上の理由から、/ data / data / libs_package / lib/native_lib.soパスを使用してライブラリをロードすることはできません。他に方法はありますか?

前もって感謝します。

0 投票する
0 に答える
1414 参照

android - Androidで.7zファイルを解凍する方法

サーバーから取得している .7z ファイルを解凍したい。
そのために、sevenzipjbinding.jar ライブラリとその共有ライブラリ Sevenzipjbinding-AllLinux.jar をプロジェクトの libs ディレクトリに追加しましたが、 「ライブラリ 'sevenzipjbinding-AllLinux.jar' には、デバイスで実行されないネイティブ ライブラリが含まれています」
というエラーが表示されます。アプリケーションの実行時にコンソールで。

アクティビティで使用しようとしsystem.loadLibrary(sevenzipjbinding-AllLinux.jar);ましたが、同じエラーが発生しました。

実装方法を教えてください。tar.7z の解凍方法

0 投票する
1 に答える
5129 参照

java - 必要なライブラリがロードされているため、CANNOT LINK EXECUTABLE エラーが発生しました。それらを適切にリンクする方法は?

編集:重複の可能性は認識していますが、その答えは直接適用できません。Runtime.getRuntime().exec ではなく ProcessBuilder を使用しています。


Android用にコンパイルされたFFmpegには、有効なバージョンとliblame有効でないバージョンの2つのバージョンがあります。

/data/data/<<my-package-name>>/app_bin/ラメ サポートなしでコンパイルされた FFmpeg バイナリを読み込むと、問題なくビデオからオーディオが抽出されます。しかし、ラメサポートを有効にして使用すると、以下のエラーがログに記録されます。

必要なライブラリも Android 用にコンパイルされており、libsプロジェクト フォルダにSystem.loadLibrary("lame").

FFmpeg バイナリがライブラリを適切に検出できるようにするために他に何かすべきことがあるかどうか疑問に思っていました。これらは、FFmpeg バイナリをビルドするために NDK に指定されたものと同じライブラリです。

かなり簡単なので、コードは添付しません。

  • FFmpeg バイナリをダウンロードします (アプリには同梱されていません)。
  • バイナリをダウンロード フォルダから にコピーします/data/data/<<my-package-name>>/app_bin/
  • chmod 755;
  • そこから実行し、出力を読み取ります。

他に何か必要な場合はコメントしてください。

0 投票する
1 に答える
4215 参照

android - 64 ビット Android、32 ビット ネイティブ ライブラリを使用した 32 ビット アプリケーション

64 ビット Linux カーネルと 64 ビット Android を備えた 64 ビット ハードウェアがあるとします。
したがって、Zygote は、DVM の独自のインスタンスを使用して 64 ビット プロセスとして実行されます。

ここで、system.loadlibrarycall を使用して実行時にロードされる 32 ビット ネイティブ ライブラリを含むサード パーティ アプリケーションがあるとします。

このアプリケーションを実行しようとすると、apk が 32 ビット マシン用にビルドされていても、zygote はプロセスを開始でき、DVM は classes.dex ファイルを解釈できると思います。ただし、アプリケーションが 32 ビットのネイティブ ライブラリをロードしようとすると失敗します。これは、デバイスの bionic libc およびその他のライブラリがすべて 64 ビットになるためです。

この理解は正しいでしょうか?

0 投票する
0 に答える
171 参照

java - Eclipseを使用してAndroidアプリに* .so libを含めますか?

Androidアプリで* .soファイルを使用したいので、いくつかのWebサイトで提案されているように、ファイルを「libs\armeabi\libctrl_gpio.so」にコピーしました。apkファイルを実行して作成すると、Eclipseはこのフォルダー(apk内)を作成します!

「libs」を「lib」に変更し、実行時にアプリが次のコードを使用してライブラリをロードする必要がある場合:

エラーが発生しました:

1 行目で、パスが apk ファイル内の「lib\armeabi\libctrl_gpio.so」ではなく「lib/libctrl_gpio.so」であることがわかります。

また、4行目のパスは「/dev/ctrl_gpio」です!!!!!!!!!!

なぜそれが起こるのか理解できません。ライブラリのロードを妨げているのは私の問題ですか? たくさんのウェブサイトや質問を検索して見ましたが、どれも私の問題を解決しませんでした. どんな助けでも大歓迎です。私はアンドロイドの初心者なので、詳細を教えてください。ありがとう。