オンラインで特定の質問に答えられた人が見つかりませんでした。私はいくつかの.soライブラリをコピーして新しいプロジェクトに貼り付ける古いAndroidプロジェクトを持っています。私はこのようなことを初めて知っています。私はこれらのライブラリをどこに見つけるべきか私の新しいプログラムに伝える必要があることを知っていますが、私はCMakeまたはNDKを使ってコンパイルされたコードをインポートする必要があるかどうかわかりません。これは私のディレクトリは次のようになります。他のアンドロイドスタジオプロジェクトに既存のjniライブラリを追加しました。
私はこのような私のプログラムでは、このライブラリを呼ぶ:
static {
System.loadLibrary("serial_port");
}
しかし、どのように私はどここれらのコピーと貼り付けたファイルを検索するようにコンパイラを教えてください?
Androidからdocumentationに基づいてファイルを開始しましたが、いくつか混乱しています。これはこれまで私が持っているものです:
# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.
cmake_minimum_required(VERSION 3.4.1)
# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add.library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.
add_library(# Specifies the name of the library.
serial_port
# Sets the library as a shared library.
SHARED
IMPORTED
serial_port/src/${ANDROID_ABI}/libserial_port.so
# Provides a relative path to your source file(s).
src/main/cpp/libs/armeabi/libserial_port.so)
私はそれを正しくやっているとは思いません。見て、正しい方向に私を指摘してください。ありがとう
私のサブディレクトリ(x86、armeabi)でも動作しますか?私は前にこれを試しましたが、アンドロイドスタジオは私が私のライブラリをロードしたときに呼んでいたオープンメソッドを認識できませんでした。 System.loadLibrary( "serial_port")を呼び出すと、このライブラリを認識していないようです。 PS私はこのライブラリを書いていませんでした。私は製造業者が私に送ったサンプルプログラムからそれを取っています。シリアルポートにアクセスして、POSシステムの内部プリンタにアクセスしようとしています。サンプルプログラムでは、privateスタティックネイティブFileDescriptor open(String path、int baudrate、int flags、boolean flowCon)を呼び出します。 –
Androidスタジオは認識しません。しかし、そのファイルをそれぞれのディレクトリに置くと実行されます。 –
ところで、静的なネイティブメソッドを好きな場所に置くことはできません。私はあなたが適切なクラスで適切なパッケージでそれらを宣言していることを願っています。サンプルプログラム内に正確に配置します。 –