打包常见问题

资源冲突

错误提示:xxx.xml 文件里,name 为 xxx 项与 xxx.xml 文件里的 xxx 项 name 一样,但值不一样,需解决该问题后才可继续打包!
解决方法:这是因为游戏工程里自己定义的字符串与 SDK 定义的字符串冲突导致的,在res/values里找到该 xml,修改该冲突的字符串名。

备注:

若还是没有解决问题:

1、发现自己的工程并没有该字段,请检查是否有依赖工程,依赖工程里是否也有同样的资源。

2、SDK 之间出现冲突(如机锋里有 email 字段, ShareSDK 也有,这个时候请自己手动去修改 SDK)。

错误提示:

xxx.xml:x: error: Resource entry xxx is already defined.
xxx.xml:x: Originally defined here.

解决方法:游戏工程与SDK有资源冲突,请修改游戏工程的资源。

错误提示:

res\drawable-hdpi-v4\ic_launcher.png:0: error: Resource entry ic_launcher is already defined.
res\drawable-hdpi\ic_launcher.png:0: Originally defined here.

解决方法:由于SDK自带了图标名称为 ic_launcher,而游戏的的图标名称也为 ic_launcher,导致了出现冲突,可尝试以下方式:

1、修改自身游戏图标名称

2、删除 SDK 相关资源

打包后的 ICON 不带渠道角标

错误描述:在工具的 ICON 管理中选取了渠道角标,但打包后的 APK 或者 iOS 工程中的 ICON 并没有角标出现.

解决方法:目前打包工具的 QT 部分并不支持采用了 tinypng 工具压缩后的图片,最好找到 AnySDK 安装目录下的 Resources 内的默认图标,用 Photoshop 将游戏的 ICON 图标图层覆盖在上面,另存为一张 png 图标,在工具中重新导入.

JVM 内存问题

错误提示:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error:A fatal exception has occured. Program will exit.

解决办法:关掉 Eclipse 之类内存占用较大的软件重新打包,还不行就重启下电脑。

Windows 客户端打包崩溃

错误描述:打包的时候崩溃
解决方法:首先不要把工具安装在中文路径下,其次检查下环境变量的PATH路径里是否有中文路径。

签名文件信息有问题

错误提示:jarsigner: 找不到xx的证书链。xx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目。
解决方法:签名文件的 Alias 写错,请改正。

错误提示:jarsigner 错误: java.lang.RuntimeException: 密钥库加载: Keystore was tampered with, or password was incorrect
解决方法:签名文件的密码错误,请改正。

错误提示:jarsigner: 与xx关联的密钥不是私有密钥
解决方法:签名文件的 Alias 的密码错误,请改正。

磁盘空间不足

错误描述:打包时出错(例如java.lang.NullPointerException at java.io.Writer.write(Unknown Source)
解决方法:你懂的

打包 Android 时框架版本报错

错误描述:您的母包框架版本号为 Unknown Version,但新版本的框架版本为 2.X.X,请先更新您的框架!
解决方法:若能读出母包框架版本号,则是插件要求,需要升级母包的框架版本
若提示母包框架版本号为 Unknown Version:
1、确认你母包是否有集成 AnySDK 框架
2、确认你母包是否能正常运行。(可能生成母包 APK 的时候 so 丢掉之类的)
3、确认母包集成的 AnySDK 框架是否最新。(1.5 以前的版本也是检测不出版本号的)
4、Unity 框架 2.0 改了 so 文件的名字,记得把旧的 so 文件删了

拿渠道包打包

错误提示: can not use channel's apk to package
解决方法:不要用渠道包再去打包

打包 Android 时超出接口数

错误提示: Exception in thread "main" org.jf.util.ExceptionWithContext: Unsigned short value out of range: xxxxx

解决方法:由于 Android 编译限制单个 dex 的接口数为 65535,超出接口数需要打成两个 dex。先检查母包是否有多余的 jar 可以删除,如果还是超出,可在 AnySDK 客户端的插件目录(我的文档 /AnySDKFiles/Config/sdk/插件名)添加 classes.filter 文件,配置需要拆成第二个 dex 的文件。
例如百度(BDYouxi)(如果还是超出,可自己编辑配置文件,再多添加文件,可能有些文件移到第二个 dex 会导致启动崩溃,可自行尝试)

[
"com/baidu/android",
"com/baidu/apollon",
"com/baidu/balance",
"com/baidu/bplus",
"com/baidu/cloudsdk",
"com/baidu/frontia",
"com/baidu/home",
"com/baidu/loctp",
"com/baidu/mobstat",
"com/baidu/mtjstatsdk",
"com/baidu/paysdk",
"com/baidu/platformsdk",
"com/baidu/sapi2",
"com/baidu/scancode",
"com/baidu/sumeru",
"com/baidu/wallet",
"com/baidu/BankCardProcessing.smali",
"com/baidu/BCResult.smali",
"com/duoku"
]

PS:360 如果把 360 的代码文件移到第二个 dex 会导致 360 自检工具找不到,所以可配置游戏别的代码文件。