问题

  今天用 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

特殊字符还包括,加号(+),引号("),斜杠(\),大于小于号(< 和 >),分号(;) 等,解决的办法是用 \ 转义符。

关于 Android APP 签名更详细的资料请参阅:

http://developer.android.com/guide/publishing/app-signing.html

http://yangguangfu.iteye.com/blog/723182

<.End.>

[Android]使用 Eclipse 给 APK 签名时遇到的两个问题及解决办法的更多相关文章

  1. 使用Android studio创建的AIDL编译时找不到自定义类的解决办法

    使用AS创建ADIL文件时AS会在main文件夹下给我们生成一个aidl文件夹和一个相同包名的包,通常我们会把所有和ADIL相关的类或文件放在这个包下,但是如果存在自定义的类时,程序编译时无法通过,提 ...

  2. Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

    转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象 ...

  3. VMware下ubuntu与win8共享文件时/mnt/hgfs目录为空的解决办法

    VMware下ubuntu(guest)与win8共享文件时/mnt/hgfs目录为空的解决办法 环境:VMware-player-5.0.2-1031769 + ubuntu13.04 1.安装vm ...

  4. vs调试windows mobile程序时布署时间太长的解决办法

    vs调试windows mobile程序时布署时间太长的解决办法 1.VS平台上,选工具-选项-项目和解决方案-MS BUILD项目生成输出详细信息中选择“诊断”,目的是在调试窗口中看出哪个过程编译的 ...

  5. 向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法

    转自原文 向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法 写了一个小程序,从一个列表中读取坐标串,每个坐标串生成一个IPolygon,然后将这些Polygon添加 ...

  6. installshield制作的安装包卸载时提示重启动的原因以及解决办法

    原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如 ...

  7. 执行Git命令时出现各种 SSL certificate problem 的解决办法

    执行Git命令时出现各种 SSL certificate problem 的解决办法 来源  https://www.cnblogs.com/chenzc/p/5842932.html 比如我在win ...

  8. 重装Oracle时出现SID已存在问题的解决办法

    重装Oracle时出现SID已存在问题的解决办法    手机打开 注意安装oracle服务器的环境,不稳定导致数据库出现问题,后果很严重! 方法如下: 1.开始->设置->控制面板-&g ...

  9. FW 执行Git命令时出现各种 SSL certificate problem 的解决办法

    比如我在windows下用Git clone gitURL 就提示  SSL certificate problem: self signed certificate 这种问题,在windows下出现 ...

随机推荐

  1. VS2013的安装与测试

    第一步:下载完成之后点击安装,在安装过程中会出现很多选择,选择社区版(c++),安装完成: 第二步:安装完成之后打开VS2013,如图所示:   第三步:按以下步骤进行 第四步:点击[OK]之后 第五 ...

  2. ejabberd与XMPP

    ejabberd支持XMPP协议. worktile用ejabberd来做了实时消息推送: https://worktile.com/tech/basic/worktile-real-time-not ...

  3. Java中String直接赋字符串和new String的区别 如String str=new String("a")和String str = "a"有什么区别?

    百度的面试官问 String A="ABC"; String B=new String("ABC"); 这两个值,A,B 是否相等,如果都往HashSet里面放 ...

  4. 异构数据库之间完全可以用SQL语句导数据

    告诉你一个最快的方法,用SQLServer连接DBF 在SQLServer中执行 SELECT * into bmk FROM OpenDataSource( ‘Microsoft.Jet.OLEDB ...

  5. 【刷题】LOJ 6006 「网络流 24 题」试题库

    题目描述 假设一个试题库中有 \(n\) 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 \(m\) 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组 ...

  6. 沉迷AC自动机无法自拔之:[UVALive 4126] Password Suspects

    图片加载可能有点慢,请跳过题面先看题解,谢谢 一看到这么多模式串就非常兴奋,又是\(AC\)自动机 题目就是要求:经过 \(n\) 个节点,把所有单词都遍历一遍的方案数,和那道题差不多嘛 所以这样设: ...

  7. 洛谷 P2146 [NOI2015]软件包管理器 解题报告

    P2146 [NOI2015]软件包管理器 题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软 ...

  8. emoji表情与unicode编码互转(JS,JAVA,C#)

    1.表情字符转编码 [C#] Encoding.UTF32.GetBytes("

  9. 【洛谷P1087】FBI树

    题目大意:后序遍历 题解:建立二叉树的码风不知道怎么突然跟线段树一样了...当然,这道题不建树也是可以的. 代码如下 #include <bits/stdc++.h> using name ...

  10. Linux上查看文件大小的用法(转载)

    具体用法可以参考:https://blog.csdn.net/linfanhehe/article/details/78560887 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常 ...