使用 Eclipse 给 APK 签名遇到的问题及解决方法
今天用 APK 反编译工具看了一下自己项目生成的 APK 文件,发现代码并没有混淆,于是设置了用 ProGuard 混淆代码,可是混淆是必须在非 Debug 模式才会生效的,即使你是以 Release 模式来 Run As 启动所生成的 APK 包,依然是没有使用 ProGuard 混淆的。于是决定导出一下 Release 版的 APK,导出分“签名”和“不签名”的两种,都这么做了,当然是要签名一下了,所以遇到了后面这两个问题。
一、strings.xml 的翻译问题
在你的项目名字上面点鼠标右键,弹出下面的菜单,选择 Android Tools -> Export Signed Application Package... ,
然后会看到这么一个提示:
并且得到下面这样的错误描述:
大意是,导出操作因为 Lint Error Checking (检测 Lint 错误) 出现致命错误而退出,请修正这些错误再运行导出,或者在设置里的 Android -> Lint Error Checking 页面里把 “Run full error check when exporting app” 把选项关掉。
而错误描述里面的说的是,strings.xml 里面的 app_name 缺少 af(Afrikaans), am(Amharic), ar, bg, bn-rBD, ca, cs, da, de ... 等语言的翻译,这个可能跟创建工程时自动生成的项目 appcompat_v7 里的 strings.xml 的语言数量有关,我们当然不希望每种语言都翻译一遍啊,纯属吃多了,除非我们真的想每种语言都翻译。
另一方面,我们也不希望关掉所有的 Lint Error Checking,所以我们可以这么做,打开 eclipse 菜单的 Windows -> Perferences,
切换到 Android -> Lint Error Checking 子项下面,下面这是 Missing Translation 的默认设置:
我们可以把这一项的 Severity 由 Fatal (致命) 修改为 Ignore(忽略) 或者 Warning(警告),如下图:
另:关于多语言翻译的问题,有一个问题是值得关注的,例如:《Android翻译多国语言字符串注意事项》。
二、签名 keystore 的逗号问题
点击确定,然后重新开始前面的步骤,开始导出,这次可以了,下面是导出的界面,选择你要导出的项目:
后面就是选择 keystore ,你可以选择已经存在的 keystore 或者新建一个 keystore,我选择新建,输入密码,然后进入下面这个设置界面:
下一步,最后生成的时候,我们得到这样一个错误:
Google 一下,找到这么一篇: 《keytool 错误: java.io.IOException: Incorrect AVA format》,stackoverflow 上也有类似的讨论:keytool error :java.io.IoException:Incorrect AVA format ,结论都是一样的,原来原因竟然是因为 “,”(逗号) 被认为是特殊字符,这通常发生在书写 “City or Locality” 时,按我们平时的习惯都会写成 “Beijing, China”,而我也不例外的写成了 “GuangXi, China” ,所以就出错了,找到原因,去掉逗号再试,就 OK 了。
除了用 Eclipse 以外,还有一种签名方法,就是使用 Keytool 和 Jarsigner 给 app 签名,而这种签名是允许加入这个逗号的,《keytool 错误: java.io.IOException: Incorrect AVA format》 里有提到。
这里贴一个 keytool 关于特殊字符的说明及用法,摘自:http://www.oschina.net/question/163910_29310,
特殊字符还包括,加号(+),引号("),斜杠(\),大于小于号(< 和 >),分号(;) 等,解决的办法是用 \ 转义符。
相关文章
vscode怎么检测工作区是否有问题? vscode调出问题指令的两种方法
vscode中可以检查是否有问题,如果有问题该怎么调出有问题的指令呢?下面我们就来看看详细的教程2024-09-28怎么在VScode中设置账号同步? Vscode账号同步的实现方法
VScode是一款免费开源的现代化轻量级代码编辑器,使用该软件时,可以设置账号同步,今天小编就来说明一下具体的操作步骤2024-09-28VSCode如何格式化XML? VSCode实现UltraEdit中XML格式化的方法
最近很喜欢使用 VS Code,所以会遇到很多 VS Code 的日常使用问题,比如,我想要在 VS Code 中实现 UltraEdit 中 XML 格式化的问题,该如何做呢?详细请看下文介绍2024-09-26VScode编译python画布闪现怎么办? 只加两行代码即可解决
vscode使用python画图时闪退,该怎么解决这个问题呢?我们只需要添加两行代码就可以了,详细请看下文介绍2024-09-26vscode怎么运行vue代码? vscode启动vue项目的教程
vscode可以运行vue项目,该怎么运行呢?下面我们就来看看新手第一次运行vue项目的方法,详细请看下文介绍2024-09-26Vscode怎么拆分窗口? Vscode拆分编辑器窗口实现分屏显示技巧
Vscode编辑代码的时候,想要分屏,该怎么操作呢?我们可以拆分编辑器窗口,比如上下拆分,左右拆分等等,详细请看下文介绍2024-09-26怎么让vscode显示文件图标? vscode添加icon文件图标的教程
可以使VScode左侧的资源管理器根据文件类型显示图标,要在VSCode中显示文件夹图标,可以按照以下步骤进行操作2024-09-26助力开发者迅速上手! Visual Studio Code推出Office加载项开发工具预览
这一工具包旨在为开发者提供便捷的加载项开发平台,尤其是那些希望仅通过manifest文件来开发XML格式加载项的开发者,详细请看下文介绍2024-09-10- JDK是java软件开发包的简称,要想开发java程序就必须安装JDK,没有JDK的话,无法编译Java程序,很多朋友安装不会配置环境,这里就为大家提供了具体的安装与配置方法,需要的2024-07-04
TypeScript5.5更新! VS Code使用TypeScript的技巧
微软前两天昨日正式发布 TypeScript 5.5,开发者如果在 Visual Studio 和 VS Code 等编辑器中使用 TypeScript,还能实现自动完成、代码导航和重构等功能,通过一下命令可以2024-06-22
最新评论