diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-08-22 10:18:12 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-08-22 10:18:12 +0000 |
commit | d0c041491555a47d60165b6ab235c24b4fa1ba8c (patch) | |
tree | 40d7f14673987d3dfc895efe287f46fed913e183 | |
parent | c92283518936fffb997574d3eab22ee86aa2ec92 (diff) | |
parent | 304410e63a5426aa480a450f7386b3e1ff240096 (diff) | |
download | icu-androidx-wear-wear-remote-interactions-release.tar.gz |
Snap for 7663505 from 304410e63a5426aa480a450f7386b3e1ff240096 to androidx-wear-wear-remote-interactions-releaseandroidx-wear-wear-remote-interactions-release
Change-Id: Icd7f65c4af313b36382ab6a6827e8b504b079cd8
-rw-r--r-- | android_icu4j/api/legacy_platform/current.txt | 1 | ||||
-rw-r--r-- | android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/CountryZonesFinder.java | 43 | ||||
-rw-r--r-- | android_icu4j/testing/src/com/android/i18n/test/timezone/CountryZonesFinderTest.java | 44 | ||||
-rw-r--r-- | icu4c/source/common/CMakeLists.txt | 52 | ||||
-rw-r--r-- | icu4c/source/i18n/CMakeLists.txt | 42 | ||||
-rw-r--r-- | icu4c/source/stubdata/Android.mk | 4 | ||||
-rw-r--r-- | icu4c/source/stubdata/CMakeLists.txt | 36 | ||||
-rw-r--r-- | libandroidicu/CMakeLists.txt | 41 | ||||
-rw-r--r-- | libandroidicu/static_shim/CMakeLists.txt | 48 | ||||
-rw-r--r-- | libandroidicuinit/CMakeLists.txt | 40 | ||||
-rw-r--r-- | libandroidicuinit/IcuRegistration.cpp | 10 | ||||
-rw-r--r-- | libandroidicuinit/IcuRegistration.h | 9 | ||||
-rw-r--r-- | libandroidicuinit/android_icu_init.cpp | 10 |
13 files changed, 316 insertions, 64 deletions
diff --git a/android_icu4j/api/legacy_platform/current.txt b/android_icu4j/api/legacy_platform/current.txt index a81a0c650..692b2b1bf 100644 --- a/android_icu4j/api/legacy_platform/current.txt +++ b/android_icu4j/api/legacy_platform/current.txt @@ -81,6 +81,7 @@ package com.android.i18n.timezone { } public final class CountryZonesFinder { + method @Nullable public String findCanonicalTimeZoneId(String); method public java.util.List<java.lang.String> lookupAllCountryIsoCodes(); method public com.android.i18n.timezone.CountryTimeZones lookupCountryTimeZones(String); method public java.util.List<com.android.i18n.timezone.CountryTimeZones> lookupCountryTimeZonesForZoneId(String); diff --git a/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/CountryZonesFinder.java b/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/CountryZonesFinder.java index 80a316e1f..61d9a1895 100644 --- a/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/CountryZonesFinder.java +++ b/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/CountryZonesFinder.java @@ -19,6 +19,7 @@ package com.android.i18n.timezone; import static com.android.i18n.timezone.XmlUtils.normalizeCountryIso; import com.android.i18n.timezone.CountryTimeZones.TimeZoneMapping; +import libcore.util.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -57,10 +58,11 @@ public final class CountryZonesFinder { /** * Returns an immutable list of {@link CountryTimeZones} for countries that use the specified - * time zone. An exact, case-sensitive match is performed on the zone ID. If the match but the method also - * checks for alternative zone IDs. This method never returns null and will usually return a - * list containing a single element. It can return an empty list if the zone ID is - * not recognized or it is not associated with a country. + * time zone. An exact, case-sensitive match is performed on the zone ID. Search is done + * over currently used time zone IDs and also over no longer used deprecated(alternative) IDs. + * This method never returns null and will usually return a list containing a single element. + * It can return an empty list if the zone ID is not recognized or it is not associated with a + * country. */ @libcore.api.CorePlatformApi public List<CountryTimeZones> lookupCountryTimeZonesForZoneId(String zoneId) { @@ -104,4 +106,37 @@ public final class CountryZonesFinder { } return null; } + + /** + * Returns a canonical time zone ID for the {@code timeZoneId} specified. It is intended for use + * when behavioral equivalence of time zones needs to be determined. + * + * <p>When a time zone ID is returned, it is guaranteed to have the same offset / daylight + * savings behavior as the argument, but it might be used in a different country and could + * have different I18N properties like display name. The original {@code timeZoneId} will + * often be returned. + * + * <p>If {@code timeZoneId} is unknown or not associated with a country, {@code null} is + * returned. e.g. time zones such as Etc/GMT+-XX. + * + * This method behavior is based on tzlookup.xml file and works with Olson IDs attached to + * countries, unlike {@link android.icu.util.TimeZone} which works with wider set of arguments. + */ + @libcore.api.CorePlatformApi + @Nullable + public String findCanonicalTimeZoneId(String timeZoneId) { + for (CountryTimeZones countryTimeZones : countryTimeZonesList) { + + // notafter is ignored as timeZoneId might be deprecated a while ago + List<TimeZoneMapping> countryTimeZoneMappings = countryTimeZones.getTimeZoneMappings(); + for (TimeZoneMapping timeZoneMapping : countryTimeZoneMappings) { + if (timeZoneMapping.getTimeZoneId().equals(timeZoneId) + || timeZoneMapping.getAlternativeIds().contains(timeZoneId)) { + return timeZoneMapping.getTimeZoneId(); + } + } + } + + return null; + } } diff --git a/android_icu4j/testing/src/com/android/i18n/test/timezone/CountryZonesFinderTest.java b/android_icu4j/testing/src/com/android/i18n/test/timezone/CountryZonesFinderTest.java index 64ec0fd0d..549c8899f 100644 --- a/android_icu4j/testing/src/com/android/i18n/test/timezone/CountryZonesFinderTest.java +++ b/android_icu4j/testing/src/com/android/i18n/test/timezone/CountryZonesFinderTest.java @@ -16,22 +16,26 @@ package com.android.i18n.test.timezone; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import android.icu.testsharding.MainTestShard; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; import com.android.i18n.timezone.CountryTimeZones; import com.android.i18n.timezone.CountryTimeZones.TimeZoneMapping; import com.android.i18n.timezone.CountryZonesFinder; -import android.icu.testsharding.MainTestShard; +import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.fail; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @MainTestShard public class CountryZonesFinderTest { @@ -119,6 +123,26 @@ public class CountryZonesFinderTest { assertNull(countryZonesFinder.lookupCountryTimeZones("DOES_NOT_EXIST")); } + @Test + public void findCanonicalTimeZoneId() { + TimeZoneMapping usesNewZoneId = timeZoneMappingWithAlts("America/Detroit", + list("US/Michigan")); + TimeZoneMapping usesOldZoneId = timeZoneMappingWithAlts("US/Central", + list("America/Chicago")); + CountryTimeZones countryWithAlternativeZones = CountryTimeZones.createValidated( + "us", "America/Detroit" /* defaultTimeZoneId */, false /* defaultTimeZoneBoost */, + false /* everUsesUtc */, + list(usesNewZoneId, usesOldZoneId), + "debug info"); + CountryZonesFinder countryZonesFinder = + CountryZonesFinder.createForTests(list(countryWithAlternativeZones)); + + assertEquals(countryZonesFinder.findCanonicalTimeZoneId("America/Chicago"), "US/Central"); + assertEquals(countryZonesFinder.findCanonicalTimeZoneId("US/Michigan"), "America/Detroit"); + assertEquals(countryZonesFinder.findCanonicalTimeZoneId("America/Detroit"), "America/Detroit"); + assertNull(countryZonesFinder.findCanonicalTimeZoneId("Mars/Base")); + } + private static <X> void assertEqualsAndImmutable(List<X> expected, List<X> actual) { assertEquals(expected, actual); assertImmutableList(actual); diff --git a/icu4c/source/common/CMakeLists.txt b/icu4c/source/common/CMakeLists.txt new file mode 100644 index 000000000..8ff8bced7 --- /dev/null +++ b/icu4c/source/common/CMakeLists.txt @@ -0,0 +1,52 @@ +# Minimum CMake required +cmake_minimum_required(VERSION 3.1.3) + +# Project +project(icuuc C CXX) + +add_definitions("-DANDROID_LINK_SHARED_ICU4C") +add_definitions("-DU_COMMON_IMPLEMENTATION") +add_definitions("-D_REENTRANT") + +# To suppress deprecated declarations for 'uidna_toASCII_68' +add_definitions("-Wno-deprecated-declarations") + +# Compile icuuc_stubdata +set(ICUUC_STUB_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../stubdata") +set(ICUUC_STUB_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libicuuc_stubdata-target") +add_subdirectory(${ICUUC_STUB_SOURCE_DIR} ${ICUUC_STUB_TARGET_BINARY_DIR}) + +# Compile androidicuinit +set(ANDROIDICUINIT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../libandroidicuinit") +set(ANDROIDICUINIT_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/androidicu_init-target") +add_subdirectory(${ANDROIDICUINIT_SOURCE_DIR} ${ANDROIDICUINIT_TARGET_BINARY_DIR}) + +# Add android_icu4c headers +set(ICU_CONFIG_LOCAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../android_icu4c/include") + +# Glob icu common source files +file( + GLOB_RECURSE + ICU_COMMON_CC_SOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "*.h" "*.cpp" +) +message(STATUS "ICU_COMMON_CC_SOURCES=${ICU_COMMON_CC_SOURCES}") + +add_library( + # name + icuuc + + # SHARED or STATIC + STATIC + + # Provides a relative path to your source file(s). + ${ICU_COMMON_CC_SOURCES} +) +target_include_directories(icuuc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(icuuc PRIVATE ${ICU_CONFIG_LOCAL_SOURCE_DIR}) +target_include_directories(icuuc PRIVATE "${ANDROIDICUINIT_SOURCE_DIR}/include") +target_link_libraries(icuuc icuuc_stubdata androidicuinit) + +set_target_properties(icuuc PROPERTIES LINKER_LANGUAGE CXX) + diff --git a/icu4c/source/i18n/CMakeLists.txt b/icu4c/source/i18n/CMakeLists.txt new file mode 100644 index 000000000..8e7a2b389 --- /dev/null +++ b/icu4c/source/i18n/CMakeLists.txt @@ -0,0 +1,42 @@ +# Minimum CMake required +cmake_minimum_required(VERSION 3.1.3) + +# Project +project(icui18n C CXX) + +add_definitions("-DU_I18N_IMPLEMENTATION") +add_definitions("-D_REENTRANT") + +# Add other source dirs that icuuc uses +set(ICU_CONFIG_LOCAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../android_icu4c/include") + +# Compile icuuc +set(ICUUC_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../common") +set(ICUUC_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libicuuc-target") +add_subdirectory(${ICUUC_SOURCE_DIR} ${ICUUC_TARGET_BINARY_DIR}) + +# Glob icu common source files +file( + GLOB_RECURSE + ICU_I18N_CC_SOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "*.h" "*.cpp" +) +message(STATUS "ICU_I18N_CC_SOURCES=${ICU_I18N_CC_SOURCES}") + +add_library( + # name + icui18n + + # SHARED or STATIC + STATIC + + # Provides a relative path to your source file(s). + ${ICU_I18N_CC_SOURCES} +) +target_include_directories(icui18n PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(icui18n PRIVATE ${ICUUC_SOURCE_DIR}) +target_include_directories(icui18n PRIVATE ${ICU_CONFIG_LOCAL_SOURCE_DIR}) +target_link_libraries(icui18n icuuc) + +set_target_properties(icui18n PROPERTIES LINKER_LANGUAGE CXX) diff --git a/icu4c/source/stubdata/Android.mk b/icu4c/source/stubdata/Android.mk index 3dd824936..b3db1d9b7 100644 --- a/icu4c/source/stubdata/Android.mk +++ b/icu4c/source/stubdata/Android.mk @@ -35,7 +35,9 @@ LOCAL_SRC_FILES := $(dat_file) LOCAL_IS_HOST_MODULE := true include $(BUILD_PREBUILT) -$(call dist-for-goals, layoutlib, $(LOCAL_MODULE_PATH)/$(dat_file):layoutlib_native/icu/$(dat_file)) +ifneq (,$(wildcard frameworks/layoutlib)) + $(call dist-for-goals, layoutlib, $(LOCAL_MODULE_PATH)/$(dat_file):layoutlib_native/icu/$(dat_file)) +endif # Module definition producing ICU .dat prebuilt files in # /system/etc/icu for standalone ART testing purposes. This is a diff --git a/icu4c/source/stubdata/CMakeLists.txt b/icu4c/source/stubdata/CMakeLists.txt new file mode 100644 index 000000000..9ffaa505a --- /dev/null +++ b/icu4c/source/stubdata/CMakeLists.txt @@ -0,0 +1,36 @@ +# Minimum CMake required +cmake_minimum_required(VERSION 3.1.3) + +# Project +project(icuuc_stubdata C CXX) + +add_definitions("-DANDROID_LINK_SHARED_ICU4C") + +# Glob icu stub source files +file( + GLOB_RECURSE + ICU_STUB_CC_SOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "*.h" "*.cpp" +) +message(STATUS "ICU_STUB_CC_SOURCES=${ICU_STUB_CC_SOURCES}") + +# Add icuuc, android_icu4c headers +set(ICU_COMMON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../common") +set(ICU_CONFIG_LOCAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../android_icu4c/include") + +add_library( + # name + icuuc_stubdata + + # SHARED or STATIC + STATIC + + # Provides a relative path to your source file(s). + ${ICU_STUB_CC_SOURCES} +) +target_include_directories(icuuc_stubdata PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(icuuc_stubdata PRIVATE ${ICU_COMMON_SOURCE_DIR}) +target_include_directories(icuuc_stubdata PRIVATE ${ICU_CONFIG_LOCAL_SOURCE_DIR}) + +set_target_properties(icuuc_stubdata PROPERTIES LINKER_LANGUAGE CXX) diff --git a/libandroidicu/CMakeLists.txt b/libandroidicu/CMakeLists.txt deleted file mode 100644 index 60d2d07e9..000000000 --- a/libandroidicu/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -# Minimum CMake required -cmake_minimum_required(VERSION 3.1.3) - -# Project -project(libandroidicu C CXX) - -set(ICU_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") -set(ICU_SHIM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/static_shim") - -# Glob icu source files -file( - GLOB_RECURSE - ICU_CC_SOURCES - "${ICU_SOURCE_DIR}/*.cpp" - "${ICU_SOURCE_DIR}/*.h" -) -message(STATUS "ICU_CC_SOURCES=${ICU_CC_SOURCES}") - -file( - GLOB_RECURSE - ICU_CC_SHIM_SOURCES - "${ICU_SHIM_SOURCE_DIR}/*.cpp" - "${ICU_SHIM_SOURCE_DIR}/*.h" -) -message(STATUS "ICU_CC_SHIM_SOURCES=${ICU_CC_SHIM_SOURCES}") - -add_library( - # name - libandroidicu - - # SHARED or STATIC - STATIC - - # Provides a relative path to your source file(s). - ${ICU_CC_SOURCES} - ${ICU_CC_SHIM_SOURCES} -) -target_include_directories(libandroidicu PRIVATE ${ICU_SOURCE_DIR}) -target_include_directories(libandroidicu PRIVATE ${ICU_SHIM_SOURCE_DIR}) - -set_target_properties(libandroidicu PROPERTIES LINKER_LANGUAGE CXX) diff --git a/libandroidicu/static_shim/CMakeLists.txt b/libandroidicu/static_shim/CMakeLists.txt new file mode 100644 index 000000000..472f3d88a --- /dev/null +++ b/libandroidicu/static_shim/CMakeLists.txt @@ -0,0 +1,48 @@ +# Minimum CMake required +cmake_minimum_required(VERSION 3.1.3) + +# Project +project(libandroidicu C CXX) + +add_definitions("-DANDROID_LINK_SHARED_ICU4C") + +# Add other source dirs that icuuc uses +set(ICU_CONFIG_LOCAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../android_icu4c/include") + +# Compile icuuc +set(ICUUC_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../icu4c/source/common") + +# Compile icui18n +set(ICU_I18N_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../icu4c/source/i18n") +set(ICU_I18N_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libicui18n-target") +add_subdirectory(${ICU_I18N_SOURCE_DIR} ${ICU_I18N_TARGET_BINARY_DIR}) + +# Glob shim sources +set(ICU_SHIM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +file( + GLOB_RECURSE + ICU_STATIC_SHIM_CC_SOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "${ICU_SHIM_SOURCE_DIR}/*.cpp" + "${ICU_SHIM_SOURCE_DIR}/*.h" +) +message(STATUS "ICU_STATIC_SHIM_CC_SOURCES=${ICU_STATIC_SHIM_CC_SOURCES}") + +add_library( + # name + libandroidicu + + # SHARED or STATIC + STATIC + + # Provides a relative path to your source file(s). + ${ICU_STATIC_SHIM_CC_SOURCES} +) +target_include_directories(libandroidicu PRIVATE ${ICUUC_SOURCE_DIR}) +target_include_directories(libandroidicu PRIVATE ${ICU_CONFIG_LOCAL_SOURCE_DIR}) +target_include_directories(libandroidicu PRIVATE ${ICU_I18N_SOURCE_DIR}) +target_include_directories(libandroidicu PRIVATE ${ICU_STATIC_SHIM_CC_SOURCES}) +target_link_libraries(libandroidicu icui18n) + +set_target_properties(libandroidicu PROPERTIES LINKER_LANGUAGE CXX) + diff --git a/libandroidicuinit/CMakeLists.txt b/libandroidicuinit/CMakeLists.txt new file mode 100644 index 000000000..53bce3a94 --- /dev/null +++ b/libandroidicuinit/CMakeLists.txt @@ -0,0 +1,40 @@ +# Minimum CMake required +cmake_minimum_required(VERSION 3.1.3) + +# Project +project(androidicuinit C CXX) + +add_definitions("-DANDROID_LINK_SHARED_ICU4C") +add_definitions("-DANDROID_ICU_NO_DAT") +add_definitions("-DNO_ANDROID_LIBLOG") + +# Glob libandroidicuinit source files +file( + GLOB_RECURSE + ANDROIDICU_INIT_CC_SOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "${CMAKE_CURRENT_SOURCE_DIR}/*.h" + "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" +) +message(STATUS "ANDROIDICU_INIT_CC_SOURCES=${ANDROIDICU_INIT_CC_SOURCES}") + +# Add icuuc, android_icu4c headers +set(ICU_COMMON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../icu4c/source/common") +set(ICU_CONFIG_LOCAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../android_icu4c/include") + +add_library( + # name + androidicuinit + + # SHARED or STATIC + STATIC + + # Provides a relative path to your source file(s). + ${ANDROIDICU_INIT_CC_SOURCES} +) +target_include_directories(androidicuinit PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(androidicuinit PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_include_directories(androidicuinit PRIVATE ${ICU_COMMON_SOURCE_DIR}) +target_include_directories(androidicuinit PRIVATE ${ICU_CONFIG_LOCAL_SOURCE_DIR}) + +set_target_properties(androidicuinit PROPERTIES LINKER_LANGUAGE CXX) diff --git a/libandroidicuinit/IcuRegistration.cpp b/libandroidicuinit/IcuRegistration.cpp index 195318de5..1d68e4c05 100644 --- a/libandroidicuinit/IcuRegistration.cpp +++ b/libandroidicuinit/IcuRegistration.cpp @@ -27,7 +27,7 @@ #include <unicode/udata.h> #include <unicode/utypes.h> -#ifndef __ANDROID__ +#if !defined(__ANDROID__) || defined(NO_ANDROID_LIBLOG) static int PriorityToLevel(char priority) { // Priority is just the array index of priority in kPriorities. static const char* kPriorities = "VDIWEF"; @@ -57,12 +57,12 @@ bool AIcuHostShouldLog(char priority) { static int g_LogLevel = GetHostLogLevel(); return PriorityToLevel(priority) >= g_LogLevel; } -#endif // __ANDROID__ +#endif // !defined(__ANDROID__) || defined(NO_ANDROID_LIBLOG) namespace androidicuinit { namespace impl { -#ifndef __ANDROID__ +#if !defined(__ANDROID__) || defined(NO_ANDROID_LIBLOG) // http://b/171371690 Avoid dependency on liblog and libbase on host // Simplified version of android::base::unique_fd for host. class simple_unique_fd final { @@ -103,10 +103,10 @@ class simple_unique_fd final { _rc; \ }) #endif -#endif // #ifndef __ANDROID__ +#endif // !defined(__ANDROID__) || defined(NO_ANDROID_LIBLOG) // http://b/171371690 Avoid dependency on liblog and libbase on host -#ifdef __ANDROID__ +#if defined(__ANDROID__) && !defined(NO_ANDROID_LIBLOG) typedef android::base::unique_fd aicu_unique_fd; #else typedef simple_unique_fd aicu_unique_fd; diff --git a/libandroidicuinit/IcuRegistration.h b/libandroidicuinit/IcuRegistration.h index ded6f5bf9..ca8007bbb 100644 --- a/libandroidicuinit/IcuRegistration.h +++ b/libandroidicuinit/IcuRegistration.h @@ -21,7 +21,14 @@ #include <string> #include <cstdio> -#ifdef __ANDROID__ + +/** + * def NO_ANDROID_LOGGING + * This flag turns off the usage of liblog, and logs into stderr instead. + * This is not expected to be used in Android platform build, but is useful + * when building this ICU4C for unbundled library or app. + */ +#if defined(__ANDROID__) && !defined(NO_ANDROID_LIBLOG) #include <android-base/logging.h> #include <android-base/unique_fd.h> #include <log/log.h> diff --git a/libandroidicuinit/android_icu_init.cpp b/libandroidicuinit/android_icu_init.cpp index 575370388..71fcec67e 100644 --- a/libandroidicuinit/android_icu_init.cpp +++ b/libandroidicuinit/android_icu_init.cpp @@ -24,7 +24,13 @@ void android_icu_init() { // We know that the environment variables are exported early in init.environ.rc on Android. #ifdef __ANDROID__ - runAndroidInit = true; + #ifdef ANDROID_ICU_NO_DAT + // If we're intentionally building ICU on Android without the .dat file, no + // need to run init. + runAndroidInit = false; + #else // !ANDROID_ICU_NO_DAT + runAndroidInit = true; + #endif #else // ART host testing environment has these env variables set. runAndroidInit = getenv("ANDROID_DATA") != NULL && getenv("ANDROID_TZDATA_ROOT") != NULL && @@ -47,4 +53,4 @@ void android_icu_cleanup() { AICU_LOGW("libicuuc is not initialized and possibly never used, " "but android_icu_cleanup() is called."); } -}
\ No newline at end of file +} |