當我們寫完 ionic 項目準備打包成 apk 時(比如執行 或者 等命令),經常會出現一些莫名其妙的問題,特別是對原生開發並不太熟悉的人,往往就是一臉懵逼啊。 因此,很有必要將這些經常出現的問題及對應解決方案做一個彙總,方便查閱。 問題1 產生原因 主要原因是 插件升級引起的,該插件已經包含在 中 ...
當我們寫完 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,則會出現這個問題。
解決方法
- 升級
[email protected]
以上 - 升級
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
中解壓