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 <csantan...@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 <agri...@chromium.org>
> wrote:
>
>> On Tue, Mar 17, 2015 at 10:10 AM, Carlos Santana <csantan...@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 <bows...@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 <mmo...@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 <
>> csantan...@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 <bows...@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 <
>> > agri...@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 <
>> bows...@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 <
>> > > agri...@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 <
>> > bows...@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 <
>> > > > > agri...@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 <
>> > > > bows...@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 <
>> > > > > > > agri...@chromium.org
>> > > > > > > > >
>> > > > > > > > > > > wrote:
>> > > > > > > > > > > >
>> > > > > > > > > > > > > On Mon, Mar 9, 2015 at 11:56 AM, Joe Bowser <
>> > > > > > bows...@gmail.com
>> > > > > > > >
>> > > > > > > > > > wrote:
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > > On Mon, Mar 9, 2015 at 7:39 AM Andrew Grieve <
>> > > > > > > > > agri...@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
>> > > > > <csantan...@gmail.com>
>> > > > >
>> > > >
>> > >
>> >
>> >
>> >
>> > --
>> > Carlos Santana
>> > <csantan...@gmail.com>
>> >
>>
>
>
>
> --
> Carlos Santana
> <csantan...@gmail.com>
>



-- 
Carlos Santana
<csantan...@gmail.com>

Reply via email to