For example let build static library called "some".

**LibSome Android.mk**

```
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := some
LOCAL_SRC_FILES := some.c
include $(BUILD_STATIC_LIBRARY)

```

**LibSome Application.mk**

```
APP_MODULES := somelib
APP_OPTIM  := release

```

And get armeabi version of our lib in *LibSome/obj/local/armeabi/libsome.a*

So now we need to drop our lib to mainProject jni folder and use it

**MainProject Android.mk**

```
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := some
LOCAL_SRC_FILES := libsome.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/some
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := mainProject
LOCAL_SRC_FILES := mainProject.c
LOCAL_STATIC_LIBRARIES := some
include $(BUILD_SHARED_LIBRARY)

```

But there are different ABI like mips, x86, armeabi-v7a and we can get all supported versions of somelib by current ndk just adding

```
APP_ABI:= all 

```

to SomeLib Application.mk, so we get *LibSome/obj/local/armeabi-v7a/libsome.a*, *LibSome/obj/local/x86/libsome.a* etc

**Main question** - do i really need to think about different ABI and create project for every supported ABI like mainProjectx86, mainProjectMIPS with different ABI builded libs?

And secondary questions are:

If i build project for armeabi ABI (default) how many devices will be cut out? Can armeabi-v7a ABI device run armeabi ABI app? 

If there is a way to have one project with different set of pre-builded libs? So if you build mainProject for ameabi-v7a it will use armeabi-v7a libs and so on?