App打包常见报错
前言
APP打包执行过程中,如未成功生成APP包,会在执行窗口出现如下图的报错信息,需要从最底端往上查看错误信息。
- 如果是使用打包代理服务打iOS App包,则需查看“代理服务日志”。
- 如果是打Android App包,则只查看“日志”。
- 如果是MAC版,则不区分“日志”和“代理服务日志”,直接查看当前执行窗口的报错信息即可。
- 查看时重点关注出现【BUILD FAILED】【security】【ERROR】字样前后的相关信息。
您可先对照下面的【报错信息关键词索引】和【常见报错详解】定位错误原因,如没有匹配的错误内容,请粘贴报错日志,在论坛中发贴进行咨询!
- 如果是打Android App包,直接粘贴上图“日志”中的信息到贴子中,一定要把日志内容粘贴完整。
- 如果是使用打包代理服务打iOS App包,则在APP应用文件夹中找到报错日志上传到贴子中。打包代理服务报错日志的路径:modelNative外卖(APP应用名称)logbuild.log
报错信息关键词索引
请粘贴以下报错信息关键词在自己的报错日志中进行比对,找到匹配的信息再对应报错情况进行查看,以便您快速解决问题!
Android打包常见报错
【报错情况一】打包过程中输入的android密码不正确时,会在打包服务器日志中输出如下内容:
BUILD FAILED I:X5.3BeX5_V3.2.1toolsadt-sdktoolsantbuild.xml:1135: The following error occurred while executing this line; I:X5.3BeX5_V3.2.1toolsadt-sdktoolsantbuild.xml:1147: Keystore was tampered with,or password was incorrect: Password verification failed
【报错情况二】打包过程中选择的android证书文件不正确,随便放了一个 android.keystore,会在打包服务器日志中输出如下内容:
BUILD FAILED I:X5.3BeX5_V3.2.1toolsadt-sdktoolsantbuild.xml:1135: The following error occurred while executing this line: I:X5.3BeX5_V3.2.1toolsadt-sdktoolsantbuild.xml:1147: java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:646) at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55) at java.security.KeyStore.load(KeyStore.java:1214)
【报错情况三】使用windows环境打Android的App包时,如果操作系统环境变量path中没有“c:windows;c:windowssystem32”时,
会在日志中输出如下内容:
生成android应用包: Running command: D:X_5X_55555modelNativedddbuildsrcplatformsandroidcordova build.bat--debug Error: D:X_5X_55555modelNativedddbuildsrcplatformsandroidcordovabuild.bat: Command failed with exit code 2 at ChildProcess.whenDone (D:X_5X_55555toolscordovanode_modulescordova-libsrc cordovasuperspawn.js:135:23) at ChildProcess.EventEmitter.emit (events.js:98:17) at maybeClose (child_process.js:743:16) at Process.ChildProcess._handle.onexit (child_process.js:810:5)
如出现该问题,需要在windows操作系统的环境变量path中添加上“c:windows;c:windowssystem32”即可。
【报错情况四】该报错是因为应用包名的命名不符合java规范引起的。应用包名需是全小写的,中间由点分隔开,但每个分段的名称不可以使用数字作为开头,也不可以使用特殊字符。
-compile: [javac] Compiling 6 source files to /Volumes/X5/workspace/build/C6A0B62C13A00001333 414D0123013A9/build/platforms/android/bin/classes [javac] /Volumes/X5/workspace/build/C6A0B62C13A00001333414D0123013A9/build/platforms/ android/src/com/960one/leapmary/X5.java:20: 错误: 需要';' [javac] package com.960one.leapmary; [javac] ^ [javac] /Volumes/X5/workspace/build/C6A0B62C13A00001333414D0123013A9/build/platforms/ android/gen/com/960one/leapmary/BuildConfig.java:2: 错误: 需要';' [javac] package com.960one.leapmary; [javac] ^ [javac] /Volumes/X5/workspace/build/C6A0B62C13A00001333414D0123013A9/build/platforms/ android/gen/com/960one/leapmary/R.java:8: 错误: 需要';' [javac] package com.960one.leapmary; [javac] ^ [javac] 3 个错误 BUILD FAILED /Volumes/X5/bin/adt-bundle/sdk/tools/ant/build.xml:720: The following error occurred while executing this line: /Volumes/X5/bin/adt-bundle/sdk/tools/ant/build.xml:734: Compile failed; see the compiler error output for details.
【报错情况五】该报错是因为打包时没有选择资源,却选择了编译资源,所以提示找不到文件。打包时选择编译资源时请确认一定要选择上资源目录才可以。
加密UI资源: ****ERROR****: 子任务 "copy" 执行失败。 ****ERROR****: 任务 "processWWW" 执行失败。 ****ERROR****: 执行出错: ****ERROR**** 错误信息: Warning: Could not find file E:WeX5_V3.2.1modelNative外卖www x5UI2index.html to copy.
IOS打包常见报错
【报错情况一】打包过程中输入iOS的P12证书密码错误时,会在打包服务器日志中输出如下错误信息:
security:SecKeychainItemImport:MAC verification failed during PKCS12 import (wrongpassword?)
这种情况有时的确是因为打包过程中输入的P12证书密码与导出P12证书时的密码不一致造成的;也有一种情况是密码的强度低造成的,详见文章《IOS的证书P12文件的密码问题》的解决方法。
【报错情况二】打包过程中选择的iOS p12证书文件不正确,比如随便选择了一个文件,会在打包服务器日志中输出如下错误信息:
security:SecKeychainItemImport: Unknown format in import.
【报错情况三】打包过程中选择的iOS mobileproversion配置文件不正确,比如随便选择了一个文件,会在打包服务器日志中输出如下内容:
=== BUILD TARGET X5 OF PROJECT X5 WITH CONFIGURATION Release === Check dependencies Code Sign error: No matching provisioning profiles found: No provisioning profiles matching an applicable signing identity were found.
【报错问题四】打包过程中输入的应用包名与iOS的BundleID不一致时,会在打包服务器日志中输出如下内容:
=== BUILD TARGET X5 OF PROJECT X5 WITH CONFIGURATION Release === Check dependencies Code Sign error: No matching provisioning profiles found: No provisioning profiles with a valid signing identity (i.e. certificate and private key pair) matching the bundle identifier “com.wex5.takeout” were found.
【报错问题五】打包时使用的是自己的MAC环境,没有安装xcode 的命令行工具时,会在日志中输出如下内容:(用X5应用打包服务器不会出现这个问题)
xcrun: error: active developer path ("/Volumes/Xcode/Xcode.app/Contents/Developer") does not exist, use `xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools (or see `man xcode-select`)
Cordova can only run in Xcode version 4.6 or greater. xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
【报错问题六】打包时使用的P12证书和mobileprovision描述文件搞交叉了,不对应时会出现下面的报错。需到苹果帐号里确认使用的mobileprovision描述文件和p12是否是对应的。(参看下图)
=== BUILD TARGET X5 OF PROJECT X5 WITH CONFIGURATION Release === Check dependenciesCode Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “(null)” were found. CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.1'
【报错问题七】打包时出现下面的错误信息“User canceled the operation”,是因为打包服务器的MAC虚拟机上出现了认证的提示对话框(参看下图),需要点一下“始终允许”,该问题一般出现在第一次打iOS的包时,始终允许后再打包时不会再出现该问题。
/Volumes/X5/WeX5/model/Native/.workspace/C6BF5E44D3A000014EF0F6105C7059D0/build/platforms /ios/build/device/WeX5论坛.app: User canceled the operation.
【报错问题八】打包时出现下面的错误时,常是因为本机所安装的360之类的杀素软件影响的。需先确认“Cannot run program”后面路径的文件是否存在,如果这个文件没有了,需从版本里恢复一个该文件;如果这个文件有,需先禁用杀毒软件,再打包试一下。
D:WeX5_V3.2.1WeX5_V3.2.1toolsadt-sdktoolsantbuild.xml:694: Execute failed: java.io.IOException: Cannot run program "D:WeX5_V3.2.1WeX5_V3.2.1toolsadt-sdkbuild- tools22.0.1aapt.exe" (in directory "D:WeX5_V3.2.1WeX5_V3.2.1modelNativehello2build srcplatformsandroidCordovaLib"): CreateProcess error=2, ?????????
【报错问题九】打包时出现下面的错误时,是jdk1.7在某种环境下,启动JVM出错。
[dx] Error occurred during initialization of VM [dx] Could not reserve enough space for object heap [dx] Error: Could not create the Java Virtual Machine. [dx] Error: A fatal exception has occurred. Program will exit.
解决方法如下:
1. 下载jre1.8: http://pan.baidu.com/s/1ciELe2, 之后解压到%JUSTEP_HOME%/java目录,形成的目录结构如下:
%JUSTEP_HOME%/java/jre1.7
%JUSTEP_HOME%/java/jre1.8
2. 关闭studio, 并在任务管理器中,把所有的java, studio, adb.exe进程关了;
3. 修改jre名称
%JUSTEP_HOME%/java/jre1.7重命名为%JUSTEP_HOME%/java/jre1.7_old,
%JUSTEP_HOME%/java/jre1.8重命名为%JUSTEP_HOME%/java/jre1.7
4. 重启studio
【报错问题十】打包时出现下面的错误时,是短信插件的问题
"___gxx_personality_sj0", referenced from: -[MOBFBigInteger init] in MOBFoundation -[MOBFBigInteger initWithInt:] in MOBFoundation -[MOBFBigInteger initWithBigInteger:] in MOBFoundation -[MOBFBigInteger initWithString:radix:] in MOBFoundation -[MOBFBigInteger initWithRandomPremeBits:] in MOBFoundation -[MOBFBigInteger addByBigInteger:] in MOBFoundation -[MOBFBigInteger subByBigInteger:] in MOBFoundation ...
此问题在V3.4.4935之后的版本会解决,其它的版本的解决方法如下:
替换/Native/plugins/com.justep.cordova.plugin.security.mob/plugin.xml文件