在源代码中(通过Android.mk)编译项目时,怎么将*so库编译进apk包
在源代码中(通过Android.mk)编译项目时,如何将*.so库编译进apk包
用Eclipse编译工程,若工程下有libs目录,会自动将里面的*.so库编译到apk包中。我现在需要用到*.so库和Android.mk文件编译工程,但用Eclipse编译时,Android.mk不起作用。
Android.mk好像只有在通过源代码编译工程时才起作用(我目前只发现这个办法),即在Linux环境下的Android源代码目录中,通过make或mmm命令编译。但通过mmm编译的工程,不会把工程下libs目前中的*.so库添加进apk包里,是不是要在Android.mk文件中添加一些申明什么的?
还有,想知道Android源代码中,重启手机的相关代码在哪个部分。
有了解的朋友请支个招啊!谢谢!
------解决方案--------------------
1、APK要使用.so包好像必须使用JNI,你参考android NDK编译你自己的程序 ;
2、如果你想在Android source里面添加你自己的library,你只需要在你本地模块Android.mk中指定LOCAL_LDLIBS就可以了,具体的你可以参考我的BLOG关于How to add another component to the build - Android.mk templates的部分:
http://hi.****.net/link.php?url=http://blog.****.net%2Fyili_xie
3、我不知道关机的代码具体在哪,但是你可以到android source的java目录里面去找,我可以告诉你java的目录:
框架的java source :
75 FRAMEWORKS_BASE_SUBDIRS := \
76 $(addsuffix /java, \
77 core \
78 graphics \
79 im \
80 location \
81 media \
82 opengl \
83 sax \
84 telephony \
85 wifi \
86 vpn \
87 keystore \
88 )
就是这些目录下的java目录~
默认APK的source :YourMenu/pacakges
------解决方案--------------------
给你看个我写的调用静态库和动态库的例子,是可以把所需要的库打进apk里的,以下为Android.mk中的一段
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
libnativehelper \
libcutils \
libutils
LOCAL_STATIC_LIBRARIES := \
libfreetype \
libt1
# Also need the JNI headers.
LOCAL_C_INCLUDES += \
$(JNI_H_INCLUDE) \
$(LOCAL_PATH)/include
LOCAL_CFLAGS += -O2
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_LDLIBS += -lpthread
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)
用Eclipse编译工程,若工程下有libs目录,会自动将里面的*.so库编译到apk包中。我现在需要用到*.so库和Android.mk文件编译工程,但用Eclipse编译时,Android.mk不起作用。
Android.mk好像只有在通过源代码编译工程时才起作用(我目前只发现这个办法),即在Linux环境下的Android源代码目录中,通过make或mmm命令编译。但通过mmm编译的工程,不会把工程下libs目前中的*.so库添加进apk包里,是不是要在Android.mk文件中添加一些申明什么的?
还有,想知道Android源代码中,重启手机的相关代码在哪个部分。
有了解的朋友请支个招啊!谢谢!
------解决方案--------------------
1、APK要使用.so包好像必须使用JNI,你参考android NDK编译你自己的程序 ;
2、如果你想在Android source里面添加你自己的library,你只需要在你本地模块Android.mk中指定LOCAL_LDLIBS就可以了,具体的你可以参考我的BLOG关于How to add another component to the build - Android.mk templates的部分:
http://hi.****.net/link.php?url=http://blog.****.net%2Fyili_xie
3、我不知道关机的代码具体在哪,但是你可以到android source的java目录里面去找,我可以告诉你java的目录:
框架的java source :
75 FRAMEWORKS_BASE_SUBDIRS := \
76 $(addsuffix /java, \
77 core \
78 graphics \
79 im \
80 location \
81 media \
82 opengl \
83 sax \
84 telephony \
85 wifi \
86 vpn \
87 keystore \
88 )
就是这些目录下的java目录~
默认APK的source :YourMenu/pacakges
------解决方案--------------------
给你看个我写的调用静态库和动态库的例子,是可以把所需要的库打进apk里的,以下为Android.mk中的一段
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
libnativehelper \
libcutils \
libutils
LOCAL_STATIC_LIBRARIES := \
libfreetype \
libt1
# Also need the JNI headers.
LOCAL_C_INCLUDES += \
$(JNI_H_INCLUDE) \
$(LOCAL_PATH)/include
LOCAL_CFLAGS += -O2
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_LDLIBS += -lpthread
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)