cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Bowser <bows...@gmail.com>
Subject Re: [Android] CB-8976, CB-8453 and is there anyone building multiple APKs
Date Wed, 02 Mar 2016 22:17:36 GMT
On Wed, Mar 2, 2016 at 2:02 PM, Carlos Santana <csantana23@gmail.com> wrote:

> Avoiding a large APK is kind of a good feature to have, to build small apk
> targeted to specific architecture.
>
> What's your proposal ? Maybe I missed it
>
>
Step 1. Remove the code that changes version codes but has nothing to do
with architecture and get users to specify the Android Version Code in the
config.xml like so:
<widget android-versionCode="19" id="ca.dontflyhere.app" version="0.0.1"
xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="
http://cordova.apache.org/ns/1.0">


> You said to remove multiple apk generation or have multiple apk generation
> being don in a different way to handle the versionCode per architecture?
>
>
Yeah, for the short term, I think multiplying by 10, and reserving the last
spot to denote x86 or arm isn't an awful solution, but it's far from
ideal.  If we can turn off multiple APK generation and add the ability to
set an architecture, then this would turn into a manual step for the
developer to take advantage of, and they can decide if version 11 is arm
and version 12 is x86, but I'm not sure if developers are able to handle
that or want it abstracted, which is why I'm asking.


>
> On Wed, Mar 2, 2016 at 4:41 PM Joe Bowser <bowserj@gmail.com> wrote:
>
> > On Wed, Mar 2, 2016 at 1:26 PM, Carlos Santana <csantana23@gmail.com>
> > wrote:
> >
> > > If it's not well documented how this multiple APKs suppose to work and
> > use.
> > > then I would say the impact is low
> > >
> >
> > I disagree, since people using Crosswalk are expecting that behaviour by
> > default right now.  We don't have to built multiple APKs with Crosswalk
> > but bundling both the X86 and the ARM libraries makes the APK 48 MB.
> >
> >
> > > If it's not part of the build.json in --buildConfig spec [1]  then also
> > low
> > > impact.
> > >
> > >
> > I would agree if build.json was universally adopted as the way to do
> > things, and there wasn't multiple ways people were building production
> > apps.  Right now, it's more likely that someone would store a
> > settings.gradle file pointing to the keystore instead, especially since
> it
> > doesn't prompt for a password like build.json does.
> >
> >
> >
> > > It would be good to get some of those answers to the questions you have
> > > about apk requiring different version code on store
> > >
> > >
> > I just tried to deploy multiple APKs with different architectures on the
> > play store, you can't do it.  If you try, you replace your ARM apk with
> an
> > x86 APK.  You have to have a different version code for each of them.
> >
> >
> >
> > > Maybe it make sense to remove it from builde.gradle and move it to
> > > build.json if it's something that is something that comes into play
> when
> > > releasing instead of being normal dev cycle.
> > >
> > > [1]:
> > >
> > >
> >
> https://cordova.apache.org/docs/en/dev/guide/platforms/android/#signing-an-app
> > >
> > >
> > > On Wed, Mar 2, 2016 at 4:12 PM Joe Bowser <bowserj@gmail.com> wrote:
> > >
> > > > On Wed, Mar 2, 2016 at 1:07 PM, Carlos Santana <csantana23@gmail.com
> >
> > > > wrote:
> > > >
> > > > > First sorry for my stupid questions :-)
> > > > >
> > > > > Why do we need to mess with this versionCode?
> > > > >
> > > > >
> > > > Short Answer: We shouldn't have to.
> > > >
> > > > Long Answer: We might need it for Crosswalk only.
> > > >
> > > >
> > > >
> > > > > How a native developer creating a new Android App today using
> Android
> > > > > Studio and gradle handle this?
> > > > >
> > > >
> > > > They set it in the Android Manifest like they're supposed to.  This
> > > hasn't
> > > > changed AFAIK.  Apparently having multiple APKs in the store means
> that
> > > you
> > > > have to have different version codes, although I haven't tested this
> > yet.
> > > >
> > > >
> > > > > Should that help us determined how it should work for Cordova Apps?
> > > > >
> > > >
> > > > You'd think, but then we wouldn't have this weird system in place
> right
> > > > now.  I wish we talked about this more, but this seems to have mostly
> > > flown
> > > > in under the radar when we were getting Cordova 4.0 out.
> > > >
> > > >
> > > > >
> > > > > Can we come with a similar system, or no system, or it's user space
> > > where
> > > > > they can put a version code they want to use in config.xml in
> > > conjunction
> > > > > with of the version string (i.e. 1.0.0) that they are already using
> > in.
> > > > >
> > > > >
> > > > >
> > > > I believe that config.xml already does this, but we then munge it all
> > up
> > > > because someone thought that we might want to have many APKs instead
> of
> > > > just one APK for a version of Android.  This is something that's
> pissed
> > > off
> > > > various developers over the past year, and the reason I'm asking is
> > > because
> > > > I want to see it deleted, but don't want to break anyone who relies
> on
> > > it.
> > > >
> > > >
> > > > >
> > > > >
> > > > >
> > > > > On Wed, Mar 2, 2016 at 3:58 PM Joe Bowser <bowserj@gmail.com>
> wrote:
> > > > >
> > > > > > OK, so, I'm dealing with this code, which pisses me off to no
> end:
> > > > > >
> > > > > >     if (Boolean.valueOf(cdvBuildMultipleApks)) {
> > > > > >         productFlavors {
> > > > > >             armv7 {
> > > > > >                 versionCode defaultConfig.versionCode + 2
> > > > > >                 ndk {
> > > > > >                     abiFilters "armeabi-v7a", ""
> > > > > >                 }
> > > > > >             }
> > > > > >             x86 {
> > > > > >                 versionCode defaultConfig.versionCode + 4
> > > > > >                 ndk {
> > > > > >                     abiFilters "x86", ""
> > > > > >                 }
> > > > > >             }
> > > > > >             all {
> > > > > >                 ndk {
> > > > > >                     abiFilters "all", ""
> > > > > >                 }
> > > > > >             }
> > > > > >         }
> > > > > >     } else if (!cdvVersionCode) {
> > > > > >       def minSdkVersion = cdvMinSdkVersion ?:
> > > > > > privateHelpers.extractIntFromManifest("minSdkVersion")
> > > > > >       // Vary versionCode by the two most common API levels:
> > > > > >       // 14 is ICS, which is the lowest API level for many apps.
> > > > > >       // 20 is Lollipop, which is the lowest API level for the
> > > > updatable
> > > > > > system webview.
> > > > > >       if (minSdkVersion >= 20) {
> > > > > >         defaultConfig.versionCode += 9
> > > > > >       } else if (minSdkVersion >= 14) {
> > > > > >         defaultConfig.versionCode += 8
> > > > > >       }
> > > > > >     }
> > > > > >
> > > > > > So, right now if you're not using Crosswalk at all, your default
> > > > version
> > > > > > code will be 18 instead of 1, and 28 for the second version
if
> you
> > > > aren't
> > > > > > using Crosswalk.  I can see why people would build multiple
APKs
> > per
> > > > > > architectures, but if you're building multiple APKs for different
> > > > > versions
> > > > > > of Android, we've all done something wrong and we never asked
for
> > > this
> > > > > > feature to be added to Cordova.  The whole point of Cordova
is to
> > > work
> > > > > > across multiple platforms, and that does include multiple
> versions
> > of
> > > > > > Android.
> > > > > >
> > > > > > However, since this stupid code was added back in 4.0.x, I'm
> > > wondering
> > > > if
> > > > > > anyone is relying on this code before I rip it out and have
> version
> > > > codes
> > > > > > mean exactly what they're supposed to mean.  That means that
when
> > you
> > > > > build
> > > > > > and release your first app without using Crosswalk, your
> > application
> > > > > > version code will be 1.  Not 18, not 19, but 1.  Then when you
> > build
> > > > > > another version, that version will be 2, and so on.
> > > > > >
> > > > > > What do people think of this code going away?  Crosswalk will
> > > probably
> > > > > have
> > > > > > to have the different version codes, since I think us defining
a
> > > system
> > > > > > could work better than leaving this up to the user and having
> > things
> > > go
> > > > > > horribly sideways when people are trying to keep track of whether
> > > they
> > > > > > released an arm or x86 binary, since we already decided to take
> > > > > > responsibility for this.
> > > > > >
> > > > > > So, feedback on this would be good.
> > > > > >
> > > > > > On Thu, Feb 18, 2016 at 11:09 AM, Darryl Pogue <darryl@dpogue.ca
> >
> > > > wrote:
> > > > > >
> > > > > > > Not intentionally on my end, but when I add the CrossWalk
> plugin
> > I
> > > > > > > seem to get two APKs as output (one for armv7, one for
x86).
> > > > > > >
> > > > > > > On 18 February 2016 at 11:05, Joe Bowser <bowserj@gmail.com>
> > > wrote:
> > > > > > > >
> > > > > > > > Hey
> > > > > > > >
> > > > > > > > Based on the feedback on those two issues, and other
places,
> I
> > > > think
> > > > > > that
> > > > > > > > most hated change from Cordova-Android 4.0 that we
didn't fix
> > in
> > > > > > > > Cordova-Android 5.0 was the fact that we have an undocumented
> > way
> > > > of
> > > > > > > > generating an arbitrary build number that makes absolutely
no
> > > > sense.
> > > > > > > > Furthermore, this screws up people's automated builds,
and
> can
> > > > cause
> > > > > > the
> > > > > > > > version code to reach MAX_INT.
> > > > > > > >
> > > > > > > > If you want to know why nobody has touched it until
now, it's
> > > > because
> > > > > > > > everyone hates working with Gradle.  I can say the
exact same
> > > thing
> > > > > > about
> > > > > > > > why we're not using ProGuard.
> > > > > > > >
> > > > > > > > Now, I'm starting on my flensing of the gradle files
that we
> > have
> > > > in
> > > > > > > here,
> > > > > > > > trying to figure out what we can rip out and I'm wondering
if
> > > > anyone
> > > > > is
> > > > > > > > actually using the multiple APK generation before
I remove
> it.
> > If
> > > > > > people
> > > > > > > > are, I'm going to have to figure out another way for
this to
> > > > happen,
> > > > > > > > because this is definitely breaking people's applications,
> and
> > > > using
> > > > > > > random
> > > > > > > > hooks isn't a good answer.
> > > > > > > >
> > > > > > > > So, is anyone using this, or can this feature die!
> > > > > > > >
> > > > > > > > Joe
> > > > > > >
> > > > > > >
> > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
> > > > > > > For additional commands, e-mail: dev-help@cordova.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

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