打包常见问题

来自AnySDK 文档
跳转至: 导航搜索

资源冲突

错误提示: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文件删了

打包时devinfo_generate.py报错:

错误描述: File "devinfo_generate.py", line 143, in write_channel_info_into_develop_xml,如图
Repacked.jpg
解决方法:不要用渠道包再去打包,后面会在打包错误时修改提示

打包Android时超出接口数

错误提示:Exception in thread "main" org.jf.util.ExceptionWithContext: Unsigned short value out of range: xxxxx
解决方法:由于Android编译限制单个dex的接口数为65535,超出接口数需要打成两个dex。先检查母包是否有多余的jar可以删除,如果还是超出,可使用2.2.0版本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自检工具找不到,所以可配置游戏别的代码文件。