前言

APP打包执行过程中,如未成功生成APP包,会在执行窗口出现如下图的报错信息,需要从最底端往上查看错误信息

  • 如果是使用打包代理服务打iOS App包,则需查看“代理服务日志”。
  • 如果是打Android App包,则只查看“日志”。
  • 如果是MAC版,则不区分“日志”和“代理服务日志”,直接查看当前执行窗口的报错信息即可。
  • 查看时重点关注出现【BUILD FAILED】【security】【ERROR】字样前后的相关信息。

3

您可先对照下面的【报错信息关键词索引】和【常见报错详解】定位错误原因,如没有匹配的错误内容,请粘贴报错日志,在论坛中发贴进行咨询!

  • 如果是打Android App包,直接粘贴上图“日志”中的信息到贴子中,一定要把日志内容粘贴完整。
  • 如果是使用打包代理服务打iOS App包,则在APP应用文件夹中找到报错日志上传到贴子中。打包代理服务报错日志的路径:model\Native\外卖(APP应用名称)\log\build.log

报错信息关键词索引

请粘贴以下报错信息关键词在自己的报错日志中进行比对,找到匹配的信息再对应报错情况进行查看,以便您快速解决问题!

报错信息关键词 可匹配的报错情况
 Password verification failed  Android打包报错情况一
 java.io.DataInputStream.readInt  Android打包报错情况二
 sun.security.provider.JavaKeyStore.engineLoad  Android打包报错情况二
 build\src\platforms\android\cordova\build.bat–debug  Android打包报错情况三
 X5.java:20: 错误: 需要’;’  Android打包报错情况四
 [javac] package  Android打包报错情况四
 子任务 “copy” 执行失败  Android打包报错情况五
 MAC verification failed during PKCS12 import  iOS打包报错情况一
 wrongpassword  iOS打包报错情况一
 Unknown format in import  iOS打包报错情况二
 No matching provisioning profiles found  iOS打包报错情况三和四
 No provisioning profiles matching an applicable signing identity were found  iOS打包报错情况三
 No provisioning profiles with a valid signing identity  iOS打包报错情况四
 xcrun: error: active developer path (“/Volumes/Xcode/Xcode.app/Contents/Developer”) does not exist  iOS打包报错情况五
 xcode-select: error: tool ‘xcodebuild’ requires Xcode  iOS打包报错情况五
 Cordova can only run in Xcode version 4.6 or greater  iOS打包报错情况五
 No code signing identities found  iOS打包报错情况六
 No valid signing identities (i.e. certificate and private key pair) matching the team ID “(null)” were found.  iOS打包报错情况六
 User canceled the operation  iOS打包报错情况七
 Cannot run program  iOS打包报错情况八
 aapt.exe  iOS打包报错情况八
 Could not reserve enough space for object heap  iOS打包报错情况九
 [MOBFData uncompressDataUsingGZip:] in MOBFoundation  iOS打包报错情况十

 

Android打包常见报错

【报错情况一】打包过程中输入的android密码不正确时,会在打包服务器日志中输出如下内容:

 BUILD FAILED
 I:\X5.3\BeX5_V3.2.1\tools\adt-sdk\tools\ant\build.xml:1135: The following error occurred
while executing this line;
 I:\X5.3\BeX5_V3.2.1\tools\adt-sdk\tools\ant\build.xml:1147: Keystore was tampered
with,or password was incorrect: Password verification failed

报错情况二】打包过程中选择的android证书文件不正确,随便放了一个 android.keystore,会在打包服务器日志中输出如下内容:

  BUILD FAILED
 I:\X5.3\BeX5_V3.2.1\tools\adt-sdk\tools\ant\build.xml:1135: The following error occurred
while executing this line:
 I:\X5.3\BeX5_V3.2.1\tools\adt-sdk\tools\ant\build.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:\windows\system32”时,

会在日志中输出如下内容:
生成android应用包:
 Running command: D:\X_5\X_55555\model\Native\ddd\build\src\platforms\android\cordova\
build.bat--debug
 Error: D:\X_5\X_55555\model\Native\ddd\build\src\platforms\android\cordova\build.bat:
Command failed with exit code 2
 at ChildProcess.whenDone (D:\X_5\X_55555\tools\cordova\node_modules\cordova-lib\src\
cordova\superspawn.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:\windows\system32”即可。

【报错情况四】该报错是因为应用包名的命名不符合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.1\model\Native\外卖\www
\x5\UI2\index.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'

4
【报错问题七】打包时出现下面的错误信息“User canceled the operation”,是因为打包服务器的MAC虚拟机上出现了认证的提示对话框(参看下图),需要点一下“始终允许”,该问题一般出现在第一次打iOS的包时,始终允许后再打包时不会再出现该问题

/Volumes/X5/WeX5/model/Native/.workspace/C6BF5E44D3A000014EF0F6105C7059D0/build/platforms
/ios/build/device/WeX5论坛.app: User canceled the operation.

1

【报错问题八】打包时出现下面的错误时,常是因为本机所安装的360之类的杀素软件影响的。需先确认“Cannot run program”后面路径的文件是否存在,如果这个文件没有了,需从版本里恢复一个该文件;如果这个文件有,需先禁用杀毒软件,再打包试一下。

 D:\WeX5_V3.2.1\WeX5_V3.2.1\tools\adt-sdk\tools\ant\build.xml:694: Execute failed:
java.io.IOException: Cannot run program "D:\WeX5_V3.2.1\WeX5_V3.2.1\tools\adt-sdk\build-
tools\22.0.1\aapt.exe" (in directory "D:\WeX5_V3.2.1\WeX5_V3.2.1\model\Native\hello2\build
\src\platforms\android\CordovaLib"): 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文件

 

本文由WeX5君整理,WeX5一款开源免费的html5开发工具H5 App开发就用WeX5!

阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443