sky201503 / android-apktool2

Automatically exported from code.google.com/p/android-apktool
0 stars 0 forks source link

Multiple substitutions specified in non-positional format (1.4.2) #254

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. apktool if framework-res.apk
2. apktool d framework-res.apk
3.

What is the expected output? What do you see instead?
in \res\values*\strings.xml
expected:
<string name="hour_ampm" formatted="false">
instead:
<string name="hour_ampm">

What version of the product are you using? On what operating system?
1.4.1 & 1.4.2

w7-32 

Please provide any additional information below.
attached:
original framework-res.apk from i9000xwjvx
also deodexed with baksmali v1.2.8 Camera.apk from same firmware

smaali seems to decompile wo problem, what more it adds nice comments here and 
there :]

Original issue reported on code.google.com by byczy...@gmail.com on 7 Dec 2011 at 1:27

GoogleCodeExporter commented 9 years ago
could not attach in first post idk why

framework-res.apk 

Original comment by byczy...@gmail.com on 7 Dec 2011 at 1:31

Attachments:

GoogleCodeExporter commented 9 years ago
and here Camer.apk i mentioned

Original comment by byczy...@gmail.com on 7 Dec 2011 at 1:32

Attachments:

GoogleCodeExporter commented 9 years ago
also in \Mms\res\values\plurals.xml
ive spotted that in 1.4.2 it is:
<item quantity="other">%1$s results for \"%2$s\"</item>
and in 1.4.1:
<item quantity="other">%1$1$s results for \"%2$2$s\"</item>

Original comment by byczy...@gmail.com on 7 Dec 2011 at 6:37

Attachments:

GoogleCodeExporter commented 9 years ago
Man, I hate these string formatting problems. I will make a quick fix.

Original comment by Brut.alll on 7 Dec 2011 at 10:36

GoogleCodeExporter commented 9 years ago
Issue 253 has been merged into this issue.

Original comment by Brut.alll on 7 Dec 2011 at 10:36

GoogleCodeExporter commented 9 years ago
Issue 250 has been merged into this issue.

Original comment by Brut.alll on 7 Dec 2011 at 10:36

GoogleCodeExporter commented 9 years ago
thank you, looking forward for 1.4.3 :)

Original comment by byczy...@gmail.com on 7 Dec 2011 at 11:34

GoogleCodeExporter commented 9 years ago

Original comment by Brut.alll on 8 Dec 2011 at 1:54

GoogleCodeExporter commented 9 years ago
While I appreciate the quick work, the issue is still present. I am the one who 
reported issue 250, and the same thing happens with the new version.

Original comment by MLaBarb...@gmail.com on 8 Dec 2011 at 1:59

GoogleCodeExporter commented 9 years ago
Could you upload your apk (and framework if needed)?

Original comment by Brut.alll on 8 Dec 2011 at 2:51

GoogleCodeExporter commented 9 years ago
Ahh and did you decode this file again or just tried to build what you have 
decoded using older version? You have to decode apk using v1.4.3.

Original comment by Brut.alll on 8 Dec 2011 at 2:54

GoogleCodeExporter commented 9 years ago
That was it! Sorry about that :)

Thank's again for your work!

Original comment by MLaBarb...@gmail.com on 8 Dec 2011 at 3:01

GoogleCodeExporter commented 9 years ago
plurals.xml:79: error: Multiple substitutions specified in non-positional 
format; did you mean to add the formatted="false" attribute?

- ICS framework-res.apk

Apktool 1.4.3 did not work.

Original comment by gzwalte...@gmail.com on 8 Dec 2011 at 9:57

GoogleCodeExporter commented 9 years ago
Did I say I hate formatting problems? ;-)

Original comment by Brut.alll on 8 Dec 2011 at 10:37

GoogleCodeExporter commented 9 years ago
Ok, this one is more complicated. It's quite a different problem: Issue 256

Original comment by Brut.alll on 8 Dec 2011 at 10:44

GoogleCodeExporter commented 9 years ago
yup missing formatted="false" problem still exists with 1.4.3 :|

Original comment by byczy...@gmail.com on 8 Dec 2011 at 11:53

GoogleCodeExporter commented 9 years ago
This error may be caused by many different situations. I have fixed most of 
them in 1.4.3, but still there are problems with xliff tags. This is why I have 
created a new issue.

Original comment by Brut.alll on 8 Dec 2011 at 12:20

GoogleCodeExporter commented 9 years ago
holdin my breath till you sort it out in next release, hmm not literally ;]

Original comment by byczy...@gmail.com on 8 Dec 2011 at 12:41

GoogleCodeExporter commented 9 years ago
ok framework-res.apk compiles now but there is a problem compiling Settings.apk

with output from Apk_Multi-Tool_Alpha_02 (with updated apktool ofc)

this is the error output -> http://pastebin.com/PWRiuWdz

attached Settings.apk deodexed with baksmali.jar 1.3.0 with -a 10

also attached twframework-res.apk if needed

framework used from comment #1 -> 
http://code.google.com/p/android-apktool/issues/detail?id=254#c1

Original comment by byczy...@gmail.com on 8 Dec 2011 at 4:58

Attachments:

GoogleCodeExporter commented 9 years ago
Confirming that this fix has caused regression issues as well.

Attached is Email.apk from I9100XWKK5. Decomping with 1.4.1 works correctly, 
but with 1.4.3, there are many instances of "Multiple substitutions specified 
in non-positional format; did you mean to add the formatted="false" attribute?"

Original comment by psych0ph...@gmail.com on 15 Dec 2011 at 4:42

Attachments:

GoogleCodeExporter commented 9 years ago
apktool 1.4.3 has a problem. It decompiles \n\n into a hiden return. When 
copying the sentence to MS Word, the whole line is broken into two lines. 

Original comment by danny.d...@gmail.com on 15 Dec 2011 at 6:32

GoogleCodeExporter commented 9 years ago
v 1.4.3 also leaves % characters unescaped if there is no "formatted" attribute:

<string name="throttle_data_usage_subtext">%1$s (%2$d %),週期上限為 
%3$s</string>

instead of:
<string name="throttle_data_usage_subtext">%1$s (%2$d %%),週期上限為 
%3$s</string>

I think that it should check strings that contains % char(s) if it is valid 
format string, if so, it should escape every % that is not part of a valid 
format string.

Original comment by Mariusz....@gmail.com on 16 Dec 2011 at 2:46

Attachments:

GoogleCodeExporter commented 9 years ago
SO here's what I know. 1.4.3 will not recompile to ICS 4.0.2 or 4.0.3 
framework-res.apk file without the Multiple Substitutions issue located at 
plurals.xml on line 79 mine says. So, In order to get it to work, I had to 
decompile with apktool.jar 1.4.1 and then move my images and edited xmls into 
that decompiled frame. What I also had to do, is rename two folders because 
1.4.1 (and 1.4.3 when it worked) renames the drawable-sw600dp-hdpi folder and 
the layout-sw600dp folders to drawable-xhdpi-v13 and layout-v13 respectively. 
If you recompile without renaming, it will do it successfully but, upon 
installation, your lock screen and settings.apk will be severely crippled.  Let 
me tell you one other thing I noticed. When apktool.jar 1.4.3 worked (it did 
for a couple days) it renamed those folders. Now that its not working and im 
getting the multiple substitution error, it actually keeps the folder names 
correct when decompiling.

Original comment by xkapin...@gmail.com on 5 Jan 2012 at 3:47

GoogleCodeExporter commented 9 years ago
Adding on here... theres a folder thats called layout-w600dp. It somehow just 
gets completely removed and you have to add it back in.

Original comment by xkapin...@gmail.com on 5 Jan 2012 at 4:07

GoogleCodeExporter commented 9 years ago
It`s faster if you decompile framework-res both with 1.41 and 1.43, then copy 
all values folder from 1.41 to 1.43. Then compile 1.43 version with apktool 
1.43 and it works.

Original comment by ralfnies...@gmail.com on 8 Jan 2012 at 7:32

GoogleCodeExporter commented 9 years ago
and from where comes the certainty that there ain't other segments tht got 
cutted out and that are not triggering any apktool errors or such? whats going 
on on compile

Original comment by byczy...@gmail.com on 8 Jan 2012 at 12:26

GoogleCodeExporter commented 9 years ago
Still getting this issue on GT-I9300-XXBLG1.
I get while decompiling :
    <plurals name="matches_found">
        <item quantity="other">%d of %d</item>
        <item quantity="one">1 match</item>
    </plurals>
Apktool can't compile it this way, i fix the strings format :
    <plurals name="matches_found">
        <item quantity="other">%1$d of %2$d</item>
        <item quantity="one">1 match</item>
    </plurals>

I compile it, then i got a duplicate %1$1$.

framework-res.apk : http://www.mediafire.com/?643ls00te81kz24

Original comment by karami...@gmail.com on 19 Jul 2012 at 11:30

GoogleCodeExporter commented 9 years ago
I do see this issue while decompiling an apk using apktool1.5.2. Tried out 
other versions mentioned above - 1.4.3, 1.4.4 and few others. But the 
"formatted=false" specified in the application resource strings.xml is not 
available in the decompiled strings.xml generated by the apktool. 

The string is as below;

    <string name="_120435678" formatted="false">Test %1$s%。</string> 

Strangely some strings.xml decompiled by the apktool do have the attribute 
"formatted=false" as has been specified in the application resources. Is the 
issue anywhere related to the value in the string like the % at the end of the 
string?

Original comment by hema.ang...@gmail.com on 6 Aug 2014 at 11:42