Skip to content

一、相关平台平台打包【Android平台】

1. Android打包报错: Failed to execute aapt
xml
/xx/xx/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/7ea554c7f01239b09ee529caf6ae9233/res/values/values.xml:1304:5-69: AAPT: error: resource android:attr/fontVariationSettings not found.
/xx/xx/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/7ea554c7f01239b09ee529caf6ae9233/res/values/values.xml:1304:5-69: AAPT: error: resource android:attr/ttcIndex not found.
/xx/xx/ionic-android/xx-xx-android/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-v28/values-v28.xml:7: error: resource android:attr/dialogCornerRadius not found.
/xx/xx/ionic-android/xx-xx-android/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-v28/values-v28.xml:11: error: resource android:attr/dialogCornerRadius not found.
/xx/xx/ionic-android/xx-xx-android/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:292: error: resource android:attr/fontVariationSettings not found.
/xx/xx/ionic-android/xx-xx-android/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:292: error: resource android:attr/ttcIndex not found.
error: failed linking references.
Failed to execute aapt
com.android.ide.common.process.ProcessException: Failed to execute aapt

原因:在platforms中的project.properties文中引入了重复的v4和v7支持包 解决方案:将多于的删除即可 参考:比如本地使用的sdk是27的版本那这边都是27的就行

properties
target=android-27
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.system.library.1=com.android.support:support-annotations:27.+
cordova.gradle.include.1=phonegap-plugin-barcodescanner/gz-barcodescanner.gradle
cordova.system.library.2=com.android.support:support-v4:27.+
cordova.system.library.3=com.squareup.okhttp3:okhttp-urlconnection:3.10.0
cordova.system.library.7=com.android.support:appcompat-v7:27.+
cordova.gradle.include.2=cordova-plugin-wechat/gz-android-build.gradle
cordova.system.library.9=com.google.android.gms:play-services-location:11+
cordova.gradle.include.3=cordova-plugin-mauron85-background-geolocation/gz-dependencies.gradle
2. Android打包报错:Dex archives: setting .DEX extension only for .CLASS files

解决方案:

// 在命令控制台输入如下命令
cordova clean
3. Android打包报错:Unable to merge dex

解决方案:

groovy
// 高版本修改:platforms/android/app/build.gradle
android {
  defaultConfig {
 	 multiDexEnabled true
  }
}
4. Android打包报错:Cannot merge new index 66310 into a non-jumbo instruction!

原因:方法太多,一般是引入第三方包,导致dex生成失败 解决方案:

groovy
// 在app/build.gradle添加
android {
  dexOptions {
      jumboMode true
  }
}
5. Android打包报错:"app_name" is not translated in "zh" (Chinese) [MissingTranslation]

解决方案:

groovy
// 在app/build.gradle添加
lintOptions {
  abortOnError false;
  disable 'MissingTranslation';
}
6. Android打包报错: No resource found that matches the given name (at 'networkSecurityConfig' with value '@xml/network_security_config').

解决方案: 将platforms/android/app/src/main/res/xml/network_security_config.xml该文件拷贝一份到 platforms/android/res/xml目录下即可

7. Android打包报错:No resource identifier found for attribute 'appComponentFactory' in package 'android'

原因:一般是引用android版本出现了问题。 解决方案:

使用Android Studio打开platforms下的安卓工程,查看具体的报错信息。
点击build菜单下的clean project 菜单,在build栏目中会显示具体的报错信息,根据报错信息对应的解决。

错误信息一:Error while executing '/Users/yangdong/Library/Android/sdk/build-tools/28.0.3/aapt' 解决方案:

# 1.在Android Studio中将项目默认的android版本替换成本机已经有的android 版本。
例如:
SDK: Android 8.1 
Build Tools Version: 27.0.0
JDK: 1.7 [该步骤也很重要,因为自定义插件,可能是jdk8以上的版本编译的]
# 2.在idea中打开platforms/android/build.gradle文件,将dependencies节点下的除com.android.support:support-v4:27 以外的包全部删除。更改platforms/android/project.properties里的library引用,项目创建的时候都是默认设置,会存在重复引用,删除support-v4:27以外的v4包,将appcompat包的版本改成,刚才引用的对应版本。
# 3.改好之后,再次进行clean project,再次进行build project,查看是否还有错误信息。
# 4.再回到控制台进行再次运行ionic cordova build android,看到控制台打印BUILD SUCCESSFUL 表示打包成功。
8. Android安装插件报错:Cause: Dex cannot parse version 52 byte code.

原因:大概是因为我依赖的第三方是在java8编译的,但是本地编译的工具只是java1.7 解决方案:

groovy
// 1.在app build.gradle中加入一下代码
compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_7
  targetCompatibility JavaVersion.VERSION_1_7
}
// 2.加入下面代码
dexOptions {
  preDexLibraries false
  jumboMode true
  javaMaxHeapSize "2g"
  incremental false
}
9. Android打包报错:com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65935

原因:因为同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65935个(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件,跟问题3版本类似。 解决方案:

groovy
# 1、在platform/android/app/build.gradle文件的dependencies 节中添加分包设置
dependencies {
...
   compile 'com.android.support:multidex:'
   ...
}
# 2、在platform/android/app/build.gradle的 defaultConfig节中设置multiDexEnabled标签为true,开启multi-dexing支持
defaultConfig {
   ...
multiDexEnabled true
...
}

Released under the MIT License.