現在很多應用都需要二維碼,因此,在搜集資料中發現了發現一個以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://www.linuxidc.com/Linux/2013-03/81604.htm
不過,1.6很多地方沒有隨後的2.1好,2.1優化升級了許多地方。