我的项目必须使用 AAR 作为依赖项。AAR 打包了一些类和一个 jni 库 (eglibdemo.so)。jni 库在我的项目中用作 LOCAL_SHARED_LIBRARIES。
对于gradle 2.2.3的Android插件,我采取以下两种方式:
1.手动解压AAR,将libdemo.so放在Android.mk相关目录下:
###########################prebuild libdemo.so##############################
include $(CLEAR_VARS)
LOCAL_MODULE := libdemo LOCAL_SRC_FILES := libdemo.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) include
$(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
2.AAR 在 build/intermediate 中未打包。所以我在Android.mk中设置了libdemo.so的路径:
###########################prebuild libdemo.so##############################
include $(CLEAR_VARS)
LOCAL_MODULE := libdemo
AAR_LIB_PATH = $(LOCAL_PATH)/../../../build/intermediates/exploded-aar/vm/jni/armeabi
LOCAL_SRC_FILES := $(AAR_LIB_PATH)/libdemo.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
但是对于gradle 2.3.1的Android插件,规则改变了吗?
构建缓存:存储 Android 插件在构建项目时生成的某些输出(例如未打包的 AAR 和 pre-dexed 远程依赖项)。
我指定了一个相对于 gradle.properties 文件的路径。
android.buildCacheDir=buildcache
Run Code Online (Sandbox Code Playgroud)
它有效,我可以看到缓存,但我找不到 libdemo.so 直接构建缓存:
我现在不能使用 WAY 2。有没有更方便的方法来链接jni库?
android ×1