2010年4月27日星期二

Part II - Build Android VNC Server with Android NDK on Windows 7

Solution II : use of android source code and ndk to build libjpeg.a and libz.so

  1. Download android source from android.com
  2. from android source folder you downloaded (e.g. ~/mydroid), copy the folder jpeg and zlib (~/mydroid/external/jpeg and mydroid/external/zlib) to the directory ndk-source/apps/androidvncserver/project/jni/external.

Edit the file ndk-source/apps/androidvncserver/project/jni/Android.mk as:



#
# Build libjpeg.a
#

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_ARM_MODE := arm

LOCAL_SRC_FILES := \
jpeg/jcapimin.c jpeg/jcapistd.c jpeg/jccoefct.c jpeg/jccolor.c jpeg/jcdctmgr.c jpeg/jchuff.c \
jpeg/jcinit.c jpeg/jcmainct.c jpeg/jcmarker.c jpeg/jcmaster.c jpeg/jcomapi.c jpeg/jcparam.c \
jpeg/jcphuff.c jpeg/jcprepct.c jpeg/jcsample.c jpeg/jctrans.c jpeg/jdapimin.c jpeg/jdapistd.c \
jpeg/jdatadst.c jpeg/jdatasrc.c jpeg/jdcoefct.c jpeg/jdcolor.c jpeg/jddctmgr.c jpeg/jdhuff.c \
jpeg/jdinput.c jpeg/jdmainct.c jpeg/jdmarker.c jpeg/jdmaster.c jpeg/jdmerge.c jpeg/jdphuff.c \
jpeg/jdpostct.c jpeg/jdsample.c jpeg/jdtrans.c jpeg/jerror.c jpeg/jfdctflt.c jpeg/jfdctfst.c \
jpeg/jfdctint.c jpeg/jidctflt.c jpeg/jidctred.c jpeg/jquant1.c \
jpeg/jquant2.c jpeg/jutils.c jpeg/jmemmgr.c \
jpeg/jmem-android.c

# the assembler is only for the ARM version, don't break the Linux sim
ifneq ($(TARGET_ARCH),arm)
ANDROID_JPEG_NO_ASSEMBLER := true
endif

# temp fix until we understand why this broke cnn.com
#ANDROID_JPEG_NO_ASSEMBLER := true

ifeq ($(strip $(ANDROID_JPEG_NO_ASSEMBLER)),true)
LOCAL_SRC_FILES += jpeg/jidctint.c jpeg/jidctfst.c
else
LOCAL_SRC_FILES += jpeg/jidctint.c jpeg/jidctfst.S
endif

LOCAL_CFLAGS += -DAVOID_TABLES
LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays
#LOCAL_CFLAGS += -march=armv6j

LOCAL_MODULE:= libjpeg

include $(BUILD_STATIC_LIBRARY)


#
# Build libz.so
#
# measurements show that the ARM version of ZLib is about x1.17 faster
# than the thumb one...

include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm

zlib_files := \
zlib/adler32.c \
zlib/compress.c \
zlib/crc32.c \
zlib/gzio.c \
zlib/uncompr.c \
zlib/deflate.c \
zlib/trees.c \
zlib/zutil.c \
zlib/inflate.c \
zlib/infback.c \
zlib/inftrees.c \
zlib/inffast.c

LOCAL_MODULE := libz
LOCAL_CFLAGS += -O3 -DUSE_MMAP
LOCAL_SRC_FILES := $(zlib_files)

include $(BUILD_SHARED_LIBRARY)


#
# Below are original Android.mk file from androidvncserver,
# so you can build the entire executable androidvncserver at once
#

...



Now, last step is to run make APP=androidvncserver in your cygwin command window

0 意見:

最酷的Web相片欣賞工具 CoolIris