现在很多应用都需要二维码,因此,在搜集资料中发现了发现一个以Apache开源的 ZXing项目。而在学习中也发现了一些错误。
(Zxing是Google提供的关于条码(一维码、二维码)的解析工具,提供了一系列条形码以及二维码的生成与解析的方法);
第一个,
最开始我学习的是1.6的ZXing版本,结果接触到了一个错误,编译一下项目在values目录下的strings的xml文件里面有个
<string>Use %s as a placeholder for the product ID, and %f for format</string>
标签错误,会发现报错,“ Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?”之类的。打开raw 下的Values 发现错误是在一个<String>上。这里把 “preferences_custom_product_search_summary” 里的 %s %f 全部都改成 %1$s %1$f(因为我们用不到多国语言,建议只保留默认的Value ,其他全部删除)。
原因:由于新的SDK采用了新版本的aapt(Android项目编译器),这个版本的aapt编译起来会比老版本更加的严格,然后在Android最新的开发文档的描述String的部分,已经说明如何去设置 %s 等符号
“使用的String.Format(字符串,对象...),如果你需要格式化字符串,然后你就可以这样做把你的格式参数中的字符串资源。例如,用下面的资源:
<string>Hello, %1$s! You have %2$d new messages.</string>
在这个例子中,格式字符串有两个参数:%1 $ S是一个字符串,%2 $ d是一个十进制数。您可以格式化字符串,还要争拗从您的应用程序...“
经过以上步骤后项目应该就可以运行了。
不过之后,在我下了2.1之后,ZXing的作者可能已经意识到这个问题,所以在随后的2.1ZXing版本里面没有这个问题了。
不过,1.6很多地方没有随后的2.1好,2.1优化升级了许多地方。