前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ionic构建打包apk出现的问题集合

Ionic构建打包apk出现的问题集合

作者头像
laixiangran
发布2018-07-25 14:23:31
1.7K0
发布2018-07-25 14:23:31
举报
文章被收录于专栏:前端布道

当我们写完 ionic 项目准备打包成 apk 时(比如执行 ionic cordova platform add android 或者 ionic cordova build android 等命令),经常会出现一些莫名其妙的问题,特别是对原生开发并不太熟悉的人,往往就是一脸懵逼啊。

因此,很有必要将这些经常出现的问题及对应解决方案做一个汇总,方便查阅。

问题1

代码语言:javascript
复制
BUILD FAILED

Total time: 29.304 secs
Error: cmd: Command failed with exit code 1 Error output:
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:font
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontStyle
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontWeight
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processArmv7ReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

产生原因

主要原因是 cordova-plugin-compat 插件升级引起的,该插件已经包含在 cordova-android 6.3.0 中。如果你的应用使用了地理定位、文件操作或者其它依赖 cordova-plugin-compat 插件的插件的话,而 cordova-plugin-compat 这个插件已经包含在 cordova-android 6.3.0,如果你的 cordova-android 版本小于 6.3.0,则会出现这个问题。

解决方法

  • 升级 cordova-android@6.3.0 以上
  • 升级 android-sdk/platforms 到 android-26 以上
  • 删除 cordova-plugin-compat 插件,删除 plugins/android.jsonplugins/fetch.json 中有关该插件的信息,并升级依赖该插件的其它所有插件

参考资料

https://forum.ionicframework.com/t/android-build-broken-after-gradle-dependencies-update-execution-failed-for-task-processdebugresources-com-android-ide-common-process-processexception-failed-to-execute-aapt/109982/80

问题2

代码语言:javascript
复制
Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio

产生原因

window 开发环境下没有将 gradle 配置到环境变量 path 中。

解决方法

  • 去 https://services.gradle.org/distributions/ 下载对应版本的 gradle,如 gradle-3.3-bin.zip
  • gradle-3.3-bin.zip 解压之后放置到某个目录下,如 D:\Program Files\gradle-3.3
  • 在环境变量 path 中添加 D:\Program Files\gradle-3.3\bin
  • 打开 cmd 输入 gradle -v,验证是否配置成功

参考资料

https://blog.csdn.net/capmiachael/article/details/73289478

问题3

下载 gradle-xxx-all.zip 太慢或失败

代码语言:javascript
复制
BUILD SUCCESSFUL

Total time: 6.591 secs
Subproject Path: CordovaLib
Downloading https://services.gradle.org/distributions/gradle-3.3-all.zip
...

产生原因

下载 gradle 是直接在 http://services.gradle.org/distributions/ 上下载的,由于国内网络的限制,而 gradle-x.x-all.zip 文件比较大(60M以上),因此下载的过程会比较漫长,有时候会下载失败

解决方法

  • 去 https://services.gradle.org/distributions/ 下载对应版本的 gradle,如 gradle-3.3-all.zip
  • 无需下载,放在项目下的 platforms/android/gradle 目录下
  • 找到项目下的 platforms/android/cordova/lib/builders/GradleBuilder.js,然后修改其中的 var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\://services.gradle.org/distributions/gradle-2.14.1-all.zip';var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || '../gradle-3.3-all.zip';

参考资料

https://www.cnblogs.com/macq/p/6494798.html

问题4

gradle 构建时下载 maven 太慢

产生原因

依然是网络的原因。

解决方法

  • 使用国内阿里云的服务,修改项目下的 platforms\android\build.gradle 为:
代码语言:javascript
复制
buildscript {
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    }
}

allprojects {
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    }
}

参考资料

https://www.cnblogs.com/Ave-Maria/p/6274621.html

问题5

代码语言:javascript
复制
Execution failed for task ':app:processDebugResources'. > Failed to execute aapt

产生原因

暂时不清楚。

解决方法

/platforms/android 中新建 build-extras.gradle 文件,并添加如下内容:

代码语言:javascript
复制
configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

如果是 cordova-android 7.0.0,则也要在 /platforms/android/app 中新建 build-extras.gradle 文件。

参考资料

https://stackoverflow.com/questions/49162538/running-cordova-build-android-unable-to-find-attribute-androidfontvariation/49172982#49172982

问题6

代码语言:javascript
复制
Error: cmd: Command failed with exit code 1 Error output:
Exception in thread "main" java.lang.RuntimeException: Timeout of 120000 reached waiting for exclusive access to file: C:\Users\laixiangran\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9\gradle-3.3-all.zip
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
        at org.gradle.wrapper.Install.createDist(Install.java:48)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

产生原因

主要还是网络原因,导致无法在 C:\Users\你的用户名\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9 中解压 gradle-3.3-all.zip

解决方法

  • 去 https://services.gradle.org/distributions/ 下载对应版本的 gradle,如 gradle-3.3-all.zip
  • -然后在 C:\Users\你的用户名.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9 中解压
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端布道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题1
    • 产生原因
      • 解决方法
        • 参考资料
        • 问题2
          • 产生原因
            • 解决方法
              • 参考资料
              • 问题3
                • 产生原因
                  • 解决方法
                    • 参考资料
                    • 问题4
                      • 产生原因
                        • 解决方法
                          • 参考资料
                          • 问题5
                            • 产生原因
                              • 解决方法
                                • 参考资料
                                • 问题6
                                  • 产生原因
                                    • 解决方法
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档