cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Grieve <agri...@chromium.org>
Subject Re: Deprecation of Config and the embedded use case (4.0.x related)
Date Tue, 17 Mar 2015 16:10:00 GMT
I just mean use:

apply plugin: 'android-library'

rather than

apply plugin: 'android'

On Tue, Mar 17, 2015 at 11:09 AM, Carlos Santana <csantana23@gmail.com>
wrote:

> Andrew when you say "denote your app as an android library"
>
> Your thinking a AAR archive, which includes the cordova-platform core,
> cordova.js, and plugins native and web assets?
>
> On Tue, Mar 17, 2015 at 11:06 AM, Carlos Santana <csantana23@gmail.com>
> wrote:
>
> > Andrew similar requirement we have for iOS.
> > If we implement something like that in CLI to have an option to produce a
> > library instead of an App.
> >
> > In theory this is something we have discussed here in IBM, to do
> something
> > similar with Cocoa Pods, produce a cocoapod that represent the iOS
> Cordova
> > Web View to be easily added to a existing iOS Native App and using Pod is
> > an easy way to be added and managed.
> >
> >
> > On Tue, Mar 17, 2015 at 11:03 AM, Carlos Santana <csantana23@gmail.com>
> > wrote:
> >
> >> Andrew where is this new enhancements documented, Only place I can find
> >> any documentation is here:
> >>
> http://cordova.apache.org/docs/en/4.0.0/guide_platforms_android_webview.md.html#Android%20WebViews
> >>
> >> Can you update this Docs?
> >>
> >> In addition to having the docs updated I think it will be great
> >> beneficial if one the Android Gurus do a blog post with tutorial style,
> >> from end to end on how to do this, and a quick video would not hurt
> also ;-)
> >>
> >>
> >> On Tue, Mar 17, 2015 at 10:57 AM, Andrew Grieve <agrieve@chromium.org>
> >> wrote:
> >>
> >>> On Tue, Mar 17, 2015 at 10:10 AM, Carlos Santana <csantana23@gmail.com
> >
> >>> wrote:
> >>>
> >>> > @Michal
> >>> > I would get together with Marcel and Martin, they are our Android
> goto
> >>> SME
> >>> >
> >>> > @Joe
> >>> > Do we have all the test cases  created now are some missing?
> >>> > How do you run this specific test cases on Android Studio? Google
> team
> >>> any
> >>> > help on gradle to run this test cases on CI I think is very important
> >>> to
> >>> > have a healhty CI running test cases on every pull request or commit
> >>> >
> >>> I've already ported the unit test over to gradle and they are easy to
> run
> >>> in Android Studio. There are some instructions in the test/README.md
> >>>
> >>> To be clear, the embedding ability was *improved* in 3.7.0, in that you
> >>> can
> >>> now control all configurations directly from Java.
> >>>
> >>>
> >>>
> >>> >
> >>> > Hum I don't know how I feel about the Plugins not working, I think
> >>> this is
> >>> > the key on using Cordova.
> >>> > If I'm just going to have a Web View with no Cordova then I would use
> >>> In
> >>> > App Browser.
> >>> >
> >>> > The whole purpose of Including a "Cordova" Web View in to a full
> Native
> >>> > Android App, It's the "Cordova" functionality which resides mostly
in
> >>> the
> >>> > Plugins!
> >>> > Maybe I misunderstood your statements about plugins not working.
> >>> >
> >>> >
> >>> >
> >>> > On Mon, Mar 16, 2015 at 9:31 PM, Joe Bowser <bowserj@gmail.com>
> wrote:
> >>> >
> >>> > > Well, this feature was tested using TDD, and when the tests were
> >>> > re-written
> >>> > > I assumed that they would be run.  In this case, I'll blame Android
> >>> > Studio,
> >>> > > since we're still battling with the learning curve on that one.
 (I
> >>> have
> >>> > no
> >>> > > clue how to run the new tests from Gradle on the command line,
only
> >>> in
> >>> > > Android Studio).
> >>> > >
> >>> > > The thing is that another refactor removing layouts broke the
> tests,
> >>> > which
> >>> > > is how I know that they weren't run.  So, I landed a couple of
> >>> commits to
> >>> > > refactor the unit tests so that they test this use case with the
> new
> >>> API
> >>> > > and the tests now pass.  This works again, and we can update the
> >>> > > documentation,
> >>> > >
> >>> > > There's still the matter of getting the plugins to work, but I'm
> fine
> >>> > with
> >>> > > leaving that to be an exercise for the downstreams that support
> >>> this, and
> >>> > > not Cordova itself.
> >>> > >
> >>> > >
> >>> > >
> >>> > > On Mon, Mar 16, 2015 at 6:27 PM Michal Mocny <mmocny@chromium.org>
> >>> > wrote:
> >>> > >
> >>> > > > Carlos, thats great, then perhaps you could give 4.0 embedded
> >>> webview a
> >>> > > > shot to confirm that it is still adequately supported for
your
> >>> > customers?
> >>> > > >
> >>> > > > I think this thread has been too much talk and not enough
trying
> >>> it out
> >>> > > in
> >>> > > > practice.  Everyone agrees the use case is important, what's
left
> >>> is to
> >>> > > > confirm we got it right.
> >>> > > >
> >>> > > > -Michal
> >>> > > >
> >>> > > > On Mon, Mar 16, 2015 at 8:58 PM, Carlos Santana <
> >>> csantana23@gmail.com>
> >>> > > > wrote:
> >>> > > >
> >>> > > > > I just want to add that Joe is not alone on thinking
that are
> >>> > > developers
> >>> > > > > with this use case.
> >>> > > > > For us we have customers that start with Native Android
alone,
> >>> and
> >>> > then
> >>> > > > > later want to add a Cordova Web View to a portion of
their App.
> >>> > > > > And they want an easy way to add a Cordova Web View.
> >>> > > > > For 4.x, I would assume that the developer can choose
to make
> >>> this
> >>> > > > embedded
> >>> > > > > Cordova Web View CrossWalk based.
> >>> > > > >
> >>> > > > >
> >>> > > > > On Wed, Mar 11, 2015 at 10:24 AM, Joe Bowser <
> bowserj@gmail.com>
> >>> > > wrote:
> >>> > > > >
> >>> > > > > > That's why we have tests! I just changed the activity
and saw
> >>> that
> >>> > we
> >>> > > > > have
> >>> > > > > > one failure.  I'm not sure why this test in particular
is
> >>> failing,
> >>> > > > since
> >>> > > > > > there's too many assertions in one method, so I'll
have to
> try
> >>> and
> >>> > > > debug
> >>> > > > > it
> >>> > > > > > today.
> >>> > > > > >
> >>> > > > > > The thing is that if we're deprecating something
and
> replacing
> >>> it
> >>> > > with
> >>> > > > > > something else, we should write tests for it. 
Releasing a
> >>> 4.0.x
> >>> > and
> >>> > > > > > changing how we embed a WebView by changing class
names but
> not
> >>> > > fixing
> >>> > > > up
> >>> > > > > > the deprecation is bizzare.
> >>> > > > > >
> >>> > > > > > On Wed, Mar 11, 2015 at 7:15 AM Andrew Grieve <
> >>> > agrieve@chromium.org>
> >>> > > > > > wrote:
> >>> > > > > >
> >>> > > > > > > I wanted to make sure that I didn't break
the old way of
> >>> doing
> >>> > > > things.
> >>> > > > > > >
> >>> > > > > > > On Tue, Mar 10, 2015 at 2:24 PM, Joe Bowser
<
> >>> bowserj@gmail.com>
> >>> > > > wrote:
> >>> > > > > > >
> >>> > > > > > > > The main issue is that this isn't documented
anywhere,
> and
> >>> this
> >>> > > is
> >>> > > > > > > > necessary for people to use a Third Party
WebView.  Also,
> >>> why
> >>> > > > didn't
> >>> > > > > > you
> >>> > > > > > > > bother updating the test with the new
API?
> >>> > > > > > > >
> >>> > > > > > > > On Mon, Mar 9, 2015 at 5:19 PM Andrew
Grieve <
> >>> > > agrieve@chromium.org
> >>> > > > >
> >>> > > > > > > wrote:
> >>> > > > > > > >
> >>> > > > > > > > > Here's an example:
> >>> > > > > > > > >
> >>> > > > > > > > > ConfigXmlParser parser = new ConfigXmlParser();
> >>> > > > > > > > > parser.parse(activity);
> >>> > > > > > > > > webView.init(cordova, parser.getPluginEntries(),
> >>> > > > > > > > parser.getPreferences());
> >>> > > > > > > > >
> >>> > > > > > > > > Feel free to iterate if you think
the API is too
> obtuse,
> >>> but
> >>> > I
> >>> > > > > think
> >>> > > > > > > it's
> >>> > > > > > > > > good to allow a file-less mode,
and to allow different
> >>> > WebViews
> >>> > > > to
> >>> > > > > > have
> >>> > > > > > > > > different settings.
> >>> > > > > > > > >
> >>> > > > > > > > >
> >>> > > > > > > > >
> >>> > > > > > > > >
> >>> > > > > > > > > On Mon, Mar 9, 2015 at 8:08 PM,
Joe Bowser <
> >>> > bowserj@gmail.com>
> >>> > > > > > wrote:
> >>> > > > > > > > >
> >>> > > > > > > > > > Do you have an example of how
this would work? This
> >>> seems
> >>> > to
> >>> > > > be a
> >>> > > > > > lot
> >>> > > > > > > > > more
> >>> > > > > > > > > > complex than it needs to be.
> >>> > > > > > > > > >
> >>> > > > > > > > > > On Mon, Mar 9, 2015 at 5:05
PM Andrew Grieve <
> >>> > > > > agrieve@chromium.org
> >>> > > > > > >
> >>> > > > > > > > > wrote:
> >>> > > > > > > > > >
> >>> > > > > > > > > > > It's so that you can have
multiple CordovaWebViews
> >>> that
> >>> > use
> >>> > > > > > > different
> >>> > > > > > > > > > > configs within one application.
It's also so that
> you
> >>> > don't
> >>> > > > > have
> >>> > > > > > to
> >>> > > > > > > > > have
> >>> > > > > > > > > > a
> >>> > > > > > > > > > > config.xml if you prefer
to build up your config in
> >>> code
> >>> > > > > instead.
> >>> > > > > > > > > > >
> >>> > > > > > > > > > > I don't think loadConfig()
is deprecated. It has
> >>> > > > > > > > > > > a @SuppressWarnings("deprecation"),
which just
> >>> silences a
> >>> > > > > warning
> >>> > > > > > > > > about
> >>> > > > > > > > > > it
> >>> > > > > > > > > > > setting the config of
the Config class (which is
> >>> done for
> >>> > > > > > backwards
> >>> > > > > > > > > > > compatibility).
> >>> > > > > > > > > > >
> >>> > > > > > > > > > >
> >>> > > > > > > > > > > On Mon, Mar 9, 2015 at
3:54 PM, Joe Bowser <
> >>> > > > bowserj@gmail.com>
> >>> > > > > > > > wrote:
> >>> > > > > > > > > > >
> >>> > > > > > > > > > > > OK, this actually
makes using the WebView as a
> >>> > component
> >>> > > a
> >>> > > > > lot
> >>> > > > > > > > > harder,
> >>> > > > > > > > > > > > since you now have
to have this loadConfig method
> >>> which
> >>> > > you
> >>> > > > > > also
> >>> > > > > > > > > marked
> >>> > > > > > > > > > > for
> >>> > > > > > > > > > > > deprecation required
to get all of the necessary
> >>> > > attributes
> >>> > > > > out
> >>> > > > > > > of
> >>> > > > > > > > > > this.
> >>> > > > > > > > > > > > I'm pretty sure this
is a major step backwards in
> >>> that
> >>> > > > people
> >>> > > > > > > > looking
> >>> > > > > > > > > > to
> >>> > > > > > > > > > > > use Cordova as a
component now have to jump
> through
> >>> > > > > additional
> >>> > > > > > > > hoops
> >>> > > > > > > > > to
> >>> > > > > > > > > > > get
> >>> > > > > > > > > > > > this to work.  What
is the benefit of deprecating
> >>> the
> >>> > > > Config
> >>> > > > > > > static
> >>> > > > > > > > > > class
> >>> > > > > > > > > > > > and replacing it
with the ConfigXmlParser again?
> I
> >>> > don't
> >>> > > > > > remember
> >>> > > > > > > > why
> >>> > > > > > > > > > > this
> >>> > > > > > > > > > > > was done.
> >>> > > > > > > > > > > >
> >>> > > > > > > > > > > > On Mon, Mar 9, 2015
at 9:04 AM Andrew Grieve <
> >>> > > > > > > agrieve@chromium.org
> >>> > > > > > > > >
> >>> > > > > > > > > > > wrote:
> >>> > > > > > > > > > > >
> >>> > > > > > > > > > > > > On Mon, Mar
9, 2015 at 11:56 AM, Joe Bowser <
> >>> > > > > > bowserj@gmail.com
> >>> > > > > > > >
> >>> > > > > > > > > > wrote:
> >>> > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > On Mon,
Mar 9, 2015 at 7:39 AM Andrew Grieve
> <
> >>> > > > > > > > > agrieve@chromium.org
> >>> > > > > > > > > > >
> >>> > > > > > > > > > > > > wrote:
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > > You
can now instantiate a CordovaWebView
> >>> without
> >>> > a
> >>> > > > > > > > config.xml,
> >>> > > > > > > > > > and
> >>> > > > > > > > > > > > > > without
> >>> > > > > > > > > > > > > > > using
Config. This happened when I added an
> >>> > > "init()"
> >>> > > > > > method
> >>> > > > > > > > to
> >>> > > > > > > > > > > > > > > CordovaWebView.
You can pass in a
> >>> > > CordovaPreferences
> >>> > > > > > > object,
> >>> > > > > > > > > and
> >>> > > > > > > > > > a
> >>> > > > > > > > > > > > list
> >>> > > > > > > > > > > > > > of
> >>> > > > > > > > > > > > > > > PluginEntry.
Maybe we just need a better
> >>> comment
> >>> > on
> >>> > > > > > Config
> >>> > > > > > > > > saying
> >>> > > > > > > > > > > to
> >>> > > > > > > > > > > > > use
> >>> > > > > > > > > > > > > > > these
instead?
> >>> > > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > Where does
one get this PluginEntry list when
> >>> > they're
> >>> > > > > > > > embedding a
> >>> > > > > > > > > > > > > WebView?
> >>> > > > > > > > > > > > > > This needs
to be documented or at least put
> in
> >>> the
> >>> > > test
> >>> > > > > > that
> >>> > > > > > > > > tests
> >>> > > > > > > > > > > this
> >>> > > > > > > > > > > > > use
> >>> > > > > > > > > > > > > > case.
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > > >
That has nothing to do with InAppBrowser,
> >>> this
> >>> > is
> >>> > > > to
> >>> > > > > do
> >>> > > > > > > > with
> >>> > > > > > > > > > > > > embedding
> >>> > > > > > > > > > > > > > a
> >>> > > > > > > > > > > > > > > >
WebView inside an Android application. I
> >>> don't
> >>> > > > think
> >>> > > > > > you
> >>> > > > > > > > > > > understand
> >>> > > > > > > > > > > > > > what
> >>> > > > > > > > > > > > > > > I
> >>> > > > > > > > > > > > > > > >
mean when I say the embedded use case.
> >>> > > > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > > Maybe
try explaining a bit more?
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > Even though
you edited the test that
> explicitly
> >>> > > covers
> >>> > > > > this
> >>> > > > > > > > use,
> >>> > > > > > > > > > > case,
> >>> > > > > > > > > > > > > and
> >>> > > > > > > > > > > > > > even though
we've talked about using
> >>> CordovaWebView
> >>> > > as
> >>> > > > an
> >>> > > > > > > > Android
> >>> > > > > > > > > > > View
> >>> > > > > > > > > > > > > for
> >>> > > > > > > > > > > > > > over a
year, you need it explained more?
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > So, not
everyone wants to use all of Cordova,
> >>> for
> >>> > > many
> >>> > > > > > > reasons.
> >>> > > > > > > > > > > > Instead,
> >>> > > > > > > > > > > > > > they really
just want to take advantage of
> the
> >>> > > WebView
> >>> > > > > > > > component
> >>> > > > > > > > > in
> >>> > > > > > > > > > > > their
> >>> > > > > > > > > > > > > > native
apps so that they can create hybrid
> apps
> >>> > that
> >>> > > > are
> >>> > > > > > > mostly
> >>> > > > > > > > > > > native
> >>> > > > > > > > > > > > > with
> >>> > > > > > > > > > > > > > only some
parts that use Cordova.  This is
> >>> where
> >>> > you
> >>> > > > > would
> >>> > > > > > > > > declare
> >>> > > > > > > > > > > your
> >>> > > > > > > > > > > > > > view in
your layout XML like this:
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > <org.apache.cordova.engine.SystemWebView
> >>> > > > > > > > > > > > > >
>  android:id="@+id/WebViewComponent"
> >>> > > > > > > > > > > > > >
>  android:layout_width="match_parent"
> >>> > > > > > > > > > > > > >
> >>>  android:layout_height="match_parent">
> >>> > > > > > > > > > > > > > </org.apache.cordova.engine.SystemWebView>
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > And then,
in the activity start up your view
> >>> like
> >>> > > this:
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > >   private
CordovaWebView webInterface;
> >>> > > > > > > > > > > > > >   private
CordovaInterfaceImpl
> systemInterface
> >>> =
> >>> > new
> >>> > > > > > > > > > > > > > CordovaInterfaceImpl(this);
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > //Set up
the webview
> >>> > > > > > > > > > > > > >       
 SystemWebView webView =
> (SystemWebView)
> >>> > > > > > > > > > > > > > findViewById(R.id.WebViewComponent);
> >>> > > > > > > > > > > > > >       
 webInterface = new
> >>> CordovaWebViewImpl(this,
> >>> > > new
> >>> > > > > > > > > > > > > > SystemWebViewEngine(webView));
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > >       
 Config.init();
> >>> > > > > > > > > > > > > >       
 webInterface.init(systemInterface,
> >>> > > > > > > > > > > Config.getPluginEntries(),
> >>> > > > > > > > > > > > > > Config.getPreferences());
> >>> > > > > > > > > > > > > >
>  webView.loadUrl(Config.getStartUrl());
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > Right now,
we're getting the configuration
> >>> from the
> >>> > > > > Config
> >>> > > > > > > > class,
> >>> > > > > > > > > > > > because
> >>> > > > > > > > > > > > > > we at least
have access to this.  If we don't
> >>> have
> >>> > > > this,
> >>> > > > > > how
> >>> > > > > > > do
> >>> > > > > > > > > > > people
> >>> > > > > > > > > > > > > get
> >>> > > > > > > > > > > > > > access
to the list of plugin entries
> specified
> >>> in
> >>> > > > > > Config.xml?
> >>> > > > > > > > > I'm
> >>> > > > > > > > > > > > pretty
> >>> > > > > > > > > > > > > > sure we
still want to support this feature.
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > > > Does that
make sense?
> >>> > > > > > > > > > > > > >
> >>> > > > > > > > > > > > >
> >>> > > > > > > > > > > > > I gotcha. So,
I think the answer is to use
> >>> > > > > ConfigXmlParser()
> >>> > > > > > to
> >>> > > > > > > > > > extract
> >>> > > > > > > > > > > > the
> >>> > > > > > > > > > > > > information
required by init. You shouldn't
> need
> >>> the
> >>> > > call
> >>> > > > > > > > > > Config.init()
> >>> > > > > > > > > > > > at
> >>> > > > > > > > > > > > > all.
> >>> > > > > > > > > > > > >
> >>> > > > > > > > > > > >
> >>> > > > > > > > > > >
> >>> > > > > > > > > >
> >>> > > > > > > > >
> >>> > > > > > > >
> >>> > > > > > >
> >>> > > > > >
> >>> > > > >
> >>> > > > >
> >>> > > > >
> >>> > > > > --
> >>> > > > > Carlos Santana
> >>> > > > > <csantana23@gmail.com>
> >>> > > > >
> >>> > > >
> >>> > >
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > Carlos Santana
> >>> > <csantana23@gmail.com>
> >>> >
> >>>
> >>
> >>
> >>
> >> --
> >> Carlos Santana
> >> <csantana23@gmail.com>
> >>
> >
> >
> >
> > --
> > Carlos Santana
> > <csantana23@gmail.com>
> >
>
>
>
> --
> Carlos Santana
> <csantana23@gmail.com>
>

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