Ark*_*ady 6 android native android-source
I've built an AOSP system service following this tutorial: http://www.androidenea.com/2009/12/adding-system-server-to-android.html
现在我想使用预编译的.so文件,无法确定放在哪里,以便我的代码能够访问它.
所以,我在framewaork/base/libs/my_folder /创建了一个文件夹,并将两个文件放在一起:my_lib.so android.mk
android.mk的内容是:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= my_lib
LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
make运行没有错误,但是当代码尝试通过以下方式加载库时:System.loadLibrary("my_lib");
我收到了这个错误:
06-27 13:58:55.581:E/AndroidRuntime(806):引起:java.lang.UnsatisfiedLinkError:找不到库my_lib; 试过[/vendor/lib/my_lib.so,/system/lib/my_lib.so]
所以我将so文件添加到out/target/product/generic/system/lib但是得到了同样的错误.
那么我应该在哪里放置my_lib.so文件?它是一个android.mk需要它吗?也许我应该在系统的某个地方注册?
提前致谢!
Ark*_*ady 10
所以答案很简单.我真的需要将我的lib复制到系统映像到system/lib文件夹,因为make命令不会将它从out/target/product/generic/system/lib复制到system.img
诀窍是添加这一行
PRODUCT_COPY_FILES += $(LOCAL_PATH)/my_lib.so:system/lib/my_lib.so
Run Code Online (Sandbox Code Playgroud)
到full.mk文件.它的位置是:android-source/build/target/product也把my_lib.so放在它附近(如路径所示)
如果您计划在真实设备上运行映像,请在设备名称定义后添加此行.f.ex. 如果您在Nexus 4上运行,请将其放在android-source/device/lge/mako/full_mako.mk
| 归档时间: |
|
| 查看次数: |
2600 次 |
| 最近记录: |