转载请注明出处:http://blog.csdn.net/fth826595345/article/details/8703923
现在很多应用都需要二维码,因此,在搜集资料中发现了发现一个以Apache开源的 ZXing项目。而在学习中也发现了一些错误。
(Zxing是Google提供的关于条码(一维码、二维码)的解析工具,提供了一系列条形码以及二维码的生成与解析的方法);
第一个,
最开始我学习的是1.6的ZXing版本,结果接触到了一个错误,编译一下项目在values目录下的strings的xml文件里面有个
<string name="preferences_custom_product_search_summary">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 name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在这个例子中,格式字符串有两个参数:%1 $ S是一个字符串,%2 $ d是一个十进制数。您可以格式化字符串,还要争拗从您的应用程序...“
经过以上步骤后项目应该就可以运行了。
不过之后,在我下了2.1之后,ZXing的作者可能已经意识到这个问题,所以在随后的2.1ZXing版本里面没有这个问题了。
详细请看:http://blog.csdn.net/deaboway/article/details/6427856
不过,1.6很多地方没有随后的2.1好,2.1优化升级了许多地方。
第二个 ,
然后是我导入2.1ZXing版本后产生的一个错误(为什么突然还没学完1.6的就换2.1版本的,上面已经做了说明了),这是发生在主配置文件里面的错误:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.zxing.client.android"
android:versionName="4.3.1"
android:versionCode="87"
android:installLocation="auto">
,
错误名称是叫:
error: No resource identifier found for attribute 'installLocation' in package 'android'
,然后我发现是因为如果要在配置文件的
manifest标签里面使用
android:installLocation="auto",或者
android:installLocation="preferExternal"
属性,那么当前android的AP至少等级为8(安卓2.2)。修正方法升级API等级至少为8(安卓2.2),或者删除android:installLocation="preferExternal" ;android:installLocation="auto" ,否则你会得到出现这个错误,不过我是升级到4.0的,因为2.1ZXing版本针对的就是android4.0以上的版本,不然里面很多类无法使用。
2.1ZXing版本的地址:http://code.google.com/p/zxing/downloads/detail?name=ZXing-2.1.zip&can=2&q= 点击打开链接