mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-16 18:56:52 +02:00
new trunk (base for 1.5)
windows build only
This commit is contained in:
276
doc/99300-AndroidPlatformNotes.page
Normal file
276
doc/99300-AndroidPlatformNotes.page
Normal file
@@ -0,0 +1,276 @@
|
||||
POCO C++ Libraries Android Platform Notes
|
||||
AAAIntroduction
|
||||
|
||||
!!!Introduction
|
||||
|
||||
Starting with release 1.4.2 the POCO C++ Libraries can be used on
|
||||
Android, using the NDK r6. The gmake-based build system (also used
|
||||
for Mac OS X, Linux, etc.) is used to build the libraries.
|
||||
A standalone "customized" toolchain for Android (see below) is required.
|
||||
|
||||
|
||||
!!!Requirements
|
||||
|
||||
!!Standalone Toolchain
|
||||
|
||||
Please refer to the Android NDK Dev Guide document "Standalone Toolchain", section 3,
|
||||
(<*docs/STANDALONE-TOOLCHAIN.html*>) for instructions how to create a customized toolchain.
|
||||
|
||||
Typically, you'll run a command like:
|
||||
|
||||
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-8 --install-dir=$HOME/my-android-toolchain
|
||||
----
|
||||
|
||||
Then, add the directory containing the toolchain executables to your <[$PATH]>:
|
||||
|
||||
export PATH=$PATH:$HOME/my-android-toolchain/bin
|
||||
----
|
||||
|
||||
|
||||
!!Compiling the POCO C++ Libraries
|
||||
|
||||
When compiling the POCO C++ Libraries for a Android target, as well as
|
||||
when including POCO C++ Libraries headers in a project for a Android
|
||||
target, the preprocessor macro <[POCO_ANDROID]> must be defined. This is
|
||||
because the Android NDK GCC compiler does not provide a predefined macro that
|
||||
allows for reliable detection of an Android target.
|
||||
|
||||
|
||||
!!!Restrictions
|
||||
|
||||
For the most part, the Linux and Android ports of the POCO C++ Libraries are very similar.
|
||||
However, there are a few restrictions due to the Binoic C library used by Android.
|
||||
|
||||
!!Poco::NamedEvent and Poco::NamedMutex
|
||||
|
||||
These classes are not supported on Android. While Poco::NamedEvent and
|
||||
Poco::NamedMutex objects can be created, any attempt to call a method
|
||||
of these classes will result in a Poco::NotImplementedException being thrown.
|
||||
|
||||
!!Poco::SharedMemory
|
||||
|
||||
Shared memory is not supported on Android.
|
||||
|
||||
!!Poco::FPEnvironment
|
||||
|
||||
The Poco::FPEnvironment class is not available on Android and
|
||||
cannot be used.
|
||||
|
||||
!!Poco::RWLock
|
||||
|
||||
On Android, Poco::RWLock is an ordinary mutex.
|
||||
|
||||
|
||||
!!!Build Notes
|
||||
|
||||
!!Using POCO's GNU Make-based Build System
|
||||
|
||||
The <*Android*> build configuration (located in <*$POCO_BASE/build/config/Android*>)
|
||||
is used to cross-build for Android from a Linux or Mac OS X host.
|
||||
|
||||
To build the POCO C++ Libraries (static) on a Linux or Mac OS X host:
|
||||
|
||||
./configure --config=Android --no-samples --no-tests
|
||||
./make -s -j4
|
||||
----
|
||||
|
||||
The default configuration builds for the <*armeabi*> platform ABI. To build for
|
||||
<*armeabi-v7a*>, set the <[ANDROID_ABI]> make variable to <[armeabi-v7a]>:
|
||||
|
||||
./make -s -j4 ANDROID_ABI=armeabi-v7a
|
||||
----
|
||||
|
||||
The build configuration also supports setting the <[ANDROID_ABI]> to <[x86]>,
|
||||
but the NDK r6 standalone toolchain for x86 generated by <*make-standalone-toolchain.sh*>
|
||||
lacks the C++ STL headers, so this does not work.
|
||||
|
||||
Depending on your specific requirements (e.g., no ARM architecture, etc.), it may be necessary
|
||||
to modify the Android build configuration, or create a new one based on it.
|
||||
|
||||
See the [[99150-GMakeBuildNotes.html GNU Make Build System]] document for more information.
|
||||
|
||||
|
||||
!!Using Android's Build System
|
||||
|
||||
Alternatively to POCO's build system, Android's build system can be used to build the
|
||||
POCO C++ Libraries. A sample makefile for the Foundation library is shown below.
|
||||
|
||||
#
|
||||
# Android.mk
|
||||
#
|
||||
# POCO Foundation
|
||||
#
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := PocoFoundation
|
||||
LOCAL_PATH := $(call my-dir)/src
|
||||
LOCAL_CFLAGS := -DPOCO_ANDROID -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY
|
||||
LOCAL_CPPFLAGS := -frtti -fexceptions
|
||||
LOCAL_C_INCLUDES := $(call my-dir)/include
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
AbstractObserver.cpp \
|
||||
ActiveDispatcher.cpp \
|
||||
adler32.c \
|
||||
ArchiveStrategy.cpp \
|
||||
Ascii.cpp \
|
||||
ASCIIEncoding.cpp \
|
||||
AsyncChannel.cpp \
|
||||
AtomicCounter.cpp \
|
||||
Base64Decoder.cpp \
|
||||
Base64Encoder.cpp \
|
||||
BinaryReader.cpp \
|
||||
BinaryWriter.cpp \
|
||||
Bugcheck.cpp \
|
||||
ByteOrder.cpp \
|
||||
Channel.cpp \
|
||||
Checksum.cpp \
|
||||
compress.c \
|
||||
Condition.cpp \
|
||||
Configurable.cpp \
|
||||
ConsoleChannel.cpp \
|
||||
CountingStream.cpp \
|
||||
crc32.c \
|
||||
DateTime.cpp \
|
||||
DateTimeFormat.cpp \
|
||||
DateTimeFormatter.cpp \
|
||||
DateTimeParser.cpp \
|
||||
Debugger.cpp \
|
||||
deflate.c \
|
||||
DeflatingStream.cpp \
|
||||
DigestEngine.cpp \
|
||||
DigestStream.cpp \
|
||||
DirectoryIterator.cpp \
|
||||
DynamicAny.cpp \
|
||||
DynamicAnyHolder.cpp \
|
||||
Environment.cpp \
|
||||
ErrorHandler.cpp \
|
||||
Event.cpp \
|
||||
EventArgs.cpp \
|
||||
Exception.cpp \
|
||||
File.cpp \
|
||||
FileChannel.cpp \
|
||||
FileStream.cpp \
|
||||
FileStreamFactory.cpp \
|
||||
Format.cpp \
|
||||
Formatter.cpp \
|
||||
FormattingChannel.cpp \
|
||||
FPEnvironment.cpp \
|
||||
Glob.cpp \
|
||||
gzio.c \
|
||||
Hash.cpp \
|
||||
HashStatistic.cpp \
|
||||
HexBinaryDecoder.cpp \
|
||||
HexBinaryEncoder.cpp \
|
||||
infback.c \
|
||||
inffast.c \
|
||||
inflate.c \
|
||||
InflatingStream.cpp \
|
||||
inftrees.c \
|
||||
Latin1Encoding.cpp \
|
||||
Latin9Encoding.cpp \
|
||||
LineEndingConverter.cpp \
|
||||
LocalDateTime.cpp \
|
||||
LogFile.cpp \
|
||||
Logger.cpp \
|
||||
LoggingFactory.cpp \
|
||||
LoggingRegistry.cpp \
|
||||
LogStream.cpp \
|
||||
Manifest.cpp \
|
||||
MD2Engine.cpp \
|
||||
MD4Engine.cpp \
|
||||
MD5Engine.cpp \
|
||||
MemoryPool.cpp \
|
||||
MemoryStream.cpp \
|
||||
Message.cpp \
|
||||
Mutex.cpp \
|
||||
NestedDiagnosticContext.cpp \
|
||||
Notification.cpp \
|
||||
NotificationCenter.cpp \
|
||||
NotificationQueue.cpp \
|
||||
NullChannel.cpp \
|
||||
NullStream.cpp \
|
||||
NumberFormatter.cpp \
|
||||
NumberParser.cpp \
|
||||
Path.cpp \
|
||||
PatternFormatter.cpp \
|
||||
pcre_chartables.c \
|
||||
pcre_compile.c \
|
||||
pcre_exec.c \
|
||||
pcre_fullinfo.c \
|
||||
pcre_globals.c \
|
||||
pcre_maketables.c \
|
||||
pcre_newline.c \
|
||||
pcre_ord2utf8.c \
|
||||
pcre_study.c \
|
||||
pcre_tables.c \
|
||||
pcre_try_flipped.c \
|
||||
pcre_ucd.c \
|
||||
pcre_valid_utf8.c \
|
||||
pcre_xclass.c \
|
||||
Pipe.cpp \
|
||||
PipeImpl.cpp \
|
||||
PipeStream.cpp \
|
||||
PriorityNotificationQueue.cpp \
|
||||
Process.cpp \
|
||||
PurgeStrategy.cpp \
|
||||
Random.cpp \
|
||||
RandomStream.cpp \
|
||||
RefCountedObject.cpp \
|
||||
RegularExpression.cpp \
|
||||
RotateStrategy.cpp \
|
||||
Runnable.cpp \
|
||||
RWLock.cpp \
|
||||
Semaphore.cpp \
|
||||
SHA1Engine.cpp \
|
||||
SharedLibrary.cpp \
|
||||
SharedMemory.cpp \
|
||||
SignalHandler.cpp \
|
||||
SimpleFileChannel.cpp \
|
||||
SplitterChannel.cpp \
|
||||
Stopwatch.cpp \
|
||||
StreamChannel.cpp \
|
||||
StreamConverter.cpp \
|
||||
StreamCopier.cpp \
|
||||
StreamTokenizer.cpp \
|
||||
String.cpp \
|
||||
StringTokenizer.cpp \
|
||||
SynchronizedObject.cpp \
|
||||
SyslogChannel.cpp \
|
||||
Task.cpp \
|
||||
TaskManager.cpp \
|
||||
TaskNotification.cpp \
|
||||
TeeStream.cpp \
|
||||
TemporaryFile.cpp \
|
||||
TextBufferIterator.cpp \
|
||||
TextConverter.cpp \
|
||||
TextEncoding.cpp \
|
||||
TextIterator.cpp \
|
||||
Thread.cpp \
|
||||
ThreadLocal.cpp \
|
||||
ThreadPool.cpp \
|
||||
ThreadTarget.cpp \
|
||||
TimedNotificationQueue.cpp \
|
||||
Timer.cpp \
|
||||
Timespan.cpp \
|
||||
Timestamp.cpp \
|
||||
Timezone.cpp \
|
||||
Token.cpp \
|
||||
trees.c \
|
||||
UnicodeConverter.cpp \
|
||||
Unicode.cpp \
|
||||
URI.cpp \
|
||||
URIStreamFactory.cpp \
|
||||
URIStreamOpener.cpp \
|
||||
UTF8Encoding.cpp \
|
||||
UTF8String.cpp \
|
||||
UTF16Encoding.cpp \
|
||||
UUID.cpp \
|
||||
UUIDGenerator.cpp \
|
||||
Void.cpp \
|
||||
Windows1252Encoding.cpp \
|
||||
zutil.c
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
----
|
Reference in New Issue
Block a user