脚本在安卓项目开发中的一些简单应用

雪夜
发布: 2025-06-22 08:14:14
原创
228人浏览过

前言

在日常项目开发中,除了编写业务逻辑外,还需处理一些琐事,如资源更新、单元测试和资源压缩等。本文旨在介绍如何通过脚本处理这些琐事,让开发者能够专注于业务开发。

一、脚本的定义

脚本可以简单理解为一条条可见的文字命令(如可通过记事本查看、编辑)。脚本程序在执行时,由系统解释器逐条翻译成机器可识别的指令,并按顺序执行。由于脚本执行时需要额外的翻译过程,其效率略低于二进制程序。

二、使用场景示例

1. 崩溃日志格式化

需求描述:项目中设置了崩溃异常捕获机制,崩溃时会保存栈信息到SD卡的.crash文件夹中。但这些信息是单行文本,长度较长时难以定位问题。例如:

atandroid.app.FragmentManagerImpl.moveToState(FragmentManager.java:993) at android.app.FragmentManagerImpl

问题在于转义字符保存不正确, 变成了\n, 变成了\t。手动转换非常耗时。

使用脚本:

方案一:用C语言编写控制台程序,读取文件内容,将\n转换为 ,\t转换为 。用批处理调用此程序,传入文件路径作为参数。C语言代码如下:

char buff[300000] = {0};

ifstream myfile(argv[1]);

myfile.read(buff, 300000);

myfile.close();

int len = strlen(buff);

// 处理 \n 和 \t 转换为 和

for (size_t i = 0; i != len - 1; i++)

{

if (buff[i] == '' && buff[i + 1] == 'n')

{

buff[i] = ' ';

buff[i + 1] = ' ';

}

else if (buff[i] == '' && buff[i + 1] == 't')

{

buff[i] = ' ';

buff[i + 1] = ' ';

}

}

生成convertLog.exe,并在批处理中调用:

call convertLog %1

直接将崩溃文件拖到批处理上,批处理会将文件路径作为参数传递给convertLog.exe。

方案二:用Python直接转换,代码如下:

# -- coding:utf-8 --

text = open('crash.cr').read()

print(text.replace("\n", " ").replace("\t", " "))

两行代码即可完成转换,需Python3环境。

2. 切换手机屏幕分辨率

需求描述:项目为1920×1080分辨率的设备开发,但需适配1080×720分辨率的新设备。由于没有新设备样机,无法直接测试。

具体步骤:

  1. 修改/system/build.prop文件中的ro.sf.lcd_density为320。
  2. 进入adb shell,输入“su”并回车。
  3. 输入“wm size 720x1280”(若无效,尝试“am display-size 720x1280”)并回车。
  4. 重启手机,设置生效,屏幕降为720p。

由于需频繁切换分辨率,利用脚本自动化此过程:

脚本方案:

预先修改好不同分辨率的build.prop文件,直接push对应的文件。具体代码如下:

set device=M166023E2K

adb -s %device% root

adb -s %device% remount

adb -s %device% shell "chmod 777 /system/build.prop"

adb -s %device% push 320/build.prop /system/

adb -s %device% shell "wm size 720x1280"

adb -s %device% reboot

pause

修改文件路径和分辨率即可切换。编写两个批处理文件,运行对应批处理即可快速切换。

3. 资源更新

需求描述:项目中使用图片、音频、视频、字体和H5页面等资源,更新时需同步到res或assets文件夹。以图片为例:

常规做法:视觉设计师将图片放到服务器,软件开发人员从服务器拷贝到工程资源文件夹,可能遇到:

  1. 图片名称为中文,需改为英文。
  2. 文件多时,更新定位麻烦,常用全部替换。

使用脚本:在Windows下使用批处理,从服务器拷贝图片到res文件夹并重命名。关键代码如下:

@echo off

set SRC_PATH=92.168.100.230项目文件某个项目

set DEST_PATH=D:项目某个项目 es

set src_name=%1

set dest_name=%2

copy "%SRC_PATH%%src_name%.png" "%DEST_PATH%%dest_name%.png"

将此批处理命名为pullPic.bat,处理单个图片。

为实现批量操作,需改名表。用Excel保存改名表,A列为批处理命令,B列为批处理名称,C列为原名称,D列为目标名称。

脚本在安卓项目开发中的一些简单应用

将ABCD列内容复制到文本文件,保存为pullAllPic.bat,直接运行即可更新资源。

4. 资源压缩

需求描述:为了减小apk体积,需压缩资源图片。

压缩方法:

方法一:使用www.tinypng.com网站压缩,需上传、下载、解压,存在泄漏风险。

方法二:使用PngYu拖动图片文件夹压缩,但仍需手动操作。PngYu使用pngquant.exe进行压缩。

脚本在安卓项目开发中的一些简单应用

利用脚本直接调用pngquant.exe压缩,关键代码如下:

echo "开始处理..."

for /R %%i in (123*.png) do (

pngquant -f --ext .png --quality 80-80 "%%i"

)

pause

80这个参数经过验证,不失真且压缩率高。发布apk前双击批处理即可完成资源压缩。

5. Monkey测试

需求描述:使用adb的monkey命令进行随机事件测试,测试项目稳定性。要求连续48小时monkey不出现闪退和ANR,测试后将结果拷贝到服务器。

使用脚本:脚本可自动化此过程。脚本如下:

@echo off

adb shell monkey -p com.example.test -vvv 100000 >test.txt

copy test.txt 92.168.100.230个人文件monkey

pause

运行10万次monkey,完成后将结果拷贝到服务器。需要测试时,双击运行脚本即可。

三、自定义脚本控制台

将上述脚本整合,定义自定义脚本控制台:

步骤一:在项目根目录新建scripts文件夹,将脚本放入,分别命名为updateRes.bat(更新资源)、zipRes.bat(压缩资源)、unitTest.bat(单元测试)、runMonkey.bat(Monkey测试)。注意调整相对路径。

步骤二:定义与项目名称相同的批处理,如TestProject.bat,用于调度其他批处理。代码如下:

@echo off

if "%1"=="updateRes" call updateRes.bat goto END

if "%1"=="zipRes" call zipRes.bat goto END

if "%1"=="runMonkey" call runMonkey.bat goto END

if "%1"=="unitTest" call unitTest.bat goto END

echo wrong param

:END

pause

步骤三:将scripts文件夹添加到系统环境变量中。

使用:在任何地方打开命令行,输入TestProject updateRes即可更新资源,其他操作类似。

脚本在安卓项目开发中的一些简单应用

结语

我们的目标是实现项目的一键测试、一键部署、一键发布,让开发者专注于业务逻辑。批处理文件也是文档,新人可通过查看脚本了解项目工作流程。

以上只是简单应用,还有更多需求可通过脚本实现。工作中遇到重复任务时,应考虑使用工具自动化,提升效率。

小贴士

本文版权归Open软件开发小组所有,如需转载请联系主编申请授权。

以上就是脚本在安卓项目开发中的一些简单应用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号