ICP Java SDK for Android and Java Applications

I am applying for a $5k Developer Grant to build Java SDK for Andorid and Java applications.

At present, ICP has very low presence in mobile application. That’s mainly due to lack of infrastructure. We will solve this problem by building a secure open source Java SDK that will enable Android and other Java developer’s build their application on top of ICP.

I have woking on this domain for more than 7 years and has extensive knowledge in building and spreding developer tools for Andorid and Java developers.

I belive with this SDK we can have 100+ Android app’s built on ICP and can bring 10k+ user’s that currently access internet through Mobile. Our SDK will be optimised primarily for Android but can be used used in other Java Applications as well.

I’m looking forward to everyone’s input!

Reviewer Registration | Rubric for Evaluating | Submit a Review

MY APPLICATION:

REVIEWS:

@rdobrik already built GitHub - ic4j/ic4j-agent: IC4J Agent for the Internet Computer. Can you explain a bit what would differentiate your Grant from his work?

@Severin The library you shared is primarily designed for backend side Java Applications. Developer created a library to easy the Java backend ICP integration and then simply created an OkHttp wrapper to make it usable for Android as well but problem is many of the libraries used here are not supported/ works well in Android application.

Some of dependencies that are Not Supported/Works well in Andorid:

  1. Jackson Libraries (com.fasterxml.jackson.*): While Jackson works on Android, it can be overkill for simpler applications and could contribute to larger application size and slower performance due to its comprehensive feature set.
  2. Apache HttpClient5 : Apache HTTP Client was removed from the Android SDK due to multiple issues.
  3. Other apache libs might work with android but it will make application very bulky.
  4. icj4-candid: This has multiple dependencies that can’t be use in Android.
  5. Jakarta XML Binding API (jakarta.xml.bind:jakarta.xml.bind-api): This library is part of Java EE and is not directly supported in Android, which uses a different XML processing approach.
  6. SLF4J Simple (org.slf4j:slf4j-simple): SLF4J on Android can lead to issues because Android uses its own logging system (Logcat).
  7. Mock Server Libraries (org.mock-server:mockserver-netty, org.mock-server:mockserver-junit-jupiter): These libraries are typically used for server mocks in Java applications and are not designed for direct use in Android

Currently even if we somehow able to run this package in Android, it will make overall Android app too bulky to use. And hence it will not be preffered by most of the developers.

What we need is a Lite version, that can be used on devices with low computation power.

3 Likes

Good point @nikhil5642 . We can remove unnecessary packages from Android installation customizing Gradle packaging. Contact me if you need any help.

1 Like

@rdobrik Thanks for the support. I needed small input from you, I have sent you an email for that.

3 Likes

Do you have any examples of developer tools that you have created in the past?

1 Like

@jennifertran Sure, in past I have created following tools.

  1. Centralised dependency management tool in Android for a Big Tech.
  2. Android Analytics and Auto Recommendation SDK for Developers.
  3. Indoor tracking SDK for a real estate client.

Most of the work is done in private repo’s so can’t share the links here. You can DM me anytime if you have any question regarding same.
Thanks

1 Like

Thank you for the advisement. Community reviewers are taking more time to review. Why not integrate with the existing Java CDK instead of building a new CDK?

1 Like

I have discussed this approach with the Roman, and we have decided to start with this approach only for ic4j-candid. I will start with making changes in existing module and try to build a lighter version for both the libraries i.e. ic4j-candid and ic4j-agent. However we should be aware that there is high risk of getting blocked.

1 Like

This grant was approved. The embed link accidentally got messed up, so here are the application and updated version: