diff options
author | Bjorn Bringert <bringert@android.com> | 2013-04-29 10:10:51 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-04-29 10:10:52 +0000 |
commit | 7bb9471ea7841dee087857b0123725bfceb83bb3 (patch) | |
tree | 832ba8c2ecdcc245648c4e16ff898bbbdd49ec8f /tools | |
parent | eda67299cf14de315af12cbf8d5024e02fa5b1aa (diff) | |
parent | fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4 (diff) | |
download | frameworks_base-7bb9471ea7841dee087857b0123725bfceb83bb3.zip frameworks_base-7bb9471ea7841dee087857b0123725bfceb83bb3.tar.gz frameworks_base-7bb9471ea7841dee087857b0123725bfceb83bb3.tar.bz2 |
Merge "Allow compiling aapt for the device"
Diffstat (limited to 'tools')
-rw-r--r-- | tools/aapt/Android.mk | 43 | ||||
-rw-r--r-- | tools/aapt/XMLNode.cpp | 2 | ||||
-rw-r--r-- | tools/aapt/pseudolocalize.cpp | 119 | ||||
-rw-r--r-- | tools/aapt/pseudolocalize.h | 9 |
4 files changed, 167 insertions, 6 deletions
diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk index 9b1658a..7934757 100644 --- a/tools/aapt/Android.mk +++ b/tools/aapt/Android.mk @@ -7,10 +7,8 @@ # This tool is prebuilt if we're doing an app-only build. ifeq ($(TARGET_BUILD_APPS),) -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) -LOCAL_SRC_FILES := \ +aapt_src_files := \ AaptAssets.cpp \ Command.cpp \ CrunchCache.cpp \ @@ -24,23 +22,27 @@ LOCAL_SRC_FILES := \ ResourceTable.cpp \ Images.cpp \ Resource.cpp \ + pseudolocalize.cpp \ SourcePos.cpp \ ZipEntry.cpp \ ZipFile.cpp +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(aapt_src_files) LOCAL_CFLAGS += -Wno-format-y2k ifeq (darwin,$(HOST_OS)) LOCAL_CFLAGS += -D_DARWIN_UNLIMITED_STREAMS endif +LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS LOCAL_C_INCLUDES += external/libpng LOCAL_C_INCLUDES += external/zlib -LOCAL_C_INCLUDES += build/libs/host/include LOCAL_STATIC_LIBRARIES := \ - libhost \ libandroidfw \ libutils \ libcutils \ @@ -64,4 +66,35 @@ LOCAL_MODULE := aapt include $(BUILD_HOST_EXECUTABLE) +# aapt for running on the device +# ========================================================= +ifneq ($(SDK_ONLY),true) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(aapt_src_files) + +LOCAL_MODULE := aapt + +LOCAL_C_INCLUDES += bionic +LOCAL_C_INCLUDES += bionic/libstdc++/include +LOCAL_C_INCLUDES += external/stlport/stlport +LOCAL_C_INCLUDES += external/libpng +LOCAL_C_INCLUDES += external/zlib + +LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS +LOCAL_CFLAGS += -Wno-non-virtual-dtor + +LOCAL_STATIC_LIBRARIES := \ + libstlport_static \ + libandroidfw \ + libutils \ + libcutils \ + libexpat_static \ + libpng \ + liblog \ + libz + +include $(BUILD_EXECUTABLE) +endif + endif # TARGET_BUILD_APPS diff --git a/tools/aapt/XMLNode.cpp b/tools/aapt/XMLNode.cpp index dcbe7db..a663ad5 100644 --- a/tools/aapt/XMLNode.cpp +++ b/tools/aapt/XMLNode.cpp @@ -6,8 +6,8 @@ #include "XMLNode.h" #include "ResourceTable.h" +#include "pseudolocalize.h" -#include <host/pseudolocalize.h> #include <utils/ByteOrder.h> #include <errno.h> #include <string.h> diff --git a/tools/aapt/pseudolocalize.cpp b/tools/aapt/pseudolocalize.cpp new file mode 100644 index 0000000..9e50c5a --- /dev/null +++ b/tools/aapt/pseudolocalize.cpp @@ -0,0 +1,119 @@ +#include "pseudolocalize.h" + +using namespace std; + +static const char* +pseudolocalize_char(char c) +{ + switch (c) { + case 'a': return "\xc4\x83"; + case 'b': return "\xcf\x84"; + case 'c': return "\xc4\x8b"; + case 'd': return "\xc4\x8f"; + case 'e': return "\xc4\x99"; + case 'f': return "\xc6\x92"; + case 'g': return "\xc4\x9d"; + case 'h': return "\xd1\x9b"; + case 'i': return "\xcf\x8a"; + case 'j': return "\xc4\xb5"; + case 'k': return "\xc4\xb8"; + case 'l': return "\xc4\xba"; + case 'm': return "\xe1\xb8\xbf"; + case 'n': return "\xd0\xb8"; + case 'o': return "\xcf\x8c"; + case 'p': return "\xcf\x81"; + case 'q': return "\x51"; + case 'r': return "\xd2\x91"; + case 's': return "\xc5\xa1"; + case 't': return "\xd1\x82"; + case 'u': return "\xce\xb0"; + case 'v': return "\x56"; + case 'w': return "\xe1\xba\x85"; + case 'x': return "\xd1\x85"; + case 'y': return "\xe1\xbb\xb3"; + case 'z': return "\xc5\xba"; + case 'A': return "\xc3\x85"; + case 'B': return "\xce\xb2"; + case 'C': return "\xc4\x88"; + case 'D': return "\xc4\x90"; + case 'E': return "\xd0\x84"; + case 'F': return "\xce\x93"; + case 'G': return "\xc4\x9e"; + case 'H': return "\xc4\xa6"; + case 'I': return "\xd0\x87"; + case 'J': return "\xc4\xb5"; + case 'K': return "\xc4\xb6"; + case 'L': return "\xc5\x81"; + case 'M': return "\xe1\xb8\xbe"; + case 'N': return "\xc5\x83"; + case 'O': return "\xce\x98"; + case 'P': return "\xcf\x81"; + case 'Q': return "\x71"; + case 'R': return "\xd0\xaf"; + case 'S': return "\xc8\x98"; + case 'T': return "\xc5\xa6"; + case 'U': return "\xc5\xa8"; + case 'V': return "\xce\xbd"; + case 'W': return "\xe1\xba\x84"; + case 'X': return "\xc3\x97"; + case 'Y': return "\xc2\xa5"; + case 'Z': return "\xc5\xbd"; + default: return NULL; + } +} + +/** + * Converts characters so they look like they've been localized. + * + * Note: This leaves escape sequences untouched so they can later be + * processed by ResTable::collectString in the normal way. + */ +string +pseudolocalize_string(const string& source) +{ + const char* s = source.c_str(); + string result; + const size_t I = source.length(); + for (size_t i=0; i<I; i++) { + char c = s[i]; + if (c == '\\') { + if (i<I-1) { + result += '\\'; + i++; + c = s[i]; + switch (c) { + case 'u': + // this one takes up 5 chars + result += string(s+i, 5); + i += 4; + break; + case 't': + case 'n': + case '#': + case '@': + case '?': + case '"': + case '\'': + case '\\': + default: + result += c; + break; + } + } else { + result += c; + } + } else { + const char* p = pseudolocalize_char(c); + if (p != NULL) { + result += p; + } else { + result += c; + } + } + } + + //printf("result=\'%s\'\n", result.c_str()); + return result; +} + + diff --git a/tools/aapt/pseudolocalize.h b/tools/aapt/pseudolocalize.h new file mode 100644 index 0000000..94cb034 --- /dev/null +++ b/tools/aapt/pseudolocalize.h @@ -0,0 +1,9 @@ +#ifndef HOST_PSEUDOLOCALIZE_H +#define HOST_PSEUDOLOCALIZE_H + +#include <string> + +std::string pseudolocalize_string(const std::string& source); + +#endif // HOST_PSEUDOLOCALIZE_H + |