Merge commit '78be0498' into manualmerge
Conflicts: libs/androidfw/ResourceTypes.cpp tools/aapt/Android.mk tools/aapt/StringPool.cpp tools/aapt/StringPool.h Change-Id: I9d69efdfb892032895ace12159d193304f02dc6c
This commit is contained in:
@@ -36,6 +36,17 @@
|
|||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In C++11, char16_t is defined as *at least* 16 bits. We do a lot of
|
||||||
|
* casting on raw data and expect char16_t to be exactly 16 bits.
|
||||||
|
*/
|
||||||
|
#if __cplusplus >= 201103L
|
||||||
|
struct __assertChar16Size {
|
||||||
|
static_assert(sizeof(char16_t) == sizeof(uint16_t), "char16_t is not 16 bits");
|
||||||
|
static_assert(alignof(char16_t) == alignof(uint16_t), "char16_t is not 16-bit aligned");
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/** ********************************************************************
|
/** ********************************************************************
|
||||||
* PNG Extensions
|
* PNG Extensions
|
||||||
*
|
*
|
||||||
@@ -845,7 +856,7 @@ struct ResTable_package
|
|||||||
uint32_t id;
|
uint32_t id;
|
||||||
|
|
||||||
// Actual name of this package, \0-terminated.
|
// Actual name of this package, \0-terminated.
|
||||||
char16_t name[128];
|
uint16_t name[128];
|
||||||
|
|
||||||
// Offset to a ResStringPool_header defining the resource
|
// Offset to a ResStringPool_header defining the resource
|
||||||
// type symbol table. If zero, this package is inheriting from
|
// type symbol table. If zero, this package is inheriting from
|
||||||
@@ -1450,7 +1461,7 @@ struct ResTable_lib_entry
|
|||||||
uint32_t packageId;
|
uint32_t packageId;
|
||||||
|
|
||||||
// The package name of the shared library. \0 terminated.
|
// The package name of the shared library. \0 terminated.
|
||||||
char16_t packageName[128];
|
uint16_t packageName[128];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
LOCAL_PATH:= $(call my-dir)
|
LOCAL_PATH:= $(call my-dir)
|
||||||
|
|
||||||
# libandroidfw is partially built for the host (used by obbtool and others)
|
# libandroidfw is partially built for the host (used by obbtool, aapt, and others)
|
||||||
# These files are common to host and target builds.
|
# These files are common to host and target builds.
|
||||||
|
|
||||||
commonSources := \
|
commonSources := \
|
||||||
@@ -35,27 +35,18 @@ deviceSources := \
|
|||||||
BackupHelpers.cpp \
|
BackupHelpers.cpp \
|
||||||
CursorWindow.cpp
|
CursorWindow.cpp
|
||||||
|
|
||||||
hostSources := \
|
hostSources := $(commonSources)
|
||||||
$(commonSources)
|
|
||||||
|
|
||||||
# For the host
|
# For the host
|
||||||
# =====================================================
|
# =====================================================
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||||
|
|
||||||
LOCAL_SRC_FILES:= $(hostSources)
|
|
||||||
|
|
||||||
LOCAL_MODULE:= libandroidfw
|
LOCAL_MODULE:= libandroidfw
|
||||||
|
|
||||||
LOCAL_MODULE_TAGS := optional
|
LOCAL_MODULE_TAGS := optional
|
||||||
|
|
||||||
LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS
|
LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS
|
||||||
|
LOCAL_SRC_FILES:= $(hostSources)
|
||||||
LOCAL_C_INCLUDES := \
|
LOCAL_C_INCLUDES := external/zlib
|
||||||
external/zlib
|
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES := liblog libziparchive-host libutils
|
|
||||||
|
|
||||||
include $(BUILD_HOST_STATIC_LIBRARY)
|
include $(BUILD_HOST_STATIC_LIBRARY)
|
||||||
|
|
||||||
@@ -66,8 +57,13 @@ include $(BUILD_HOST_STATIC_LIBRARY)
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||||
|
|
||||||
|
LOCAL_MODULE:= libandroidfw
|
||||||
|
LOCAL_MODULE_TAGS := optional
|
||||||
LOCAL_SRC_FILES:= $(deviceSources)
|
LOCAL_SRC_FILES:= $(deviceSources)
|
||||||
|
LOCAL_C_INCLUDES := \
|
||||||
|
external/zlib \
|
||||||
|
system/core/include
|
||||||
|
LOCAL_STATIC_LIBRARIES := libziparchive
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
libbinder \
|
libbinder \
|
||||||
liblog \
|
liblog \
|
||||||
@@ -75,16 +71,6 @@ LOCAL_SHARED_LIBRARIES := \
|
|||||||
libutils \
|
libutils \
|
||||||
libz
|
libz
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES := libziparchive
|
|
||||||
|
|
||||||
LOCAL_C_INCLUDES := \
|
|
||||||
external/zlib \
|
|
||||||
system/core/include
|
|
||||||
|
|
||||||
LOCAL_MODULE:= libandroidfw
|
|
||||||
|
|
||||||
LOCAL_MODULE_TAGS := optional
|
|
||||||
|
|
||||||
include $(BUILD_SHARED_LIBRARY)
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -87,11 +87,11 @@ inline static T max(T a, T b) {
|
|||||||
// range checked; guaranteed to NUL-terminate within the stated number of available slots
|
// range checked; guaranteed to NUL-terminate within the stated number of available slots
|
||||||
// NOTE: if this truncates the dst string due to running out of space, no attempt is
|
// NOTE: if this truncates the dst string due to running out of space, no attempt is
|
||||||
// made to avoid splitting surrogate pairs.
|
// made to avoid splitting surrogate pairs.
|
||||||
static void strcpy16_dtoh(char16_t* dst, const char16_t* src, size_t avail)
|
static void strcpy16_dtoh(char16_t* dst, const uint16_t* src, size_t avail)
|
||||||
{
|
{
|
||||||
char16_t* last = dst + avail - 1;
|
char16_t* last = dst + avail - 1;
|
||||||
while (*src && (dst < last)) {
|
while (*src && (dst < last)) {
|
||||||
char16_t s = dtohs(*src);
|
char16_t s = dtohs(static_cast<char16_t>(*src));
|
||||||
*dst++ = s;
|
*dst++ = s;
|
||||||
src++;
|
src++;
|
||||||
}
|
}
|
||||||
@@ -501,7 +501,7 @@ status_t ResStringPool::setTo(const void* data, size_t size, bool copyData)
|
|||||||
if (mHeader->flags&ResStringPool_header::UTF8_FLAG) {
|
if (mHeader->flags&ResStringPool_header::UTF8_FLAG) {
|
||||||
charSize = sizeof(uint8_t);
|
charSize = sizeof(uint8_t);
|
||||||
} else {
|
} else {
|
||||||
charSize = sizeof(char16_t);
|
charSize = sizeof(uint16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
// There should be at least space for the smallest string
|
// There should be at least space for the smallest string
|
||||||
@@ -547,8 +547,8 @@ status_t ResStringPool::setTo(const void* data, size_t size, bool copyData)
|
|||||||
e[i] = dtohl(mEntries[i]);
|
e[i] = dtohl(mEntries[i]);
|
||||||
}
|
}
|
||||||
if (!(mHeader->flags&ResStringPool_header::UTF8_FLAG)) {
|
if (!(mHeader->flags&ResStringPool_header::UTF8_FLAG)) {
|
||||||
const char16_t* strings = (const char16_t*)mStrings;
|
const uint16_t* strings = (const uint16_t*)mStrings;
|
||||||
char16_t* s = const_cast<char16_t*>(strings);
|
uint16_t* s = const_cast<uint16_t*>(strings);
|
||||||
for (i=0; i<mStringPoolSize; i++) {
|
for (i=0; i<mStringPoolSize; i++) {
|
||||||
s[i] = dtohs(strings[i]);
|
s[i] = dtohs(strings[i]);
|
||||||
}
|
}
|
||||||
@@ -558,7 +558,7 @@ status_t ResStringPool::setTo(const void* data, size_t size, bool copyData)
|
|||||||
if ((mHeader->flags&ResStringPool_header::UTF8_FLAG &&
|
if ((mHeader->flags&ResStringPool_header::UTF8_FLAG &&
|
||||||
((uint8_t*)mStrings)[mStringPoolSize-1] != 0) ||
|
((uint8_t*)mStrings)[mStringPoolSize-1] != 0) ||
|
||||||
(!mHeader->flags&ResStringPool_header::UTF8_FLAG &&
|
(!mHeader->flags&ResStringPool_header::UTF8_FLAG &&
|
||||||
((char16_t*)mStrings)[mStringPoolSize-1] != 0)) {
|
((uint16_t*)mStrings)[mStringPoolSize-1] != 0)) {
|
||||||
ALOGW("Bad string block: last string is not 0-terminated\n");
|
ALOGW("Bad string block: last string is not 0-terminated\n");
|
||||||
return (mError=BAD_TYPE);
|
return (mError=BAD_TYPE);
|
||||||
}
|
}
|
||||||
@@ -656,7 +656,7 @@ void ResStringPool::uninit()
|
|||||||
* add it together with the next character.
|
* add it together with the next character.
|
||||||
*/
|
*/
|
||||||
static inline size_t
|
static inline size_t
|
||||||
decodeLength(const char16_t** str)
|
decodeLength(const uint16_t** str)
|
||||||
{
|
{
|
||||||
size_t len = **str;
|
size_t len = **str;
|
||||||
if ((len & 0x8000) != 0) {
|
if ((len & 0x8000) != 0) {
|
||||||
@@ -693,15 +693,15 @@ const char16_t* ResStringPool::stringAt(size_t idx, size_t* u16len) const
|
|||||||
{
|
{
|
||||||
if (mError == NO_ERROR && idx < mHeader->stringCount) {
|
if (mError == NO_ERROR && idx < mHeader->stringCount) {
|
||||||
const bool isUTF8 = (mHeader->flags&ResStringPool_header::UTF8_FLAG) != 0;
|
const bool isUTF8 = (mHeader->flags&ResStringPool_header::UTF8_FLAG) != 0;
|
||||||
const uint32_t off = mEntries[idx]/(isUTF8?sizeof(char):sizeof(char16_t));
|
const uint32_t off = mEntries[idx]/(isUTF8?sizeof(uint8_t):sizeof(uint16_t));
|
||||||
if (off < (mStringPoolSize-1)) {
|
if (off < (mStringPoolSize-1)) {
|
||||||
if (!isUTF8) {
|
if (!isUTF8) {
|
||||||
const char16_t* strings = (char16_t*)mStrings;
|
const uint16_t* strings = (uint16_t*)mStrings;
|
||||||
const char16_t* str = strings+off;
|
const uint16_t* str = strings+off;
|
||||||
|
|
||||||
*u16len = decodeLength(&str);
|
*u16len = decodeLength(&str);
|
||||||
if ((uint32_t)(str+*u16len-strings) < mStringPoolSize) {
|
if ((uint32_t)(str+*u16len-strings) < mStringPoolSize) {
|
||||||
return str;
|
return reinterpret_cast<const char16_t*>(str);
|
||||||
} else {
|
} else {
|
||||||
ALOGW("Bad string block: string #%d extends to %d, past end at %d\n",
|
ALOGW("Bad string block: string #%d extends to %d, past end at %d\n",
|
||||||
(int)idx, (int)(str+*u16len-strings), (int)mStringPoolSize);
|
(int)idx, (int)(str+*u16len-strings), (int)mStringPoolSize);
|
||||||
@@ -5665,8 +5665,8 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
|
|||||||
if (idx == 0) {
|
if (idx == 0) {
|
||||||
idx = mPackageGroups.size() + 1;
|
idx = mPackageGroups.size() + 1;
|
||||||
|
|
||||||
char16_t tmpName[sizeof(pkg->name)/sizeof(char16_t)];
|
char16_t tmpName[sizeof(pkg->name)/sizeof(pkg->name[0])];
|
||||||
strcpy16_dtoh(tmpName, pkg->name, sizeof(pkg->name)/sizeof(char16_t));
|
strcpy16_dtoh(tmpName, pkg->name, sizeof(pkg->name)/sizeof(pkg->name[0]));
|
||||||
group = new PackageGroup(this, String16(tmpName), id);
|
group = new PackageGroup(this, String16(tmpName), id);
|
||||||
if (group == NULL) {
|
if (group == NULL) {
|
||||||
delete package;
|
delete package;
|
||||||
@@ -6036,7 +6036,10 @@ status_t ResTable::createIdmap(const ResTable& overlay,
|
|||||||
*outSize += 2 * sizeof(uint16_t);
|
*outSize += 2 * sizeof(uint16_t);
|
||||||
|
|
||||||
// overlay packages are assumed to contain only one package group
|
// overlay packages are assumed to contain only one package group
|
||||||
const String16 overlayPackage(overlay.mPackageGroups[0]->packages[0]->package->name);
|
const ResTable_package* overlayPackageStruct = overlay.mPackageGroups[0]->packages[0]->package;
|
||||||
|
char16_t tmpName[sizeof(overlayPackageStruct->name)/sizeof(overlayPackageStruct->name[0])];
|
||||||
|
strcpy16_dtoh(tmpName, overlayPackageStruct->name, sizeof(overlayPackageStruct->name)/sizeof(overlayPackageStruct->name[0]));
|
||||||
|
const String16 overlayPackage(tmpName);
|
||||||
|
|
||||||
for (size_t typeIndex = 0; typeIndex < pg->types.size(); ++typeIndex) {
|
for (size_t typeIndex = 0; typeIndex < pg->types.size(); ++typeIndex) {
|
||||||
const TypeList& typeList = pg->types[typeIndex];
|
const TypeList& typeList = pg->types[typeIndex];
|
||||||
@@ -6345,8 +6348,10 @@ void ResTable::print(bool inclValues) const
|
|||||||
// Use a package's real ID, since the ID may have been assigned
|
// Use a package's real ID, since the ID may have been assigned
|
||||||
// if this package is a shared library.
|
// if this package is a shared library.
|
||||||
packageId = pkg->package->id;
|
packageId = pkg->package->id;
|
||||||
|
char16_t tmpName[sizeof(pkg->package->name)/sizeof(pkg->package->name[0])];
|
||||||
|
strcpy16_dtoh(tmpName, pkg->package->name, sizeof(pkg->package->name)/sizeof(pkg->package->name[0]));
|
||||||
printf(" Package %d id=0x%02x name=%s\n", (int)pkgIndex,
|
printf(" Package %d id=0x%02x name=%s\n", (int)pkgIndex,
|
||||||
pkg->package->id, String8(String16(pkg->package->name)).string());
|
pkg->package->id, String8(tmpName).string());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t typeIndex=0; typeIndex < pg->types.size(); typeIndex++) {
|
for (size_t typeIndex=0; typeIndex < pg->types.size(); typeIndex++) {
|
||||||
|
|||||||
@@ -22,9 +22,9 @@
|
|||||||
#include <androidfw/misc.h>
|
#include <androidfw/misc.h>
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <string.h>
|
#include <cstring>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <cstdio>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ testFiles := \
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_MODULE := libandroidfw_tests
|
LOCAL_MODULE := libandroidfw_tests
|
||||||
|
|
||||||
LOCAL_SRC_FILES := $(testFiles)
|
LOCAL_SRC_FILES := $(testFiles)
|
||||||
LOCAL_STATIC_LIBRARIES := \
|
LOCAL_STATIC_LIBRARIES := \
|
||||||
libandroidfw \
|
libandroidfw \
|
||||||
@@ -55,11 +54,9 @@ ifneq ($(SDK_ONLY),true)
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_MODULE := libandroidfw_tests
|
LOCAL_MODULE := libandroidfw_tests
|
||||||
|
|
||||||
LOCAL_SRC_FILES := $(testFiles) \
|
LOCAL_SRC_FILES := $(testFiles) \
|
||||||
BackupData_test.cpp \
|
BackupData_test.cpp \
|
||||||
ObbFile_test.cpp
|
ObbFile_test.cpp
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
libandroidfw \
|
libandroidfw \
|
||||||
libcutils \
|
libcutils \
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ static String8 getStringAttributeAtIndex(const ResXMLTree& tree, ssize_t attrInd
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t len;
|
size_t len;
|
||||||
const uint16_t* str = tree.getAttributeStringValue(attrIndex, &len);
|
const char16_t* str = tree.getAttributeStringValue(attrIndex, &len);
|
||||||
return str ? String8(str, len) : String8();
|
return str ? String8(str, len) : String8();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ String8 getResolvedAttribute(const ResTable& resTable, const ResXMLTree& tree,
|
|||||||
if (tree.getAttributeValue(idx, &value) != NO_ERROR) {
|
if (tree.getAttributeValue(idx, &value) != NO_ERROR) {
|
||||||
if (value.dataType == Res_value::TYPE_STRING) {
|
if (value.dataType == Res_value::TYPE_STRING) {
|
||||||
size_t len;
|
size_t len;
|
||||||
const uint16_t* str = tree.getAttributeStringValue(idx, &len);
|
const char16_t* str = tree.getAttributeStringValue(idx, &len);
|
||||||
return str ? String8(str, len) : String8();
|
return str ? String8(str, len) : String8();
|
||||||
}
|
}
|
||||||
resTable.resolveReference(&value, 0);
|
resTable.resolveReference(&value, 0);
|
||||||
|
|||||||
@@ -33,19 +33,20 @@ aaptSources := \
|
|||||||
Command.cpp \
|
Command.cpp \
|
||||||
CrunchCache.cpp \
|
CrunchCache.cpp \
|
||||||
FileFinder.cpp \
|
FileFinder.cpp \
|
||||||
|
Images.cpp \
|
||||||
Package.cpp \
|
Package.cpp \
|
||||||
StringPool.cpp \
|
pseudolocalize.cpp \
|
||||||
XMLNode.cpp \
|
qsort_r_compat.c \
|
||||||
|
Resource.cpp \
|
||||||
ResourceFilter.cpp \
|
ResourceFilter.cpp \
|
||||||
ResourceIdCache.cpp \
|
ResourceIdCache.cpp \
|
||||||
ResourceTable.cpp \
|
ResourceTable.cpp \
|
||||||
Images.cpp \
|
|
||||||
Resource.cpp \
|
|
||||||
pseudolocalize.cpp \
|
|
||||||
SourcePos.cpp \
|
SourcePos.cpp \
|
||||||
|
StringPool.cpp \
|
||||||
WorkQueue.cpp \
|
WorkQueue.cpp \
|
||||||
|
XMLNode.cpp \
|
||||||
ZipEntry.cpp \
|
ZipEntry.cpp \
|
||||||
ZipFile.cpp \
|
ZipFile.cpp
|
||||||
|
|
||||||
aaptTests := \
|
aaptTests := \
|
||||||
tests/AaptConfig_test.cpp \
|
tests/AaptConfig_test.cpp \
|
||||||
@@ -88,16 +89,13 @@ endif
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_MODULE := libaapt
|
LOCAL_MODULE := libaapt
|
||||||
|
LOCAL_CFLAGS += -Wno-format-y2k -DSTATIC_ANDROIDFW_FOR_TOOLS $(aaptCFlags)
|
||||||
LOCAL_SRC_FILES := $(aaptSources)
|
LOCAL_CPPFLAGS += $(aaptCppFlags)
|
||||||
LOCAL_C_INCLUDES += $(aaptCIncludes)
|
|
||||||
|
|
||||||
LOCAL_CFLAGS += -Wno-format-y2k
|
|
||||||
LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS
|
|
||||||
LOCAL_CFLAGS += $(aaptCFlags)
|
|
||||||
ifeq (darwin,$(HOST_OS))
|
ifeq (darwin,$(HOST_OS))
|
||||||
LOCAL_CFLAGS += -D_DARWIN_UNLIMITED_STREAMS
|
LOCAL_CFLAGS += -D_DARWIN_UNLIMITED_STREAMS
|
||||||
endif
|
endif
|
||||||
|
LOCAL_C_INCLUDES += $(aaptCIncludes)
|
||||||
|
LOCAL_SRC_FILES := $(aaptSources)
|
||||||
|
|
||||||
include $(BUILD_HOST_STATIC_LIBRARY)
|
include $(BUILD_HOST_STATIC_LIBRARY)
|
||||||
|
|
||||||
@@ -108,15 +106,11 @@ include $(BUILD_HOST_STATIC_LIBRARY)
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_MODULE := aapt
|
LOCAL_MODULE := aapt
|
||||||
|
|
||||||
LOCAL_SRC_FILES := $(aaptMain)
|
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES += \
|
|
||||||
libaapt \
|
|
||||||
$(aaptHostStaticLibs)
|
|
||||||
|
|
||||||
LOCAL_LDLIBS += $(aaptHostLdLibs)
|
|
||||||
LOCAL_CFLAGS += $(aaptCFlags)
|
LOCAL_CFLAGS += $(aaptCFlags)
|
||||||
|
LOCAL_CPPFLAGS += $(aaptCppFlags)
|
||||||
|
LOCAL_LDLIBS += $(aaptHostLdLibs)
|
||||||
|
LOCAL_SRC_FILES := $(aaptMain)
|
||||||
|
LOCAL_STATIC_LIBRARIES += libaapt $(aaptHostStaticLibs)
|
||||||
|
|
||||||
include $(BUILD_HOST_EXECUTABLE)
|
include $(BUILD_HOST_EXECUTABLE)
|
||||||
|
|
||||||
@@ -128,16 +122,12 @@ include $(CLEAR_VARS)
|
|||||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||||
|
|
||||||
LOCAL_MODULE := libaapt_tests
|
LOCAL_MODULE := libaapt_tests
|
||||||
|
LOCAL_CFLAGS += $(aaptCFlags)
|
||||||
|
LOCAL_CPPFLAGS += $(aaptCppFlags)
|
||||||
|
LOCAL_LDLIBS += $(aaptHostLdLibs)
|
||||||
LOCAL_SRC_FILES += $(aaptTests)
|
LOCAL_SRC_FILES += $(aaptTests)
|
||||||
LOCAL_C_INCLUDES += $(LOCAL_PATH)
|
LOCAL_C_INCLUDES += $(LOCAL_PATH)
|
||||||
|
LOCAL_STATIC_LIBRARIES += libaapt $(aaptHostStaticLibs)
|
||||||
LOCAL_STATIC_LIBRARIES += \
|
|
||||||
libaapt \
|
|
||||||
$(aaptHostStaticLibs)
|
|
||||||
|
|
||||||
LOCAL_LDLIBS += $(aaptHostLdLibs)
|
|
||||||
LOCAL_CFLAGS += $(aaptCFlags)
|
|
||||||
|
|
||||||
include $(BUILD_HOST_NATIVE_TEST)
|
include $(BUILD_HOST_NATIVE_TEST)
|
||||||
|
|
||||||
@@ -149,11 +139,9 @@ ifneq ($(SDK_ONLY),true)
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_MODULE := aapt
|
LOCAL_MODULE := aapt
|
||||||
|
LOCAL_CFLAGS += $(aaptCFlags)
|
||||||
LOCAL_SRC_FILES := $(aaptSources) $(aaptMain)
|
LOCAL_SRC_FILES := $(aaptSources) $(aaptMain)
|
||||||
LOCAL_C_INCLUDES += \
|
LOCAL_C_INCLUDES += $(aaptCIncludes)
|
||||||
$(aaptCIncludes) \
|
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
libandroidfw \
|
libandroidfw \
|
||||||
libutils \
|
libutils \
|
||||||
@@ -161,13 +149,9 @@ LOCAL_SHARED_LIBRARIES := \
|
|||||||
libpng \
|
libpng \
|
||||||
liblog \
|
liblog \
|
||||||
libz
|
libz
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES := \
|
LOCAL_STATIC_LIBRARIES := \
|
||||||
libexpat_static
|
libexpat_static
|
||||||
|
|
||||||
LOCAL_CFLAGS += $(aaptCFlags)
|
|
||||||
LOCAL_CPPFLAGS += -Wno-non-virtual-dtor
|
|
||||||
|
|
||||||
include external/stlport/libstlport.mk
|
include external/stlport/libstlport.mk
|
||||||
include $(BUILD_EXECUTABLE)
|
include $(BUILD_EXECUTABLE)
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ using namespace android;
|
|||||||
*/
|
*/
|
||||||
class CacheUpdater {
|
class CacheUpdater {
|
||||||
public:
|
public:
|
||||||
|
virtual ~CacheUpdater() {}
|
||||||
|
|
||||||
// Make sure all the directories along this path exist
|
// Make sure all the directories along this path exist
|
||||||
virtual void ensureDirectoriesExist(String8 path) = 0;
|
virtual void ensureDirectoriesExist(String8 path) = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,9 @@
|
|||||||
#include <utils/List.h>
|
#include <utils/List.h>
|
||||||
#include <utils/Errors.h>
|
#include <utils/Errors.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <cstdlib>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <assert.h>
|
#include <cassert>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
|
|||||||
@@ -523,7 +523,7 @@ static int validateAttr(const String8& path, const ResTable& table,
|
|||||||
}
|
}
|
||||||
if (validChars) {
|
if (validChars) {
|
||||||
for (size_t i=0; i<len; i++) {
|
for (size_t i=0; i<len; i++) {
|
||||||
uint16_t c = str[i];
|
char16_t c = str[i];
|
||||||
const char* p = validChars;
|
const char* p = validChars;
|
||||||
bool okay = false;
|
bool okay = false;
|
||||||
while (*p) {
|
while (*p) {
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
// Set to true for noisy debug output.
|
// Set to true for noisy debug output.
|
||||||
static const bool kIsDebug = false;
|
static const bool kIsDebug = false;
|
||||||
|
|
||||||
|
#if __cplusplus >= 201103L
|
||||||
void strcpy16_htod(char16_t* dst, const char16_t* src)
|
void strcpy16_htod(char16_t* dst, const char16_t* src)
|
||||||
{
|
{
|
||||||
while (*src) {
|
while (*src) {
|
||||||
@@ -35,6 +36,17 @@ void strcpy16_htod(char16_t* dst, const char16_t* src)
|
|||||||
}
|
}
|
||||||
*dst = 0;
|
*dst = 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void strcpy16_htod(uint16_t* dst, const char16_t* src)
|
||||||
|
{
|
||||||
|
while (*src) {
|
||||||
|
uint16_t s = htods(static_cast<uint16_t>(*src));
|
||||||
|
*dst++ = s;
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
*dst = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void printStringPool(const ResStringPool* pool)
|
void printStringPool(const ResStringPool* pool)
|
||||||
{
|
{
|
||||||
@@ -434,7 +446,7 @@ status_t StringPool::writeStringBlock(const sp<AaptFile>& pool)
|
|||||||
return NO_MEMORY;
|
return NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
const size_t charSize = mUTF8 ? sizeof(uint8_t) : sizeof(char16_t);
|
const size_t charSize = mUTF8 ? sizeof(uint8_t) : sizeof(uint16_t);
|
||||||
|
|
||||||
size_t strPos = 0;
|
size_t strPos = 0;
|
||||||
for (i=0; i<STRINGS; i++) {
|
for (i=0; i<STRINGS; i++) {
|
||||||
|
|||||||
@@ -26,7 +26,10 @@ using namespace android;
|
|||||||
|
|
||||||
#define PRINT_STRING_METRICS 0
|
#define PRINT_STRING_METRICS 0
|
||||||
|
|
||||||
|
#if __cplusplus >= 201103L
|
||||||
void strcpy16_htod(char16_t* dst, const char16_t* src);
|
void strcpy16_htod(char16_t* dst, const char16_t* src);
|
||||||
|
#endif
|
||||||
|
void strcpy16_htod(uint16_t* dst, const char16_t* src);
|
||||||
|
|
||||||
void printStringPool(const ResStringPool* pool);
|
void printStringPool(const ResStringPool* pool);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user