问题
I have added Crosswalk to my ionic project. When i do ionic build android
it outputs two separate APK files, one for armv7 and one for x86.
However i want one single apk file bundling two architectures together.
I tried setting BUILD_MULTIPLE_APKS = false
but it's still building two separate apks.
There is a post here saying :
Took me a minute but you can get the single build file by commenting out the cdvBuildMultipleApks=true line in the platforms/android/gradle.properties
Cheers
But i don't have any gradle.properties file in my platforms/android/ folder, i have a project.properties file and there is no cdvBuildMultipleApks=true
line in it to comment out.
I tried to manually create a gradle.properties file and putting cdvBuildMultipleApks=false
in there but still two outputs.
Any ideas how to achieve this?
Update:
My Cordova version is 5.1.1
Solution:
What did work for me as suggested by @mudasserajaz and here, was to :
- Create a file named
build-extras.gradle
inside my/platform/android/
directory. - put
ext.cdvBuildMultipleApks=false
inside it. ionic build android --release
then and Voila, it worked.
@mudasserajaz suggested the same thing except variable name is cdvBuildMultipleApks=false
so in case it didn't work out for you, don't forget the ext
回答1:
Here are steps to do that:
- Make a file
build-extras.gradle
and put it intoplatforms/android/
. Add linecdvBuildMultipleApks=false
intobuild-extras.gradle
. - Now run
ionic run android
, it will create combined single buildandroid-debug.apk
.
build.gradle
will automaticaly import build-extras.gradle
,if that is defined.You can see code of build.gradle
doing this :
def hasBuildExtras = file('build-extras.gradle').exists()
if (hasBuildExtras) {
apply from: 'build-extras.gradle'
}
Plus these instructions are clearly mentioned in build.gradle
line 57 :
Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties.
NOTE: Before you follow these steps, remove platform folder and install again.
Observations: Once you have done these steps, and again at some point, you want to make separate builds, then setting cdvBuildMultipleApks=true
or commenting out sometimes won't work, you will simply have to install platform again. (P.S this is my personal observation, otherwise deleting build-extras.gradle
should be enough.)
回答2:
Well I just changed my config.xml
following property to false
and it combined the build apk.
from
<preference name="xwalkMultipleApk" value="true"/>
to
<preference name="xwalkMultipleApk" value="false"/>
My systems ionic info
returns
Your system information:
Cordova CLI: 6.1.1
Gulp version: CLI version 3.9.1
Gulp local: Local version 3.9.1
Ionic CLI Version: 1.7.16
Ionic App Lib Version: 0.7.3
OS:
Node Version: v4.4.4
回答3:
As of today, in 2018, we probably can ignore x86 mobile platform, as there's indeed hardly any mobile using Intel CPU.
This has the advantage of a smaller APK. A single-platform APK is smaller than the multi-platform APK.
回答4:
Make sure to check the output folder.
I noticed that "cordova build" was still output both arm7 and x86 after adding to my build-extra.gradle but the output folder contained "android-release.apk" as well.
Deleting both arm7 and x86 APK's from the output folder (project/platforms/android/build/outputs/apk/)
it immediately stopped them from being shown by "corodva build".
Hope this helps.
来源:https://stackoverflow.com/questions/32535551/building-combined-armv7-x86-apk-after-crosswalk-integration-in-an-ionic-project