Bagaimana cara membuat string / app_name berbeda untuk setiap rasa?
Saya ingin menulis pembaruan, tetapi menyadari bahwa itu lebih besar dari jawaban asli yang mengatakan bahwa saya menggunakan skrip Python yang menambal sumbernya.
Skrip Python memiliki parameter, nama direktori. Direktori itu berisi aset per ragam, sumber daya seperti ikon peluncur, dan file properties.txt dengan kamus Python.
{ 'someBoolean' : True
, 'someParam' : 'none'
, 'appTitle' : '@string/x_app_name_xyz'
}
Skrip Python memuat kamus dari file itu dan mengganti nilai antara <string name="app_name">
dan </string>
dengan nilai properties['appTitle']
.
Kode di bawah ini disediakan atas dasar apa adanya / apa adanya, dll.
for strings_xml in glob.glob("res/values*/strings.xml"):
fileReplace(strings_xml,'<string name="app_name">',properties['appTitle'],'</string>',oldtextpattern=r"[a-zA-Z0-9_/@\- ]+")
untuk membaca properti dari satu atau lebih file seperti itu:
with open(filename1) as f:
properties = eval(f.read())
with open(filename2) as f:
properties.update(eval(f.read()))
dan fungsi fileReplace adalah:
really = True
def fileReplace(fname,before,newtext,after,oldtextpattern=r"[\w.]+",mandatory=True):
with open(fname, 'r+') as f:
read_data = f.read()
pattern = r"("+re.escape(before)+r")"+oldtextpattern+"("+re.escape(after)+r")"
replacement = r"\g<1>"+newtext+r"\g<2>"
new_data,replacements_made = re.subn(pattern,replacement,read_data,flags=re.MULTILINE)
if replacements_made and really:
f.seek(0)
f.truncate()
f.write(new_data)
if verbose:
print "patching ",fname," (",replacements_made," occurrence" + ("s" if 1!=replacements_made else ""),")",newtext,("-- no changes" if new_data==read_data else "-- ***CHANGED***")
elif replacements_made:
print fname,":"
print new_data
elif mandatory:
raise Exception("cannot patch the file: "+fname+" with ["+newtext+"] instead of '"+before+"{"+oldtextpattern+"}"+after+"'")
Baris pertama dari skrip tersebut adalah:
#!/usr/bin/python
# coding: utf-8
import sys
import os
import re
import os.path
import shutil
import argparse
import string
import glob
from myutils import copytreeover