Python Learn-去除AOSP重复String

2019-03-17  本文已影响0人  月止风溟

Python Learn

年后的话,一直在加班,赶项目,解bug,扯皮。有些感觉活得不真实,也许这就是生活吧。

这个是在Aosp导入Android Studio,会有重复字串的问题。因为Android源码里,针对不同的设备有不同的string,源码编译不会有问题,导入Android Studio就会编译不过。所以看了看python,写个这个,当娱乐了。

之前的OpenGL ES学习,尽量之后抽时间续写。

1. 安装python环境

windows 环境搭建基本都一样。
这里就直接贴个链接好了。
https://www.cnblogs.com/shizhijie/p/7768778.html
如果在cmd里面敲入python,有版本信息打印就好了。

2. hello world

在cmd里面键入python,然后键入print('Hello world!')

3. Pycharm

python与java,c++这种高级语言不通,采用缩进的方式处理代码块。这个让我很不习惯。
那么,需要写一个脚本的话,IDE还是能快速的帮助上手。python有IDE Pycharm。安装和破解教程我就不贴了。作为程序员最痛恨大家不尊重版权。但是在工作的时候又老是践踏版权。。。

4.处理xml里面重复定义的string

要分两步走。第一步,找到所有res/里面的strings.xml。第二步,解析xml并去重。
去网上找一找,这里我使用os.walk()
解析xml的话,因为stings.xml就一个层级,三种解析方式,我挑选了Element解析。
然后试错,调试就行了。

# Apache License Version 2.0
# Version 1.0
# Date 2019/03/17
# Author SleepyDragon

import xml.etree.ElementTree as ET
import os
import sys

def changeXml(filePath):
    try:
        tree = ET.parse(filePath)
        root = tree.getroot()
        rootNew = ET.Element('resources')
        for child in root:
            productType = child.get('product', default='default')
            if (productType != 'default'):
                print(child.text)
                rootNew.append(child)
        for child in rootNew:
            root.remove(child)
        tree.write(filePath, 'UTF-8')
    except Exception as e:  
        print(e)

def file_name(file_dir):
    for root, dirs, files in os.walk(file_dir):
        thePath = str(root)
        if thePath.startswith(".\\values"):
            print("find this "+thePath)
            changeXml(thePath + '\strings.xml')
            print("deal with "+thePath + '\strings.xml')


file_name(".")
上一篇下一篇

猜你喜欢

热点阅读