如何编写Android.mk脚本?
How to write the Android.mk script?
jni/
Android.mk -> libmyso.so
folder1/
Android.mk -> libso1.so
folder2/
Android.mk -> libso2.so
如何将libso1.so和libso2.so编译成libmyso.so?这样,我只需要在java代码中加载libmyso.so,而不必分别加载libso1.so和libso2.so。
如果 libso1.so
和 libso2.so
是 libmyso.so
的依赖项(例如通过 Android.mk
中的 LOCAL_SHARED_LIBRARIES
声明,它们将在 [=29] 上自动加载=] 5.0 - 您需要以相反的顺序加载它们(首先加载依赖项,然后 libmyso.so
本身)这一事实只是旧 Android 版本中链接器的限制。
如果您只想拥有一个包含所有代码的 .so
文件,请将 Android.mk
更改为 libso1.so
并将 libso2.so
更改为 BUILD_STATIC_LIBRARY
而不是 BUILD_SHARED_LIBRARY
,并通过 LOCAL_STATIC_LIBRARIES
而不是 LOCAL_SHARED_LIBRARIES
来引用它们。然后它们将被内置,您只有一个 .so
文件可以分发和加载。
jni/
Android.mk -> libmyso.so
folder1/
Android.mk -> libso1.so
folder2/
Android.mk -> libso2.so
如何将libso1.so和libso2.so编译成libmyso.so?这样,我只需要在java代码中加载libmyso.so,而不必分别加载libso1.so和libso2.so。
如果 libso1.so
和 libso2.so
是 libmyso.so
的依赖项(例如通过 Android.mk
中的 LOCAL_SHARED_LIBRARIES
声明,它们将在 [=29] 上自动加载=] 5.0 - 您需要以相反的顺序加载它们(首先加载依赖项,然后 libmyso.so
本身)这一事实只是旧 Android 版本中链接器的限制。
如果您只想拥有一个包含所有代码的 .so
文件,请将 Android.mk
更改为 libso1.so
并将 libso2.so
更改为 BUILD_STATIC_LIBRARY
而不是 BUILD_SHARED_LIBRARY
,并通过 LOCAL_STATIC_LIBRARIES
而不是 LOCAL_SHARED_LIBRARIES
来引用它们。然后它们将被内置,您只有一个 .so
文件可以分发和加载。