0

Since both iOS and Android use ICU under the hood and provide some functionalities provided by ICU in their own API, Is ICU important in mobile app development. I am looking for best practices in mobile app development considering a scenario where i want to develop cross platform(iOS, Android) apps. Will there be any benefit in compiling ICU for both iOS and Android ( One i see is similar API's in Code base of app) and using them instead of using ios/android API.

How do app developers who develop both for iOS and Android go about their g18n requirements.

Thanks

user1294764
  • 103
  • 9
  • It may depend on what functionality you use. If you can use something already available in the platform, then you have consistency with the platform and its user experience. If you have need for something not exposed by the platform, you could use a subset of ICU. See the userguide http://userguide.icu-project.org/ for information on packaging and subsetting ICU. Just a comment, not a full answer. – Steven R. Loomis Apr 23 '14 at 18:11
  • Hi Steven, I am looking for gaps between ICU and platform(iOS/Droid) provided functionalities for g18n. Since I know (from ICU mailing lists) that you are one of the ICU experts :), could you please point me towards any such compiled information, if that exists. I am evaluating it myself, service by service but since I don't use all of ICU features it is becoming complicated to compare the features. Most of the features i compared(Unicode conversions, Formatting, date time calender functions) are provided by the platforms. Any specific you know of that don't exist on platforms Thanks – user1294764 Apr 24 '14 at 10:23
  • thanks… I don't have such a list myself, I am afraid. Perhaps someone will answer here. – Steven R. Loomis Apr 25 '14 at 00:06

1 Answers1

0

I am developing a cross-platform (iOS + Android) app that uses ICU very heavily. According to the team that create the data for the apps neither the Android or iOS built in versions implement enough of the features for us to use it.

So I have had to compile it for iOS and Android.

In iOS this proved to be relatively easy, I forked: https://github.com/zhm/icu-ios and followed the instructions.

In android I had to use: https://github.com/android/platform_external_icu4c and build it using the NDK.

I had issues building because the default Android.mk files don't work correctly and there are settings in Application.mk that need to be set, neither of which are mentioned in the help files.

On top of that the NDK doesn't let the .dat file be included in the library, so I needed to also mmap that.

I would suggest that on an app-by-app basis you decide if you can live with the built in features or not, because building the full version for Android is not pleasant.

Southy
  • 93
  • 1
  • 1
  • 7
  • Could you please give me which which functions ICU missed. I evaluated icu myself but i could usually find most of the functions. Though i couldn't get into details as my task is just to evaluate not provide. – user1294764 Jun 06 '14 at 06:45
  • I don't actually know, I was just told by my boss that ICU, and the standard version of sqlite3, in Android and iOS were not complete enough. So I had to build them both from source. – Southy Jun 07 '14 at 07:33