एंड्रॉइड एसेट पैकेजिंग टूल ( aapt) अपनी नवीनतम रिलीज़ में बहुत सख्त हो गया है और अब सभी एंड्रॉइड संस्करणों के लिए उपयोग किया जाता है । आपके द्वारा की जा रही aapt- त्रुटि उत्पन्न होती है क्योंकि यह अब गैर-स्थिति प्रारूप प्रारूप निर्दिष्ट नहीं करती है ।
यहां कुछ विचार दिए गए हैं कि आप अपने संसाधन स्ट्रिंग्स में% -symbol को कैसे शामिल कर सकते हैं।
यदि आपको अपने स्ट्रिंग में किसी भी प्रारूप विनिर्देशक या प्रतिस्थापन की आवश्यकता नहीं है, तो आप केवल formattedविशेषता का उपयोग कर सकते हैं और इसे falseनिम्न पर सेट कर सकते हैं :
<string formatted="false">%a + %a == 2%a</string>
इस स्थिति में स्ट्रिंग का उपयोग प्रारूप स्ट्रिंग के रूप में नहीं किया जाता है, Formatterइसलिए आपको अपने% -symbols से बचने की आवश्यकता नहीं है। परिणामस्वरूप स्ट्रिंग "% a +% a == 2% a" है।
यदि आप formatted="false"विशेषता को छोड़ देते हैं , तो स्ट्रिंग का उपयोग प्रारूप स्ट्रिंग के रूप में किया जाता है और आपको% -symbols से बचना होगा। यह सही ढंग से दोहरे% के साथ किया जाता है:
<string>%%a + %%a == 2%%a</string>
अब aaptआपको कोई त्रुटि नहीं देता है लेकिन आप इसका उपयोग कैसे करते हैं इसके आधार पर, परिणामी स्ट्रिंग "%% a + %% a == 2 %% a" हो सकती है यदि कोई Formatterबिना किसी प्रारूप के तर्क के लागू किया जाता है :
Resources res = context.getResources();
String s1 = res.getString(R.string.str);
// s1 == "%%a + %%a == 2%%a"
String s2 = res.getString(R.string.str, null);
// s2 == "%a + %a == 2%a"
किसी भी xml और कोड के बिना यह कहना मुश्किल है कि वास्तव में आपकी समस्या क्या है, लेकिन उम्मीद है कि यह आपको तंत्र को थोड़ा बेहतर समझने में मदद करता है।