cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Grieve <agri...@chromium.org>
Subject Re: Android: add support of min/max/target SDK to config.xml
Date Thu, 14 Aug 2014 14:32:39 GMT
Really good summary / proposal Ian! Your thoughts on minSdkVersion make
complete sense to me.

I'd tweak just one thing - that if minSdkVersion is provided in the
top-level config.xml is less than what plugins require, or what Cordova
itself requires, then we error out.

To allow plugins to participate in this, I think we'll have to add a new
tag / logic to plugin.xml. It doesn't fit the mould of <config-file>, since
we don't actually want it to modify the platform config.xml, but rather the
AndroidManifest. Maybe we just allow <preference> within plugin.xml?


re: target & max sdk. I agree we don't want plugins to touch this, but I do
think it's fine if we allow the user to specify it in their config.xml. The
PR as-is isn't enough though, because if you remove the preferences, then I
think we'd want the values to go back to their defaults (PR doesn't do this
yet).

Q: Where do we store the platform defaults? Extract them from the template
AndroidManifest.xml and save them within android.json?




On Thu, Aug 14, 2014 at 9:03 AM, Ian Clelland <iclelland@chromium.org>
wrote:

> I'd like to revisit this, since it's come up for me with building Crosswalk
> with Gradle recently.
>
> Crosswalk requires a minimum API level of 14, which is specified in the
> library project's AndroidManifest.xml. Gradle refuses to build a Cordova
> project (Min API 10) with Crosswalk included, unless I manually edit my
> projects top-level AndroidManifest.xml to match.
>
> In order to make the crosswalk-engine plugin automatically installable, I'd
> need to either bump the minimum version in the template project in
> cordova-android (seems stupid) or allow the plugin to set the minimum
> version that it requires.
>
> And I don't think this is unreasonable; it seems like a valid use of the
> minSdkVersion. If a plugin actually requires a more recent API than the
> minimum specified by Cordova, then that should be okay. The developer
> shouldn't be forced to litter their code with @decorations and fallback
> code for earlier versions, if there's no way to provide the functionality
> anyway. Doing otherwise is just fooling the compiler (and the play store)
> into thinking that the resulting application will work on Gingerbread-era
> devices, when it won't.
>
> I think that the right way forward is this:
>
> The cordova-android template project specifies a minSdkVersion attribute
> that represents the earliest versions of android supported by a
> bare-bones-no-plugins Cordova app. The targetSdkVersion is the latest
> release that we've tested Cordova against, and there's no maxSdkVersion.
>
> The app, or any plugin, can specify a minSdkVersion, using the preference
> in Sergey's pull request. This value can only increase the minimum version
> in the top-level AndroidManifest.xml, never decrease it. The final value is
> the largest value specified by Cordova, all of the installed plugins, and
> the app itself.
>
> If we want to allow plugins / apps to specify targetSdkVersion or
> maxSdkVersion (and I'm not sure that we do yet), the logic is reversed. In
> that case, the *smallest* value would be used, since it represents the
> highest version of Android that all of the code was tested against / works
> with. No plugin should be able to increase that value beyond what any other
> plugin, or Cordova itself, has declared.
>
> I'd be happy with disallowing target and max for now, or perhaps only
> allowing them in the application itself (and not plugins) to prevent abuse,
> but I think that setting minSdkVersion is an important and useful feature,
> and I'd like to see it in cordova-lib before 4.0.x lands.
>
> Ian
>
>
>
> On Fri, Jul 11, 2014 at 1:27 PM, Frederico Galvão <
> frederico.galvao@pontoget.com.br> wrote:
>
> > I'll elaborate on this topic on the next couple of days then and come
> back
> > with a full feedback on this and folder structure + incremental builds
> next
> > week. That'll give all of us time to think and get into flow again.
> >
> >
> > 2014-07-10 23:46 GMT-03:00 Joe Bowser <bowserj@gmail.com>:
> >
> > > On 11 Jul 2014 00:22, "Frederico Galvão" <
> > frederico.galvao@pontoget.com.br
> > > >
> > > wrote:
> > > >
> > > > Are you guyus against the actual implementation being suggested or
> are
> > > you
> > > > against the idea as a whole?
> > >
> > > A bit of both, assuming you didn't add this feature. See below.
> > >
> > > > If the answer to the above is "I +1 the idea but -1 the current
> > > > implementation being suggested", then ignore the rest of this
> message,
> > > and
> > > > I'll say that I'm looking foward to this feature being released
> > (although
> > > > it's not a showstopper for me, I'm used to messing with the native
> > shell
> > > > after Cordova has spit it out for me).
> > > >
> > > > First I'll state that I agree that in no reasonable situation
> targetSdk
> > > > should NOT be equal to the most updated(Android) and
> suported(Cordova)
> > > > version.
> > >
> > > Awesome. Can this have an error appear when users break this?  Like for
> > > example, target a min API below 10, or mismatch the target?
> > >
> > > > Unless you intercept ant/gradle at a fundamental time in the build
> > > process
> > > > and force a certain sdkVersion (be it min, max, or target), Cordova
> > > already
> > > > can't protect itself against me changing those options on my
> > > > AndroidManifest.xml. By the way, this is exactly what I've been doing
> > for
> > > a
> > > > year and a half now, even with cordova 3.x.
> > > > So, if you mean a -1 to this trying to protect the app from building
> > > while
> > > > targetting "wrong" versions, I'll disagree with you.
> > > >
> > >
> > > Many of our users don't fiddle with AndroidManifest.xml until they have
> > to
> > > release the app.
> > >
> > > > However, I may take the need and consequences of this feature
> > differently
> > > > than others because I keep and maintain the platform folders in VCS
> > > > (against recommendations from the docs) and track changes to it every
> > > time
> > >
> > > Everyone does, because the platforms aren't build artifacts yet. I see
> > this
> > > feature not really helping make that happen without more thought at the
> > > very least.
> > >
> > > > a plugin is installed or a new version of Cordova is released, just
> > > because
> > > > the CLI alongside config.xml can't handle all the changes I need done
> > on
> > > > the native side as of today.
> > > >
> > >
> > > Where does it come short? I can say where I think it does, but this
> would
> > > actually help us out a bit.  Your feature may make sense if it was more
> > > strict in how it is used, so I'm not as against it as I was initially.
> > > (Remember, I'm supposed to be on PTO, and I have a prepaid with no
> tether
> > > and a crap WiFi connection to peck this out on.)
> > >
> > > >
> > > > 2014-07-10 17:28 GMT-03:00 Joe Bowser <bowserj@gmail.com>:
> > > >
> > > > > On 10 Jul 2014 19:58, bowserj@gmail.com wrote:
> > > > > >
> > > > > >
> > > > > > Completely disagree.  All this will do is make things not build
> and
> > > > > confuse users. It's our job to try and abstract this out and when
> we
> > > let
> > > > > users control this, their apps are terrible.  This feature is
> harmful
> > > and
> > > > > shouldn't be included.
> > > > >
> > > > > Decided that I should elaborate. If you see a legacy menu on a
> > PhoneGap
> > > App
> > > > > like the Canadian Avalanche Centre, you'll notice a menu that
> doesn't
> > > do
> > > > > anything.  This is what we want to avoid.
> > > > >
> > > > > Apologies for singling this app out, there are others, but this is
> an
> > > app I
> > > > > actually use occasionally.
> > > > >
> > > > > >
> > > > > > > @purplecabbage
> > > > > > > risingj.com
> > > > > > >
> > > > > > >
> > > > > > > On Thu, Jul 10, 2014 at 11:58 AM, Joe Bowser <
> bowserj@gmail.com>
> > > > > wrote:
> > > > > > >
> > > > > > > > -1
> > > > > > > >
> > > > > > > > I like adding min, but max and target build can really
break
> > the
> > > > > build,
> > > > > > > > especially when we try and use newer Chromium features.
 PG
> > Build
> > > has
> > > > > this
> > > > > > > > only because a method that we were using was removed
from
> > Cordova
> > > and
> > > > > they
> > > > > > > > have to support old versions.  We want people to upgrade
> > Cordova
> > > and
> > > > > this
> > > > > > > > makes it easier for people to stick to broken versions.
> > > > > > > > On Jul 10, 2014 11:40 AM, "Lisa Seacat DeLuca" <
> > > ldeluca@us.ibm.com
> > > >
> > > > > wrote:
> > > > > > > >
> > > > > > > > > Sergey, this is awesome!  Once we get your changes
pulled
> in
> > we
> > > > > should
> > > > > > > > > also update the documentation.  I can see this
being a
> > popular
> > > > > little
> > > > > > > > > feature for users.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Lisa
> > > > > > > > > @LisaSeacat
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > [image: Inactive hide details for "Sergey Grebnov
> (Akvelon)"
> > > > > > > > ---07/10/2014
> > > > > > > > > 04:23:07 AM---Implemented, pls take a look:
> https://github.c
> > > > > ]"Sergey
> > > > > > > > > Grebnov (Akvelon)" ---07/10/2014 04:23:07 AM---Implemented,
> > pls
> > > > > take a
> > > > > > > > > look: https://github.com/apache/cordova-lib/pull/56/files
> > > > > > > > >
> > > > > > > > > From: "Sergey Grebnov (Akvelon)" <v-segreb@microsoft.com>
> > > > > > > > > To: "dev@cordova.apache.org" <dev@cordova.apache.org>
> > > > > > > > > Date: 07/10/2014 04:23 AM
> > > > > > > > > Subject: RE: Android: add support of min/max/target
SDK to
> > > > > config.xml
> > > > > > > > > ------------------------------
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Implemented, pls take a look:
> > > > > > > > > https://github.com/apache/cordova-lib/pull/56/files
> > > > > > > > > https://issues.apache.org/jira/browse/CB-7114
> > > > > > > > >
> > > > > > > > > Thx!
> > > > > > > > > Sergey
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: tommy-carlos williams [mailto:tommy@devgeeks.org
> > > > > > > > > <tommy@devgeeks.org>]
> > > > > > > > > Sent: Monday, July 7, 2014 5:33 PM
> > > > > > > > > To: dev@cordova.apache.org
> > > > > > > > > Subject: Re: Android: add support of min/max/target
SDK to
> > > > > config.xml
> > > > > > > > >
> > > > > > > > > +1
> > > > > > > > >
> > > > > > > > > Another step towards build-artefact-land.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On 7 July 2014 at 23:29:25, Andrew Grieve (
> > > agrieve@chromium.org)
> > > > > wrote:
> > > > > > > > >
> > > > > > > > > I'd love to see this added.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Mon, Jul 7, 2014 at 7:29 AM, Sergey Grebnov
(Akvelon) <
> > > > > > > > > v-segreb@microsoft.com> wrote:
> > > > > > > > >
> > > > > > > > > > Propose to add support of the following
Android specific
> > > settings
> > > > > to
> > > > > > > > > > config.xml similar to PG Build[2]. Optional,
could be
> used
> > to
> > > > > override
> > > > > > > > > > default template values. I think this could
be very
> useful
> > > and
> > > > > will
> > > > > > > > > > implement this if we agree. Thoughts?
> > > > > > > > > >
> > > > > > > > > > <preference name="android-minSdkVersion"
value="10" />
> > > > > <preference
> > > > > > > > > > name="android-targetSdkVersion" value="19"
/> <preference
> > > > > > > > > > name="android-maxSdkVersion" value="20"
/>
> > > > > > > > > >
> > > > > > > > > > [1]
> > > > > > > > > >
> > > > >
> > http://developer.android.com/guide/topics/manifest/uses-sdk-element.ht
> > > > > > > > > > ml
> > > > > > > > > > [2]
> > > > > > > > > >
> > > > >
> > http://docs.build.phonegap.com/en_US/configuring_preferences.md.html#_
> > > > > > > > > > android_only
> > > > > > > > > >
> > > > > > > > > > Thx!
> > > > > > > > > > Sergey
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > >
> > > > *Frederico Galvão*
> > > >
> > > > Diretor de Tecnologia
> > > >
> > > > PontoGet Inovação Web
> > > >
> > > >
> > > > ( +55(62) 8131-5720
> > > >
> > > > * www.pontoget.com.br <http://www.pontoget.com/>
> > >
> >
> >
> >
> > --
> >
> > *Frederico Galvão*
> >
> > Diretor de Tecnologia
> >
> > PontoGet Inovação Web
> >
> >
> > ( +55(62) 8131-5720
> >
> > * www.pontoget.com.br <http://www.pontoget.com/>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message