Sure, Although at the same time, if you are doing this, you really *should* be using an Android library project: it just makes it simpler for the users of the library.
kris On Thu, Feb 14, 2013 at 12:32 PM, RKSHR <[email protected]> wrote: > > - I've made the jar approach work before, and intuitively statically > linked code shouldn't really be doing anything as long as you're not > making references to the resources classes. > > I was hoping someone would say this. Thankyou. I will try to paste the > code I was trying in a while and then hopefully you could identify any > changes. And yes I'm certainly not using resources. > > - Why do you think you have to distribute code with an Android library > project? You can just remove (everything in) the src/ directory and > distribute it that way, no source required. > > - Now given that you have got the jar approach to work, I will hold on to > the Android Library approach for the moment. > > > > On Wednesday, February 13, 2013 5:33:30 PM UTC-8, Kristopher Micinski wrote: >> >> I'm still confused for two reasons: >> >> - I've made the jar approach work before, and intuitively statically >> linked code shouldn't really be doing anything as long as you're not >> making references to the resources classes. >> >> - Why do you think you have to distribute code with an Android library >> project? You can just remove (everything in) the src/ directory and >> distribute it that way, no source required. >> >> I'm not sure why your previous approach wasn't working: I'd have to >> see an example of what you're doing to postulate as to why you >> couldn't make it work, but in the end everything is bytecode. >> >> Kris >> >> On Wed, Feb 13, 2013 at 8:25 PM, RKSHR <[email protected]> wrote: >> > The discussion that I started initially was to find out if a service can >> > be >> > defined in a jar file (not Android library) and if the jar file can be >> > distributed for application developers and if they can bind or start >> > that >> > service ? I was simply unable to do it. Ofcourse, the service was >> > declared >> > in the application's manifest file. Once I created a Android library >> > and >> > defined the service in the library, then it worked fine, but with this >> > approach, source code of the library will have to distributed. >> > >> > RK >> > >> > >> > On Wednesday, February 13, 2013 4:26:51 PM UTC-8, Kristopher Micinski >> > wrote: >> >> >> >> If I'm not misreading this discussion, the problem is that every >> >> service must explicitly be declared in a manifest file. There is no >> >> such thing as implicitly or programmatically creating a service. >> >> (This has an unfortunate benefit for would be dynamic scripting >> >> languages implemented ala JVM wrapper which might otherwise allow you >> >> to have first class components..) >> >> >> >> This is pretty typical: lots of jars for Android are distributed with >> >> the caveat that you need to explicitly declare a certain Service in >> >> your Android manifest. >> >> >> >> And yes, library projects basically allow you to do this for the user >> >> using your project, so that they don't have to (as) explicitly set up >> >> your components. >> >> >> >> Kris >> >> >> >> On Wed, Feb 13, 2013 at 5:11 PM, RKSHR <[email protected]> wrote: >> >> > I spent some more time and this is what I found so far. >> >> > >> >> > - An app cannot bind to a service or instantiate a service if the >> >> > service is >> >> > declared in a jar file (that is not a Android library). Note that >> >> > I'm >> >> > just >> >> > building a jar file using javac compiler and jar utility, without the >> >> > need >> >> > for AndroidManifest xml file. I tried creating a TestService class >> >> > that >> >> > extends Service class and built that into a jar. In a test app, I >> >> > imported >> >> > the jar file and put a break point in onStart() and onCreate() >> >> > methods >> >> > of >> >> > TestService class. In the app I tried calling both bindService and >> >> > startService, both of them return a false or a null value and the >> >> > debugger >> >> > never breaks in onStart() or onCreate(). Both these methods had one >> >> > line >> >> > implementations with a just a call to their super class like >> >> > super.onStart(). >> >> > >> >> > - In the next step I moved the TestService outside of the jar into an >> >> > Android library (in Eclipse enable checkbox "Is Library" or >> >> > project.properties should contain android.Library=true ). I built >> >> > the >> >> > library and included it into the test app. Now i can instantiate the >> >> > service >> >> > using bindService API from the app, the debugger breaks in onStart() >> >> > and >> >> > onCreate() methods of TestService class. >> >> > >> >> > >> >> > On Monday, February 11, 2013 4:30:56 PM UTC-8, Lew wrote: >> >> >> >> >> >> RKSHR wrote: >> >> >>> >> >> >>> No the JAR is not set up as a Library project, as all I have is, >> >> >>> compile >> >> >>> the classes using javac and then bundle them into a jar using jar >> >> >>> builder. >> >> >> >> >> >> >> >> >> You should probably build it as a library project, since it does >> >> >> have >> >> >> something specific to Android in it. >> >> >> >> >> >> I'm not expert in library projects, but as I understand they're the >> >> >> way >> >> >> to >> >> >> package Android stuff for other Android stuff. >> >> >> >> >> >> >> >> >> By "nothing specific to android [sic]", I meant the classes used >> >> >> within >> >> >> the service, other than the obvious service class. I did not have >> >> >> this >> >> >> service class before and there is a singleton factory class that the >> >> >> app was >> >> >> using to instantiate. Now I have moved the factory instantiation >> >> >> into >> >> >> the >> >> >> service class. I want the app to just bind to the service, so the >> >> >> factory >> >> >> instantiation happens in the background within the service. >> >> >> >> >> >> >> >> >> There's a world of difference between "nothing" and "nothing other >> >> >> than... >> >> >> ". >> >> >> >> >> >> And that difference might be the difference that makes the >> >> >> difference. >> >> >> You >> >> >> might want to investigate. >> >> >> >> >> >>> >> >> >>> Lew wrote: >> >> >>>> >> >> >>>> RKSHR wrote: >> >> >>>>> >> >> >>>>> I did make sure that there were no R.xx classes in the service, >> >> >>>>> infact >> >> >>>>> I dont need any resources in the service. I did double check >> >> >>>>> again >> >> >>>>> and >> >> >>>>> nothing was present, although an import definition to resources >> >> >>>>> class was >> >> >>>>> left there. I wasn't sure if it would make a difference, but I >> >> >>>>> removed that >> >> >>>>> definition anyway and recompiled the jar without any different >> >> >>>>> result. The >> >> >>>>> application loading the jar, still cannot bind to the service. >> >> >>>>> The >> >> >>>>> service >> >> >>>>> is a very simple class that just instantiates a set of regular >> >> >>>>> java >> >> >>>>> classes >> >> >>>>> (nothing specific to Android). I'm not even able to debug into >> >> >>>>> the >> >> >>>>> service, >> >> >>>>> I have a break point at onStart() and onCreate() methods and it >> >> >>>>> never falls >> >> >>>>> there. I will continue looking. .thanks. >> >> >>>> >> >> >>>> >> >> >>>> "nothing specific to Android" is obviously false since there's a >> >> >>>> service >> >> >>>> class in there. >> >> >>>> >> >> >>>> Is the JAR source set up as an Android library project? >> >> >>>> >> >> >> >> >> > >> >> > -- >> >> > -- >> >> > You received this message because you are subscribed to the Google >> >> > Groups "Android Developers" group. >> >> > To post to this group, send email to [email protected] >> >> > To unsubscribe from this group, send email to >> >> > [email protected] >> >> > For more options, visit this group at >> >> > http://groups.google.com/group/android-developers?hl=en >> >> > --- >> >> > You received this message because you are subscribed to the Google >> >> > Groups >> >> > "Android Developers" group. >> >> > To unsubscribe from this group and stop receiving emails from it, >> >> > send >> >> > an >> >> > email to [email protected]. >> >> > For more options, visit https://groups.google.com/groups/opt_out. >> >> > >> >> > >> > >> > -- >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "Android Developers" group. >> > To post to this group, send email to [email protected] >> > To unsubscribe from this group, send email to >> > [email protected] >> > For more options, visit this group at >> > http://groups.google.com/group/android-developers?hl=en >> > --- >> > You received this message because you are subscribed to the Google >> > Groups >> > "Android Developers" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> > an >> > email to [email protected]. >> > For more options, visit https://groups.google.com/groups/opt_out. >> > >> > > > -- > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Android Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > -- -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

