首页 > 代码库 > Android Studio 2.2 External Build

Android Studio 2.2 External Build

今天在用studio写Native程序时发现2.2版本引入了一个 External Build来进行Native项目的构建。

最直观的表现就是c/c++的源码文件不用跟java文件在一个项目文件夹下了。而且与之前的在gradle中配置,然后自动生成makefile相比,灵活度大大增加,再也不用蛋疼到处找makefile对应的gradle语句了。

使用方法如下:

可以在任意文件夹用Android.mk跟Application.mk组织c/c++代码

如我的文件结构为:

---hook
---Android.mk
---Application.mk
---hook_d
------Android.mk
------main.c
---hook_so
------Android.mk
------main.c

在sudio新建一个jni文件夹,在Android视图模式下会显示为cpp文件夹

右键选择 Link C++ Project with Gradle

Builde System有 CMake 跟 ndk-build可选,如果用ndk-build选项的话要选择native项目最顶级的Android.mk文件

技术分享

导入之后效果如下

技术分享

 

 

 

最后再提一下刚学会的一个项目编译多个so文件的方法

---hook
---Android.mk
---Application.mk
---hook_d
------Android.mk
------main.c
---hook_so
------Android.mk
------main.c

拿上边的文件结构为例

hook/Androi.mk

include $(call all-subdir-makefiles)

hook/hook_d/Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS += -pie -fPIE  
LOCAL_LDFLAGS += -pie -fPIE -llog
TARGET_PLATFORM := android-22 
LOCAL_MODULE := hook_d
LOCAL_SRC_FILES := main.c
include $(BUILD_EXECUTABLE)

hook/hook_so/Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
ARGET_PLATFORM := android-22
LOCAL_MODULE := hook_so
LOCAL_SRC_FILES := main.c
include $(BUILD_SHARED_LIBRARY)         

原理就是 all-subdir-makefiles 这个宏会返回只文件夹下所有Android.mk文件的路径

Android Studio 2.2 External Build