
Android
makefileLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := testaLOCAL_SRC_FILES := testa.cinclude $(BUILD_SHARED_LIBRARY)该文件描述了如何构建一个名为"testa"的动态库,并指定了其源文件。接下来,我们需要将生成的libtesta.so文件添加到E:workspaceAndroid-ndk-r8eplatformsAndroid-8arch-armusrlib目录中。然后,在项目B中引入这个动态库。在项目B的jni目录下,我们创建一个名为“testa”的.mk文件:makefileLOCAL_PATH := $(call my-dir)#include $(CLEAR_VARS)LOCAL_MODULE := libtestaLOCAL_SRC_FILES := libtesta.soinclude $(PREBUILT_SHARED_LIBRARY)该文件描述了如何构建一个名为"libtesta"的共享库,并指定了其源文件。同时,在该目录下也要放置libtesta.so文件。最后,在项目B的jni目录下创建一个名为“testb”的.mk文件:makefileLOCAL_PATH := $(call my-dir)#include $(CLEAR_VARS)LOCAL_LDLIBS += -ltestaLOCAL_MODULE := testbLOCAL_SRC_FILES := testb.cinclude $(BUILD_SHARED_LIBRARY)该文件描述了如何构建一个名为"testb"的共享库,并指定了其源文件。同时,我们还添加了"testa"库到链接器选项中。现在,我们来看一下项目B中使用动态库的方法。在Eclipse中打包APK时,所有静态和动态链接库都会被包含在APK文件中。如果没有prebuilt步骤,那么在打包时会漏掉libtesta.so。但是编译仍然可以成功通过,因为编译器读取的是编译系统库路径(LOCAL_LDLIBS += -ltesta)。现在,我们来编写Java代码来加载动态库:JavaSystem.loadLibrary("testa");System.loadLibrary("testb");需要注意的是,在使用动态库之前,请确保已经将这两个库都放置在正确的位置,并且已经成功地构建和链接了它们。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号