We have a legacy protocol stack written in C with c-protobuf interface and C++ wrapper API that need to be ported to Android and develop java service with AIDL interfaces. So here are the questions,
Can we remove C++ interface and have Java service talking to C- native process over protobuf?
Another approach is to strip c-protobuf interface and develop JNI interface. What is the trade off between protobuf vs JNI approach?
As far I know performance will be an issue due to IPC, serialization etc compared to JNI approach. Is there any other major drawback with this approach considering Java and Android context? Also, this service is going to be used by multiple user applications.
Sure that should work.
As @pskink already pointed out, JNI will cause smaller overhead. Especially in case of large number of calls with small arguments. As a bonus you can actually choose to pass serialized protocol buffer in form of byte array. I would expect the overhead of that to be quite small and it can make further modifications of the interface easier.
Depending on how you plan to pack everything together the JNI interface might be easier to maintain compatible as everything is build into a single APK.