[Q] how to use a script to replace text in a file? - Android Q&A, Help & Troubleshooting

i want to use a script to change text in build.prop
the script has to look for:
ro.something: (text to change)
and change the (text to change)
how?

washwash said:
i want to use a script to change text in build.prop
the script has to look for:
ro.something: (text to change)
and change the (text to change)
how?
Click to expand...
Click to collapse
One way would be to make use of the sed command in a script, coupled with other commands such as grep you can search for the property you want and replace the values of it once you find the property your looking for. I would recommend taking a look at the sed documentation, as well as this tool which does something similar to what you want to do.

Related

[REF]How to theme - Samsung Vibrant[02/03/2011]

How to theme
Samsung Vibrant Edition​
Disclaimer: this guide is not idiot proof! You must have 1/2 a brain, 1/4 a brain will not work! Currently we have no way to know if you actually have 1/4 a brain or 1/2 so please take caution!
Click to expand...
Click to collapse
If you have extra images in your framework folders, it may cause problems later.. so try not to copy & paste or add extra images! - jumaaneface
Click to expand...
Click to collapse
What you will need:
-Apk Manager (Click)
-Android SDK (Click)
-An image editor, Adobe Photoshop is recommended!
-One brain.. (Edit: Half a brain is needed, not the full thing)
-Two hands..
-Fingers, 10 of them recommended!
-framework-res.apk
-twframework-res.apk
-services.jar (If you want to change the clock color)
How-to edit the apks:
1.) Get your two apk files (framework-res.apk & twframework-res.apk)
2.) Place them in apk-manager/place-apk-here-for-modding/
3.) Open apk-manager/script.bat
4.) Select option 22
5.) Select framework-res.apk
6.) Select option 1
7.) Select option 22
8.) Select twframework-res.apk
9.) Select option 1
10.) Go to apk-manager/projects/framework-res.apk/res/drawable-hdpi (or /drawable-hdpi-v4)
11.) Edit the .png files that you would like to change
12.) Go to apk-manager/projects/twframework-res/apk/res/drawable-hdpi (or /drawable-hdpi-v4)
13.) Edit the .png files that you would like to change
14.) Go back to script.bat
15.) Select option 22
16.) Select framework-res.apk
17.) Select option 3
18.) Select option 22
19.) Select twframework-res.apk
20.) Select option 3
(Don't zipalign)
21.) There will be two files in your place-here-for-modding folder.. They are called unsingedframework-res.apk & unsingedtwframework-res.apk just backup the originals, and delete the unsinged from part from the two new files.
How-to edit services.jar, clock color:
1.) Go to your SDK folder.. example: C:\android-sdk-windows\tools
2.) Get your services.jar file & open it with winrar
3.) Take the classes.dex from it & put it in your android-sdk-windows\tools\ folder
4.) Open CMD
5.) Run the following command: "CD C:\android-sdk-windows\tools" (directory may not be the same)
6.) Run the following command: "java -jar baksmali.jar -o classout/ classes.dex"
7.) Go to classout\com\android\server\status\StatusBarIcon.smali
8.) On line 34 it will look something like: "const/4 v7, -0x1"
9.) On line 34 change the above to: "const v7, 0xffffff" (That will be black)
10.) Compile the classes.dex by using this command: "java -Xmx512M -jar smali.jar classout/ -o new-classes.dex"
11.) Get the new-classes.dex from android-sdk-windows\tools\ folder & move it to your desktop
12.) Rename new-classes.dex to classes.dex
13.) Re-open the services.jar using winrar & past your new classes.dex in there
(Notice: After editing the clock color, it will take longer to boot the first time! Be patient!)
I may update this if people need an even easier guide...
I wrote this a while ago, and just had it on my forums.
Original: Click here
Helpful things:
"How to change colors from standard hex to smali code" - Tonicacid
"How to use html colors for changing the clock" - Master (me)
Nice dude thanks
This is awesome.
shouldnt you be able to change the ffffff in "const v7, 0xffffff" to whatever color you want?
Yeah, you can change it to whatever you want.. When I get home I'll add the directions to change the text color in the pull down and market downloads...
Tonicacid said:
shouldnt you be able to change the ffffff in "const v7, 0xffffff" to whatever color you want?
Click to expand...
Click to collapse
It would actually be
"const v7, 0xffff0000" for red, etc. But yes, you can change that value.
Possibly one of the most helpful threads. Just enough to make me feel I have 1/2 a brain.
stuck
Hey I'm new to this and first of all thank you so much for this!
Second I'm having a problem, I'm stuck at "java -Xmx512M -jar smali.jar classout/ -o new-classes.dex"
I keep getting "classout\com\android\server\status\StatusBarIcon.smali[0,0] 10145074 connot fit into a short"
I'm trying to change the status bar clock to Green.
Thank you again.
r6kid said:
Hey I'm new to this and first of all thank you so much for this!
Second I'm having a problem, I'm stuck at "java -Xmx512M -jar smali.jar classout/ -o new-classes.dex"
I keep getting "classout\com\android\server\status\StatusBarIcon.smali[0,0] 10145074 connot fit into a short"
I'm trying to change the status bar clock to Green.
Thank you again.
Click to expand...
Click to collapse
What hex code are you using
Sent from my SGH-T959 using XDA App
Sorry I wasn't using my half a brain I found my mess up I over looked the "const/4"
I will take it that I don't need apk manager. Just need to unpack, repack, and sign. I could also just use a Hex editor to change the colors on the things I would like to change such as date, notification text, etc.. Just like I did with the G1.
toeshot said:
I will take it that I don't need apk manager. Just need to unpack, repack, and sign. I could also just use a Hex editor to change the colors on the things I would like to change such as date, notification text, etc.. Just like I did with the G1.
Click to expand...
Click to collapse
I am pretty sure you can't use Hexedit to edit the Clock. You need to decompile it.
Also, you don't sign /system apks
Awesome! I barely qualify as a 1/2 brain. ApkManager is sweet simple program that does the job. In the many times I have used it, I noticed that recompilation of the files are not clean after images have been change/edit. So I always optimize images inside (option 2) everytime I recompile. Does this help and worth doing?
BTW: what xml editor are you guys using? Some of the ones that I downloaded are crap.
Tonicacid said:
What hex code are you using
Sent from my SGH-T959 using XDA App
Click to expand...
Click to collapse
I used "9acd32" but my clock isnt showing up at all now, I should be able to flash this with NinjaMorph right? or do I need to go in and replace it?
Master™ said:
I am pretty sure you can't use Hexedit to edit the Clock. You need to decompile it.
Also, you don't sign /system apks
Click to expand...
Click to collapse
ya I have to smali, to edit the clock. I was just wondering if apk manager offered anything out of unpacking the file.
r6kid said:
I used "9acd32" but my clock isnt showing up at all now, I should be able to flash this with NinjaMorph right? or do I need to go in and replace it?
Click to expand...
Click to collapse
Use the color code 6532CD for that color.
Sent from my SGH-T959 using XDA App
Tonicacid said:
Use the color code 6532CD for that color.
Sent from my SGH-T959 using XDA App
Click to expand...
Click to collapse
I'm still getting a no show for the clock?
r6kid said:
I'm still getting a no show for the clock?
Click to expand...
Click to collapse
Can you post the code you used
Sent from my SGH-T959 using XDA App
".prologue
const v7, 0x6532CD"
r6kid said:
".prologue
const v7, 0x6532CD"
Click to expand...
Click to collapse
This is a dumb question but your not putting the " marks in are you?
Sent from my SGH-T959 using XDA App

[WIP]Developers only - a different way of creating flashables..

This is NOT going to contain anything for users to flash - this is for developers(or those who aspire and want to learn). This is a work in progress.
I want to make it clear that XDA nor the mods endorse or approve of this thread(well, they are allowing me to post it), but this is a concept that may be helpful for multiple reasons.
Please go easy on me, constructive criticism is welcomed, flaming is not. Do not post if you are not adding to the discussion or a developer asking a question. This is something I have been working on for a "rom" I will be putting out in a few days.. I just decided I would share the process, maybe others can help refine it.
Benefits:
If you build for multiple devices you can use this SAME flashable on those other devices and only need to edit the updater-script, prop edits that are device specific, and any system or apk's that are device specific! This could take 5 minutes or less to change AND upload!
It will work on ANY rom(for the same device) as long as you aren't modifying the things that rom specifically needs - and with this method it would be very rare that you would somehow break a rom.
You can still add files/apks, delete files you don't want, modify(rather than replace) the build.prop - technically you could create a flashable that turns stock into CM9 if you wanted to, but only then is a full ROM really needed.
Users can choose the rom they want and add your customizations(the entire community can use your flashable, rather than just a portion!)
It reduces the flashable filesize - rather than 100-400mb your flashable could be 4-20(depending how much you are changing).
It takes MUCH less time to flash, the recovery log will be shorter/easier to read, and it reduces the chance of errors(you are changing less).
Easier to track the changes since the flashable has been reduced to what is NEEDED.
This is an open source community - other devs and even users could look at your flashable and clearly see what you've done, how you've done it, so everyone benefits.
Easier to support - to make changes is EASY, faster zipping, signing, updating, uploading, etc.
You can choose to make it CONFIGURABLE - add #comments in the updater-script, the included build.prop script, or add a readme in the flashable that tells them what they can remove if they don't want it!
I'm quite sure there are MANY more reasons this is beneficial, but I'll leave it to you to decide..
Post 1 - Benefits, explanation, reasoning
Post 2 - Instructions and a soon a flashable example that I will publish
Post 3 = profit?!
First, there are totally different systems out there we can try to get running, CM9, MIUI, etc- this is when the very framework is absolutely different-- otherwise every rom we have RIGHT NOW is just a series of tweaks to the stock(like the leaked ICS) rom. We can argue that people just tweak what is there, or "develop" something new, but nearly everything is building on the concepts of something before- so let's do it right.
What makes a rom unique:
It is easier to keep track of changes(the /system will only have the changes you make, your updater-script will show you other changes, and any scripts you create will show the last changes) - so there shouldn't be "and other stuff I don't remember" in your changelog. This will also assure that there are less potential issues- you are ONLY changing specific things- troubleshooting these things are easier when you aren't including the entire modified flashable.
What you are trying to accomplish:
The main thing that makes a "rom" stand out from any other is the changes to the build.prop - you totally replaced it with something that is your own(or an adapted version hopefully giving proper credit to whoever's tweaks you are using): but they are using your "rom" if they have your build.prop and not someone else's. Everything else is deleting, copying, setting permissions, etc.
The goal: making it more open source
Until you build something totally new(Cm9, miui, etc), you are working with an open source platform, modifying, adding, deleting, scripting. Period. Admit that you are giving the base platform some tweaks, or a "flavor" that others will hopefully prefer.
If you are already developing, you know that with the correct updater-script you can add apks, delete what you don't want, over-write the things you want to replace- this includes theming and everything else you could want.. and usually you would include this in the full base rom, totally pre-configured. With a build.prop that is yours alone.
Conclusion:
Unless you are building an OS from scratch, or modifying it so heavily that it is more yours than it is not, giving the end users these options without wiping is the way to go. If they can flash your mods and then mine and end up with a better final product, how can this go wrong? This is open source, this is android, this is evolution.
Instructions:
First, keep track of all the changes you want to make - the better organized you are, the easier this will be. If you aren't even sure what all you did..
How to do it:
One of the main things you are changing by creating a total prepacked rom is the build.prop- perhaps you have tweak A, and I have tweak B, and those tweaks are different enough to change the users experience.. but why not combine them if possible? It IS possible.
Decide on the build.prop edits that you want to add/modify(you will NOT replace their build.prop) and modify the propEditor script as needed - if you build for multiple devices I would recommend you add the device specific ones at the end(with #comments) for easy modification/removal from script. You really only need to MODIFY the RO.whatever lines(because they are read only), everything else can be added to a local.prop in the /data folder
Create your updater-script as you normally would, as you know this does the main work - this will likely remain mostly the same, with just a few lines added for the scripts you need to modify the build.prop. Just make sure you delete what you would from the rom itself with the script
Rather than copy your /system /data or any other files into the rom you would normally be modifying, those are the only files you will include in the flashable - if this is done right it will make all of the changes you want without breaking anything.
If you want others to be able to understand/build upon your work you can add #comments or a readme in the above steps, then all users would have to do is remove the lines you instructed, re-zip(no need to sign if they use 7-zip or winrar) and then flash.
As said in the previous area, outside the build.prop you can make a small flashable that will change everything, but if you can MODIFY tweaks already in the build.prop, or add lines if they don't exist-- we would be creating a continual evolution of a better and better performing rom.. with feedback bad tweaks would get tossed, each developer adds their flavor, but users can flash what they want to get the performance they desire without the headache and confusion that comes with wiping everything of the developer they used before that. This will enable them to learn more about how and what we are doing with their devices, and they can provide feedback that makes it better for everyone.
The code(that may need work) to modify or add lines in the default build.prop is here:
(This may require testing, big thanks to tommytomatoe for all the help, original thread is here.)
Code:
#!/sbin/sh
# Build.prop editor script with basic sed commands
# tommytomatoe
# May 12, 2012
# mounting system as rw
busybox mount -o remount,rw /system
if [ $? != 0 ] ; then exit
fi
FILE=/system/build.prop
TMPFILE=$FILE.tmp
line1=ro.product.version
line2=ro.HOME_APP_ADJ
line3=ro.media.enc.jpeg.quality
#Add more line# formatted as above as needed to identify each prop
line1Arg=Classicv0.1.0
line2Arg=1
line3Arg=100
#Add more line$Arg formatted as above as needed for each prop change
lineNum=
#to add additional prop changes copy the lines between here
prop=$line1
arg=$line1Arg
if grep -Fq $prop $FILE ; then
lineNum=`sed -n "/${prop}/=" $FILE`
echo $lineNum
sed -i "${lineNum} c${prop}=${arg}" $FILE
else
echo "$prop does not exist in build.prop"
echo "appending to end of build.prop"
echo $prop=$arg >> build.prop
fi
#and here and paste to the end, changing the $line# and $line#Arg to match what you've added
# to iterate over all the prop values you want to change,
# just copy and paste the code chunk or create a for loop.
# I will leave it to you to create a for loop
prop=$line2
arg=$line2Arg
if grep -Fq $prop $FILE ; then
lineNum=`sed -n "/${prop}/=" $FILE`
echo $lineNum
sed -i "${lineNum} c${prop}=${arg}" $FILE
else
echo "$prop does not exist in build.prop"
echo "appending to end of build.prop"
echo $prop=$arg >> build.prop
fi
prop=$line3
arg=$line3Arg
if grep -Fq $prop $FILE ; then
lineNum=`sed -n "/${prop}/=" $FILE`
echo $lineNum
sed -i "${lineNum} c${prop}=${arg}" $FILE
else
echo "$prop does not exist in build.prop"
echo "appending to end of build.prop"
echo $prop=$arg >> build.prop
fi
It may require some work, feel free to offer advice if you can help make it better), but you can make a few changes to that, and rather than replacing the entire system on a users phone, you are making YOUR modifications to make their device work better! Read the #comments above to see the different tweaks you are trying to make, and it will automatically either change the value, or it will add the line if it doesn't already exist in the build.prop
Profit?!
I understand many developers may think this would make it easier to "steal" your work, but as I said before, everything android is open source. Besides, with enough changes this makes it a TRUE rom, and it will be NEARLY as complex as the much larger file he would be uploading.
It could actually be profitable time/effort wise, ANY rom could be done with this as long as you tell them what base to work with.
Example of "profit"
Mike 1986.'s ARHD is on 10 devices, if you check, most of the features in one are in the rest of them. He has enough experience where porting everything over all of his changes to a new rom probably isn't that difficult for him(I'll bet he is VERY organized), but this would enable him to make a few changes to a propEditor script, the updater-script, remove or change out a few files.. re-zip and sign, upload, done.
This also takes out much of the opportunity for developer error or errors during flashing..
Doubt I'll need it.. but we'll see.

[Q] Edit line in file from terminal?

Hi, I don't really know where to put this topic but anyways my problem is that i need to edit a line in a file.
So i think of something like this
su
Cd /data/data/foldernameofapp/
Edit "file.dat"
Edit line 4 "text here 2"
i want it to edit like this "text here 3"
Change only the number. or replace the hole line with a new line where i only changed the number. btw the best is if the script can change a line and not find text and change. Because the number in the text i want to change can vary from different numbers.
Hope someone understands what i mean. Thanks in advance
P.S i can use root explorer and open the file with a text editor and change it, this works but takes forever
P.S.S i got root
This below will change "text here <whatever>" in oldfile.txt to "text here 3" in newfile.txt
Code:
$ busybox sed 's/text here .*/text here 3/' oldfile.txt > newfile.txt
kuisma said:
This below will change "text here <whatever>" in oldfile.txt to "text here 3" in newfile.txt
Code:
$ busybox sed 's/text here .*/text here 3/' oldfile.txt > newfile.txt
Click to expand...
Click to collapse
Okay but will it create a new file? Because I want it to save the old file.
Sent from my Galaxy Nexus using xda premium
julllleee said:
Okay but will it create a new file? Because I want it to save the old file.
Click to expand...
Click to collapse
I'm quite sure you can find out a way for the new file to live under the name of Sanders.
hmm i get this error. ser:bad option in substitution expression
Btw what do you mean with the last post? How do I save it? I can use your code and then maybe have another script after your thats remove the old file and then rename the new file to the old name?
sed 's/<zk_cp>0</zk_cp>.*/<zk_cp>6</zk_cp>/' zk.dat > zk2.dat
julllleee said:
sed 's/<zk_cp>0</zk_cp>.*/<zk_cp>6</zk_cp>/' zk.dat > zk2.dat
Click to expand...
Click to collapse
Ah, ok, you can't use / as delimiter if it occurs in the replacement strings as well. And yes, of course you can rename (mv) or copy (cp) the resulting files to get correct file names. Did you really have to ask that?
Code:
$ cp zk.dat zk.tmp
$ sed 's!<zk_cp>.*</zk_cp>!<zk_cp>6</zk_cp>!' zk.tmp > zk.dat
kuisma said:
Ah, ok, you can't use / as delimiter if it occurs in the replacement strings as well. And yes, of course you can rename (mv) or copy (cp) the resulting files to get correct file names. Did you really have to ask that?
Code:
$ cp zk.dat zk.tmp
$ sed 's!.*!6!' zk.tmp > zk.dat
Click to expand...
Click to collapse
Okay thanks I'll try the code
Sent from my Galaxy Nexus using xda premium
Wow works really good exactly as I want. I really appreciated it. You are the best!!
Sent from my Galaxy Nexus using xda premium

[Q] Please help me change my android id

so i used all my offers for in game premium content and i would like to do them agin, i belive its possible if i change my id cause i did the same offers on my friends phone, am using rooted SE Live i have found settings.db in Data/data using root browser and opened the db with phone notepad, now can anyone help me out what should i edit to change my id and is there anything i need to do after it not to brick my phone, thx alot!
mladen190 said:
so i used all my offers for in game premium content and i would like to do them agin, i belive its possible if i change my id cause i did the same offers on my friends phone, am using rooted SE Live i have found settings.db in Data/data using root browser and opened the db with phone notepad, now can anyone help me out what should i edit to change my id and is there anything i need to do after it not to brick my phone, thx alot!
Click to expand...
Click to collapse
This is easy if you are rooted and have busybox:
It's easier to adb shell instead of manually typing this on a terminal emulator:
Code:
$ su
# cd /data/data/com.android.providers.settings/databases/
# sqlite3 settings.db
You will get a "sqlite>" prompt. enter the commands into the prompt:
Code:
insert into secure ("name", "value" ) values ("android_id","DEVICE_ID_GOES_HERE");
.exit
If you do not have a new ID to put in, I believe you can pick any 16 character hex number [A-F and 0-9].
Then after that, I would reboot just to be sure the change is reflected immediately.

Android dumpState - tool for filtering logs

Hi,
Im searching for a tool, which can filter logs after dumpstate.
Dumpstate has over 100K+ lines of logs and its very difficult to search for something. I need tool to for example show only lines containing given string (or many of them e.x. lines containing "x" or "y" or "z").
Now I'm using Notepad++, but only one string can be searched at once.
Is there any tool or something?
Thanks in advance.

Categories

Resources