I should have said, "statically linked code isn't really doing
anything *differently*"

Kris

On Wed, Feb 13, 2013 at 8:33 PM, Kristopher Micinski
<[email protected]> 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.


Reply via email to