python修改app_Python 设置 AppIcon

import os

import json

import shutil

from math import trunc

def generate_ios_icons(xcode_project_path, icons_dir):

# 从 Xcode 11 工程 Images.xcassets/AppIcon.appiconset/Contents.json 转换生成

# 排列顺序调整为与 Unity 生成的一致,方便自动修改后比较文件内容

images_template = [

{

"size": 57,

"idiom": "iphone",

"scale": 1

},

{

"size": 57,

"idiom": "iphone",

"scale": 2

},

{

"size": 60,

"idiom": "iphone",

"scale": 2

},

{

"size": 60,

"idiom": "iphone",

"scale": 3

},

{

"size": 29,

"idiom": "iphone",

"scale": 1

},

{

"size": 29,

"idiom": "iphone",

"scale": 2

},

{

"size": 29,

"idiom": "iphone",

"scale": 3

},

{

"size": 40,

"idiom": "iphone",

"scale": 2

},

{

"size": 40,

"idiom": "iphone",

"scale": 3

},

{

"size": 20,

"idiom": "iphone",

"scale": 2

},

{

"size": 20,

"idiom": "iphone",

"scale": 3

},

{

"size": 29,

"idiom": "ipad",

"scale": 1

},

{

"size": 29,

"idiom": "ipad",

"scale": 2

},

{

"size": 40,

"idiom": "ipad",

"scale": 1

},

{

"size": 40,

"idiom": "ipad",

"scale": 2

},

{

"size": 50,

"idiom": "ipad",

"scale": 1

},

{

"size": 50,

"idiom": "ipad",

"scale": 2

},

{

"size": 72,

"idiom": "ipad",

"scale": 1

},

{

"size": 72,

"idiom": "ipad",

"scale": 2

},

{

"size": 76,

"idiom": "ipad",

"scale": 1

},

{

"size": 76,

"idiom": "ipad",

"scale": 2

},

{

"size": 20,

"idiom": "ipad",

"scale": 1

},

{

"size": 20,

"idiom": "ipad",

"scale": 2

},

{

"size": 83.5,

"idiom": "ipad",

"scale": 2

},

{

"size": 1024,

"idiom": "ios-marketing",

"scale": 1

}

]

appicon_dir = os.path.join(xcode_project_path, 'Unity-iPhone/Images.xcassets/AppIcon.appiconset')

cleared = False

images = []

for image_template in images_template:

icon_name = '{0}x{0}.png'.format(trunc(image_template['size'] * image_template['scale']))

icon_path = os.path.join(icons_dir, icon_name)

if not os.path.exists(icon_path):

continue

if not cleared:

for root, dirs, files in os.walk(appicon_dir):

for f in files:

os.unlink(os.path.join(root, f))

for d in dirs:

shutil.rmtree(os.path.join(root, d))

cleared = True

shutil.copy2(icon_path, appicon_dir)

image = {'filename': icon_name, 'idiom': image_template['idiom'],

'scale': '{0}x'.format(image_template['scale']), 'size': '{0}x{0}'.format(image_template['size'])}

images.append(image)

contents = {

'images': images,

'info': {

'author': 'xcode',

'version': 1

},

'properties': {

'pre-rendered': False

}

}

contents_path = os.path.join(xcode_project_path, 'Unity-iPhone/Images.xcassets/AppIcon.appiconset/Contents.json')

with open(contents_path, 'w', encoding='utf-8') as openfile:

json.dump(contents, openfile, indent=4, sort_keys=False, ensure_ascii=False)

# 36x36.png src/main/res/drawable-ldpi/app_icon.png

# 48x48.png src/main/res/drawable-mdpi/app_icon.png

# 72x72.png src/main/res/drawable/app_icon.png

# 72x72.png src/main/res/drawable-hdpi/app_icon.png

# 96x96.png src/main/res/drawable-xhdpi/app_icon.png

# 144x144.png src/main/res/drawable-xxhdpi/app_icon.png

# 192x192.png src/main/res/drawable-xxxhdpi/app_icon.png

def generate_android_icons(gradle_project_path, icons_dir):

icons_template = [

{

'size': 36,

'name': 'drawable-ldpi'

},

{

'size': 48,

'name': 'drawable-mdpi'

},

{

'size': 72,

'name': 'drawable'

},

{

'size': 72,

'name': 'drawable-hdpi'

},

{

'size': 96,

'name': 'drawable-xhdpi'

},

{

'size': 144,

'name': 'drawable-xxhdpi'

},

{

'size': 192,

'name': 'drawable-xxxhdpi'

},

]

for icon_template in icons_template:

icon_name = '{0}x{0}.png'.format(trunc(icon_template['size']))

icon_path = os.path.join(icons_dir, icon_name)

if not os.path.exists(icon_path):

continue

appicon_dir = os.path.join(gradle_project_path, 'src/main/res/{0}'.format(icon_template['name']))

if not os.path.exists(appicon_dir):

continue

appicon_path = os.path.join(appicon_dir, 'app_icon.png')

print(icon_path, appicon_path)

shutil.copy2(icon_path, appicon_path)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值