cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Carlos Santana <csantan...@gmail.com>
Subject Re: Deprecation of Config and the embedded use case (4.0.x related)
Date Tue, 17 Mar 2015 15:09:03 GMT
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