1
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。

4

1 回答 1

1

如果libso1.so并且libso2.so是 的依赖项libmyso.so(例如通过LOCAL_SHARED_LIBRARIESin声明Android.mk,它们将在 Android 5.0 上自动加载 - 您需要以相反的顺序加载它们(首先加载依赖项,然后加载libmyso.so自身)的事实只是旧 Android 中链接器的限制版本。

如果您只想拥有一个.so包含所有代码的文件,请更改Android.mkforlibso1.solibso2.soto doBUILD_STATIC_LIBRARY而不是,并通过而不是来BUILD_SHARED_LIBRARY引用它们。然后它们将被内置,您只有一个文件可以分发和加载。LOCAL_STATIC_LIBRARIESLOCAL_SHARED_LIBRARIES.so

于 2015-05-27T09:21:22.337 回答