Search code examples
javaandroideclipsethrift

Thrift client on Android


I'm new to android development and want to create an app with a thrift client which is using a thrift server on my network. I already got the thrift definition file and the java code generated by the thrift compiler.

  1. How do I need to start? How do I add the thrift library to my project? Do I need to compile it myself and if yes how should I accomplish this to be android compatible?

  2. Can I directly use the auto generated functions similar to this

    public void getProduct(int productID, org.apache.thrift.async.AsyncMethodCallback resultHandler)
    

    to make asynchronous calls to my service so that I follow the android best practices? Or does using this function block my application in any way or is there another way to be preferred over this on android?

I use the current version of googles ADT (eclipse). My app needs to run just on android 4+ devices (I set the minSdkVersion to 15).


Solution

    1. yes, you need to build the thrift-lib for Android by yourself. Android has it's own httpcore that doesn't have a consume-method. here you can find how to change the thrift-library: here instruction After that just add the jar-file to the libs-folder and add it to the build-path.

    2. example

      THttpClient hclient = new THttpClient("your/endpoint/url");
      TProtocol protocol = new TBinaryProtocol(hclient); // it depends on your data-format
      Service.Client client = new Service.Client(protocol);
      Product product = client.getProduct(int productID);
      

    you need to execute it as an Android AsyncTask: AsyncTask | Android Developers