я создал общую библиотеку, используя c ++ в vs c. Следующие команды используются для создания общей библиотеки (.so файл)
g++ -Wall -fPIC -I. -c Encrypt.cpp
g++ -shared -o libencrypt.so Encrypt.o
g++ -Wall -I. -c main.cpp
g++ -o test main.o -L. -lencrypt -l:libcryptopp.a
export LD_LIBRARY_PATH=.
./test
Я реализовал libencrypt.so в моем android проекте внутри src/main/jniLibs/<architectures>
, которые x86, armeabi-v7a, arm64-v8a
Затем в мои app/build.gradle
я включил ff:
ndk {
abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
}
И, наконец, мою MainActivity. java
class MainActivity : AppCompatActivity() {
companion object {
init {
System.loadLibrary("encrypt")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//tv_cipher.text = encryptString("test")
}
external fun encryptString(plaintext: String): String
}
Ошибка выдана: libencrypt.so" has unexpected e_machine: 62 (EM_X86_64)
Примечание. Я использую 64-битную среду Ubuntu 18.04 при создании общей библиотеки. Спасибо!