[android] Added jni support to YoPme

This commit is contained in:
Alex Zolotarev 2013-09-04 17:11:13 +03:00 committed by Alex Zolotarev
parent ccaa2ad56f
commit d6fca19b71
5 changed files with 182 additions and 11 deletions

1
android/YoPme/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
libs

View file

@ -0,0 +1,142 @@
LOCAL_PATH := $(call my-dir)
OMIM_CONFIG := release
ifeq ($(NDK_DEBUG),1)
OMIM_CONFIG := debug
else
ifeq ($(PRODUCTION),1)
OMIM_CONFIG := production
LOCAL_CFLAGS += -fvisibility=hidden
LOCAL_CPPFLAGS += -fvisibility-inlines-hidden
endif
LOCAL_CFLAGS += -O3
endif
$(info "***** Building $(OMIM_CONFIG) configuration for $(TARGET_ARCH_ABI) *****")
# Build static libraries
BUILD_RESULT := $(shell (bash $(LOCAL_PATH)/../../../tools/autobuild/android.sh $(OMIM_CONFIG) $(TARGET_ARCH_ABI) $(APP_PLATFORM)))
####################################################################################
# List all static libraries which are built using our own scripts in tools/android #
####################################################################################
MY_PREBUILT_LIBS_PATH := ../../../../omim-android-$(OMIM_CONFIG)-$(TARGET_ARCH_ABI)/out/$(OMIM_CONFIG)
include $(CLEAR_VARS)
LOCAL_MODULE := protobuf
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libprotobuf.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := tomcrypt
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libtomcrypt.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := jansson
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libjansson.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := bzip2
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libbzip2.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := zlib
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libzlib.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := fribidi
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libfribidi.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := freetype
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libfreetype.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := expat
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libexpat.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := base
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libbase.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := coding
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libcoding.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := geometry
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libgeometry.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := anim
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libanim.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := platform
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libplatform.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := graphics
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libgraphics.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := indexer
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libindexer.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := storage
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libstorage.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := search
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libsearch.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := gui
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libgui.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := map
LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/libmap.a
include $(PREBUILT_STATIC_LIBRARY)
########################### Main YoPMe module ############################
include $(CLEAR_VARS)
LOCAL_MODULE := yopme
LOCAL_STATIC_LIBRARIES := map gui search storage indexer graphics platform anim geometry coding base expat freetype fribidi zlib bzip2 jansson tomcrypt protobuf
LOCAL_CFLAGS := -ffunction-sections -fdata-sections -Wno-psabi
TARGET_PLATFORM := android-15
# Add your headers below
LOCAL_HEADER_FILES :=
# Add your sources below
LOCAL_SRC_FILES :=
LOCAL_LDLIBS := -llog -lGLESv2
LOCAL_LDLIBS += -Wl,--gc-sections
include $(BUILD_SHARED_LIBRARY)

View file

@ -0,0 +1,22 @@
NDK_TOOLCHAIN_VERSION := 4.6
APP_PLATFORM := android-15
APP_ABI := armeabi-v7a
APP_STL := gnustl_static
LOCAL_PATH := $(call my-dir)
APP_CFLAGS += -I$(LOCAL_PATH)/../../../3party/boost
APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti
ifeq ($(NDK_DEBUG),1)
APP_OPTIM := debug
APP_CFLAGS += -DDEBUG -D_DEBUG
APP_ABI := armeabi-v7a x86
else
APP_OPTIM := release
APP_CFLAGS += -DRELEASE -D_RELEASE
ifeq ($(PRODUCTION),1)
APP_CFLAGS += -DOMIM_PRODUCTION
endif
endif

View file

@ -6,7 +6,7 @@ set -e -u -x
LOCAL_DIRNAME="${PWD}/$(dirname "$0")"
if [[ $# < 1 ]]; then
echo "Usage: $0 <debug|release|production> [clean]"
echo "Usage: $0 <debug|release|production> [armeabi|armeabi-v7a|mips|x86] [android-PLATFORM_NUMBER]"
exit 1
fi
CONFIGURATION="$1"
@ -21,16 +21,19 @@ SHADOW_DIR_BASE="$LOCAL_DIRNAME/../../../omim-android"
# Try to read ndk root path from android/local.properties file
export NDK_ROOT=$(GetNdkRoot) || ( echo "Can't read NDK root path from android/local.properties"; exit 1 )
export NDK_HOST=$(GetNdkHost) || ( echo "Can't get your OS type, please check tools/autobuild/ndk_helper.sh script"; exit 1 )
if [[ $# > 2 ]] ; then
export NDK_PLATFORM=$3
fi
if [[ $# > 1 ]] ; then
NDK_ABI_LIST=$2
else
NDK_ABI_LIST=(armeabi armeabi-v7a mips x86)
fi
NDK_ABI_LIST=(armeabi armeabi-v7a mips x86)
for abi in "${NDK_ABI_LIST[@]}"; do
SHADOW_DIR="${SHADOW_DIR_BASE}-${CONFIGURATION}-${abi}"
if [[ $# > 1 && "$2" == "clean" ]] ; then
echo "Cleaning $CONFIGURATION-$abi configuration..."
rm -rf "$SHADOW_DIR"
else
export NDK_ABI="$abi"
BuildQt "$SHADOW_DIR" "$MKSPEC" "$QMAKE_PARAMS" || ( echo "ERROR while building $abi config"; exit 1 )
fi
export NDK_ABI="$abi"
BuildQt "$SHADOW_DIR" "$MKSPEC" "$QMAKE_PARAMS" 1>&2 || ( echo "ERROR while building $abi config"; exit 1 )
done

View file

@ -11,11 +11,14 @@ include(qws.conf)
# NDK_HOST should be defined for qmake
# NDK_ABI optionally can be defined to armeabi, armeabi-v7a, mips or x86, by default armeabi will be used
ANDROID_TARGET_ABI=$$(NDK_ABI)
ANDROID_TARGET_ABI = $$(NDK_ABI)
# by default use armv5 architecture
isEmpty( ANDROID_TARGET_ABI ): ANDROID_TARGET_ABI = armeabi
ANDROID_PLATFORM = android-5
ANDROID_PLATFORM = $$(NDK_PLATFORM)
# by default use android-5 platform
isEmpty( ANDROID_PLATFORM ): ANDROID_PLATFORM = android-5
TOOLCHAIN_VERSION = 4.6
contains(ANDROID_TARGET_ABI, x86) {