Yes, the problem is with android.
Others have the same problem
https://www.pilotlogic.com/sitejoom/index.php/forum/cross-build-development/3820-compile-android-library-include-indy-components-failed-cannot-find-liconv
That is not the same error that zeljkoc is experiencing. That error shows the iconvenc unit being compiled fine (not including some hints), the project is just not linking to the actual iconv library.
In zeljkoc's case, the compiler is not even finding the iconvenc unit at all.
Does Indy depend on iconv?
On 'Nix platforms, yes. Android uses Java running on top of Linux, and being that Indy is a native code library, it runs at the Linux layer, not at the Java layer.
Indy does a lot of operations that have to encode Unicode strings to byte arrays, and decode byte arrays to Unicode strings. Now, certainly Indy could be updated to handle UTF encodings manually at least, but seeing that there are still many charsets being used in the world other than UTFs, especially for things like email, it would not be feasible for Indy to handle all of those charsets manually, so it uses platform APIs to handle them, such as iconv on 'Nix.
There are some higher level hooks available in Indy if you want to handle charsets manually in your own code (like the
GIdEncodingNeeded event in the
IdGlobalProtocols unit, and various methods that take a user-supplied
IIdTextEncoding as a parameter), but I don't think there are enough hooks available at the lower level to completely break the iconv dependency at this time. For instance, you could disable the
USE_ICONV define in
IdCompilerDefines.inc, but then you will have to manually provide an implementation for the
TIdMBCSEncoding class in the
IdGlobal unit, or else Indy's handling of UTF-7, UTF-8, and other non-UTF charsets will break at runtime.