On Tue, Oct 21, 2008 at 11:01 PM, hackbod <[EMAIL PROTECTED]> wrote:
>
> On Oct 21, 11:10 am, tauntz <[EMAIL PROTECTED]> wrote:
>> Ok, understood, these methods are non-public and reserved for Google
>> applications only ;)
>
> NO.  They are private to the SYSTEM.  They are not for application
> use.  This is because they are not stable and change across releases.
> There may be some applications in the source tree using them, but
> these applications are only shipped as part of the system image, so
> that is okay.  In other words, if you use private APIs, you can -only-
> distribute the resulting app by having a carrier bundle it with a
> phone.

I think I have a wrong understanding of SYSTEM and APPLICATIONS then :/
I always thought that (for example) the Contacts thingie is an
application and NOT a system component. But you are saying that these
methods and classes are NOT for application use.. but the Contacts
thingie uses them ergo the Contacts thingie is a system component and
not an Application that is equal to all other apps that everybody else
can create.

One of Androids main promises is that "Any app on the mobile device
can be replaced or extended -- even core components such as the dialer
or home." Now word-for-word this holds true - I can replace the
Contacts system component with a self-made Contacts application
(AFAIK.. correct me if I'm wrong)  but my replacement will always be
inferior to the Google created one because it has no access to the
various APIs that the Google created Contacts thingie has.

Sure, I understand why you don't give the same permissions to third
party apps like (for example) the Google marketplace has. (OK, in a
perfect world it SHOULD be the users choice what apps he wants to
install on his own phone.. and phone/OS manufacturers should not
restrict his/her choice based on what they think the user wants) But
currently you are using some harmless private APIs in your own
applications that ship with the device and denying access to the same
functionality/integration to other apps.

Don't get me wrong, I don't want to start a flamewar or anything like
that. It's just that I want the same integration with the system as
Google created applications have (to a reasonable extent of course..
I'm not talking about functionality that can compromise security etc).
I hope that's not too much to ask.


>> Would it be imaginable that (some time in the future) all non-public
>> APIs are in the com.google* domain and not in the same domain as all
>> the public classes (android.*)?
>
> We have been migrating private APIs to the com.android.internal
> packages, but it will NEVER be the case that everything under
> android.* is public.  Never, ever.  Just link to the SDK, which is
> guaranteed to only contain the supported public APIs, and you are
> good.

Nice to hear that you are cleaning the house (:


>> Currently it's a little confusing if I look at the source of some
>> Google app and see that it uses (for example) the method
>> lookupProviderCategoryFromId(..) from the class
>> android.provider.Contacts.ContactMethods. Now the public API has a
>> class with the exact same name and package but without the method that
>> Google uses so I always have to manually check if a method or constant
>> exists in the public API documentation when looking through the source
>> code (and after that I have to check if it also exists in the real SDK
>> since the SDK and the API documentation are also not the same). It
>> would be much easier if public and non-public stuff is in separate
>> packages (like com.sun.* in instead of java.* (J2SE)).
>
> Yes, a lot of the bundle apps shipped with the system are using
> private APIs, and this needs to be cleaned up.  This is mostly an
> artifact of the apps being developed in parallel with the platform for
> the last 2-3 years, and not having time to do a final cleanup of them
> to switch to the public APIs.  This is something that needs to be
> done.
>
> Again, if you are doing third party app development, you really need
> to be developing against the SDK.  That is what it is there for.

Finally.. someone from Google saying that not all apps are created
equal. There are Google apps that can do whatever they want to do and
then there are third party apps that can only do what Google allows
them to do. And that's perfectly fine.. that's exactly how all other
phone OSs work. It's just that some people have currently the wrong
impression that you can create applications on Android that can do
*anything* and if they see an application bundled with the system,
they have the impression that they can have an app with the exact same
functionality/system integration.

It's good that you are trying to improve this and I'll hope that
sometime in the future all apps will truly be equal (:
And again, I'm sorry if I sound offensive or whiney.. I'm trying not
to be. We all have the same common goal here - you want to make the
best mobile OS and we want to develop for the best mobile OS (;


(Ok, this should go to the discuss list but since it started here I'll
post this also here.)
Tauno

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to