Ionic构建打包apk出现的问题集合
当我们写完 ionic 项目准备打包成 apk 时(比如执行 ionic cordova platform add android 或者 ionic cordova build android 等命令),经常会出现一些莫名其妙的问题,特别是对原生开发并不太熟悉的人,往往就是一脸懵逼啊。
因此,很有必要将这些经常出现的问题及对应解决方案做一个汇总,方便查阅。
问题1
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.json和plugins/fetch.json中有关该插件的信息,并升级依赖该插件的其它所有插件
参考资料
问题2
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 太慢或失败
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为:
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
Execution failed for task ':app:processDebugResources'. > Failed to execute aapt
产生原因
暂时不清楚。
解决方法
在 /platforms/android 中新建 build-extras.gradle 文件,并添加如下内容:
configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:27.1.0'
}
}
如果是 cordova-android 7.0.0,则也要在 /platforms/android/app 中新建 build-extras.gradle 文件。
参考资料
问题6
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中解压
问题7
Error:Could not find common.jar (android.arch.core:common:1.1.0).
Searched in the following locations:
https://jcenter.bintray.com/android/arch/core/common/1.1.0/common-1.1.0.jar
产生原因
在 platforms\android\build.gradle 中有这样的几行代码:
allprojects {
repositories {
jcenter()
maven { url "https://maven.google.com" }
}
}
报错的信息表明在 jcenter() 对应的仓库中无法找到 common.jar,导致 gradle 在编译时就直接报错,而不会再往下执行,但其实执行到 maven { url "https://maven.google.com" } 时就可以找到 common.jar。
解决方法
将 jcenter() 放在最后面,修改之后的代码:
allprojects {
repositories {
maven { url "https://maven.google.com" }
jcenter()
}
}
参考资料
- https://stackoverflow.com/questions/50570134/could-not-find-common-jar-android-arch-corecommon1-1-0?tdsourcetag=s_pctim_aiomsg
- https://blog.csdn.net/Stanny_Bing/article/details/80632287?tdsourcetag=s_pctim_aiomsg
Ionic构建打包apk出现的问题集合的更多相关文章
- Android使用Jenkins自动化构建测试打包apk
Jenkins这东西搭建起来真是一点也不省心啊,看着别人的教程摸着石头过河,配置的东西有点多啊,稍有不慎,就构建不成功啦!即使步骤跟别人一样也会报各种乱七八糟的错误啊哈哈~~这东西只能佛系搭建~~在经 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- 【转】android Apk打包过程概述_android是如何打包apk的
最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成 ...
- ionic2新手入门整理,搭建环境,创建demo,打包apk,热更新,优化启动慢等避坑详解
onic官方文档链接:http://ionicframework.com/docs/ 如果是新的环境会有很多坑,主要是有墙,请仔细阅读每个步骤 文档包含以下内容: l 环境搭建 l 创建demo并 ...
- Docker+Jenkins持续集成环境(5): android构建与apk发布
项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...
- ionic app打包和签名
ionic app打包和签名 1.首先在项目根目录执行 ionic platform add android 生成Android平台. 2.配置应用签名:在根目录下执行以下命令 keytool - ...
- 从零学习Fluter(七):Flutter打包apk详解
写一个win上 flutter 打包apk的教程 这篇文档介绍一下flutter打包发布正式版apk 整体来看,和命令行打包rn的方法相差不大 打包前先做检查工作&查看构建配置 Android ...
- Android直接用手机打包apk!
你没有看错,用手机浏览器访问Jenkins,就可以打包apk,并生成下载二维码,发送邮件通知测试人员下载,从此解放双手,告别打包测试.先上本人手机邮箱收到的打包成功通知效果图: 废话少说, ...
- python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk)
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.6.zip 注意:由于涉及到 ...
随机推荐
- VC++ 获取文件属性创建时间、修改时间和访问时间
转载:http://blog.sina.com.cn/s/blog_66bf8d8301014ikd.html WIN32_FIND_DATA结构 关于文件的全部属性信息,总计有以下以下9 种:文件的 ...
- 在Windows下搭建Android开发环境及遇到的问题
转载1:http://www.cnblogs.com/xdp-gacl/p/4322165.html 转载2:http://www.cnblogs.com/zoupeiyang/p/4034517.h ...
- JS(JavaScript)脚本库的积累
在现在互联网盛行的时代,使得B/S架构飞速发展.曾经在大学的时候我一直都梦想着毕业后要找一个像腾讯这样大企业做C/S方面的开发工作(其实现在腾讯也有很多B/S软件),因为C/S体验度非常高,感觉非常好 ...
- 【前端】javascript+jQuery实现360开机时间显示效果
实现效果: 实现原理: 给关闭按钮绑定点击事件,点击以后触发动画效果.利用jQuery的animate方法,先让显示天气的盒子高度变为0,接着让整个包含天气和事件的盒子宽度变为0,最后通过将displ ...
- PHP Extension
新手搞PHP ,之前用过 PERL, BASH: 所以开始用PHP 写程序上手比较快, 几天之后对PHP 的内部实现机制产生了兴趣,所以自己尝试着写写简单的PHP 扩展,以增加对PHP 的理解. ...
- 螺旋折线|2018年蓝桥杯B组题解析第七题-fishers
标题:螺旋折线 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...
- 【分词器及自定义】Elasticsearch中文分词器及自定义分词器
中文分词器 在lunix下执行下列命令,可以看到本来应该按照中文”北京大学”来查询结果es将其分拆为”北”,”京”,”大”,”学”四个汉字,这显然不符合我的预期.这是因为Es默认的是英文分词器我需要为 ...
- SQLSERVER 内存占用高的处理方式
https://www.cnblogs.com/srsrd/p/6962982.html 方法一: 方法二: 使用以下语句查找出什么语句占内存最高,针对占内存高的语句进行优化SELECT SS.SUM ...
- BZOJ 1001: [BeiJing2006]狼抓兔子(s-t平面图+最短路求最小割)
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 题意: 思路:这道题目是最小割题目,但是吧你直接套用Dinic是会超时的. 这里有种很奇妙的做 ...
- Codeforces Round #225 (Div. 2) E. Propagating tree dfs序+-线段树
题目链接:点击传送 E. Propagating tree time limit per test 2 seconds memory limit per test 256 megabytes inpu ...