




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android 功耗测量项目技术开发手册V1.4.3小组名称:Android 低功耗组指导教师:文档撰写人:老师文档撰写时间:2013 年 5 月 9 日团队分工表项目名称学号分工Android 功耗测量SA12226251模型整理、处理模块SA12226277UI 架构、图表显示模块SA12226240关功耗模型调研、硬件调研、文档撰写SA12226237功耗模型调研、硬件调研、文档撰写目录123系统概述1编程环境1关键点13.1 关键算法.2电量消耗统计算法1充电补偿算法4.6图表显示技术6程序/用户行为分析技术3.2.24编程实现84.1代码结构描述8
2、工程结构描述8静态结构描述9界面结构描述10数据结构描述..3图表展示模块12模块14数据处理模块153.4程序详细描述.24.4.3显示模块17模块18数据处理模块184.5系统基本处理流程..44.5.5系统数据流20耗电历史行为.21.22图表显示22行为数据显示24专业名词1 系统概述本基于 Android 自带的功耗统计模型和电池驱动,图形化的展示了电池的耗电曲线,各个应用的耗电以及各个的耗电状况。开发本的目的在于研究 Android 自带的功耗模型是否准确,以便后期的模型改进。对模型统
3、计的功耗和电池驱动直接返回的情况进行了对比,能更直观的找到出现差异的关键点,为了方便分析差异,本支持点击相应的点显示当前时间的系统 log 信息。2 编程环境Eclipse 3.6 + Android SDK,ADT因为本用的 Adnroid 4.0 的 API 所以SDK 中至少要包含 4.0 以上环境3 关键点3.1 关键算法3.1.1 电量消耗统计算法本程序使用 Android 操作系统自带的电量消耗统计算法进行耗电统计,该算法实现在com.android.settings.fuelgauge.erUsageSumndroid 操作系统中的应用程序以 UID区分,即 Android 视一
4、个应用程序为一个用户。此模型中电量统计的是毫安秒(mAs)。电量统计的数据来源分两部分:一部分来自 Android 系统中的rofile.xml 文件(由手机厂商提供),文件中了各设备处于不同状态的电流值(或进行某操作需要消耗的电量值);另一部分来自系统耗电统计算法如下: Ptotal = Papp + Psystem,如某的执行时间或数据传输量。耗电总电量有两部分组成,一是应用耗电,即应用程序消耗的电量;二是系统耗电,即非应用程序使用带来的耗电。1.应用耗电计算公式如下:Papp = Ppro s_CPU + Pwakelock + PDT + Papp_WiFi + Psensor变量说明
5、见下表:Ppro s_CPU= (Tuser_mode + Tkernel_mode )DCPU_ACTIVESfreq )Pwakelock = Twakelock DCPU_AWAKEPapp_WiFi = Tapp_WiFiDWIFI_ONPsensor = Pnormal + TGPS DGPS_ON变量说明见下表:PDT = ( Bin + Bout ) PperBytePperByte = ( Pmobile_perByteBmobile+ PWiFi_perByteBWiFi )/(Bmobile+ BWiFi )Pmobile_perByte = ( DRADIO_ACTIVE
6、 / 3600)/( mobips / 8)mobips= ( Bmobile= 0 ? Bmobile 8 / Tmobile : 200000 )PWiFi_perByte =(DWIFI_ACTIVE / 3600)/( 1000000 / 8 )符号说明符号说明Tuser_mode用户态时间Tapp_WiFiapp 使用 WIFI 的时间Tkernel_mode内核态时间DWIFI_ONER_WIFI_ON 基准DCPU_ACTIVEER_CPU_AWAKE 基准DGPS_ONER_GPS_ON 基准Sfreq该功率时间所占比例Pnormal普通传感器的耗电量Twakelockwake
7、lock 时间TGPSapp 使用 GPS 的时间DCPU_AWAKEER_CPU_AWAKE 基准符号说明Ppro s_CPU进程的 CPU 耗电量,即进程占用 CPU 带来的耗电。Pwakelock应用程序的WakeLock 耗电。WakeLock 是Android 的一种锁机制,当应用程序或者内核持有该锁时, 系统就不会进入到休眠状态。PDT应用程序的数据传输( Daransmis)耗电,包括移动数据传输和WIFI 数据传输。Papp_WiFi应用程序使用 WIFI 带来的耗电。Psensor应用程序的传感器耗电。包括 GPS 和普通传感器,如加速度计、温度传感器、陀螺仪、光线传感器、距
8、离传感器、湿度传感器等。变量说明见下表:2.系统耗电系统耗电计算公式如下:Psystem = Pphone + Pradio + Pscreen + PWiFi + Pbluetooth+le变量说明见下表:Pphone = Tphone DRADIO_ACTIVEPradio = ( Tradio_i DRADIO_ON_i ) + Tscanning DRADIO_SCANNINGPscreen = DSCREEN_ON + (DSCREEN_FULL(bi + 0.5f )Tbi )变量说明见下表:符号说明Psystem非应用程序造成的耗电量。(系统耗电)Pphone接打Pradio不同
9、强度基带待机+信号扫描Pscreen开启+不同亮度持续PWiFi开启+无数据传输运行Pbluetooth开启+AT 指令le空闲符号说明符号说明符号说明Bin应 用 接 收的字节数Bmobile移 动 数 据字节数mobips每 秒 移 动数 据 传 输的字节数Bout应 用 发 送的字节数PWiFi_perByteWIFI 数据每 字 节 耗电Tmobilemobile 数据传输时间PperByte传 输 每 字节 的 耗 电量BWiFiWIFI 数据字节数DWIFI_ACTIVEER_W IFI_ACTIVE 基准Pmobile_perByte移 动 数 据每 字 节 耗电量DRADIO_
10、ACTIVEER_R ADIO_ACTIVE 基准PWiFi = TWiFi_on0 DWIFI_ON + ( Tall_WiFi Tapp_WiFi )DWIFI_ONPbluetooth= TBT_onDBLUETOOTH_ON + ( DBLUETOOTH_AT_CMDCAT ) /1000le= DCPU_IDLE( Ttotal Tscreen )变量说明见下表:3.1.2 充电补偿算法Android 自带的耗电统计模型只是对电池驱动的补充,用来找出较为耗电的应用/。但是,对于低功耗的科学研究而言这远远不够,因为科学研究不仅要考虑统计模型的方法,还需考虑其精度。Android 自带的
11、耗电统计模型并没有验证其精度,即将统计模型中计算出来的耗电总量与电池驱动的读数相比较。符号说明符号说明TWiFi_onWiFi 开启时间DBLUETOOTH_ONER_BLUETOOTH_ON 基准DWIFI_ONER_WIFI_ON基准DBLUETOOTH_AT_CMDER_BLUETOOTH_AT_CMD基准Tall_WiFiWiFi 全局运行时间CA指令条数Tapp_WiFiWiFi 应用运行时间DCPU_IDLEER_CPU_IDLE 基准DWIFI_ONER_WIFI_ON基准Ttotal系统运行时间TBT_onBluetooth 开启时间Tscreen屏幕亮起时间符号说明符号说明T
12、phonePhone 功能使用时间screen 开启时间DRADIO_ACTIVEER_RADIO_ACTIVE 基准DSCREEN_ONER_SCREEN_ON基准Tradio_ii 信号强度持续时间DSCREEN_FULLER_SCREEN_FULL基准DRADIO_ON_i该信号强度的ER_RADIO_ON 基准bi亮度级别Tscanning信号扫描时间Tbi该亮度持续时间DRADIO_SCANNINGER_RADIO_SCANNING基准若要验证统计模型的精度,必须使该模型可以任何情况下的系统电量变化,但系统自带的耗电统计模型只耗电行为,因此需要进行充电补偿。充电补偿算法的在于如何充电
13、行为以及如何将充电电量加入到系统电量中。(1)利用 android. android.充电Android 操作系统的消息广播机制。当设备进行开始充电时,系统会发送广播ent.action.ACTION_ent.action.ACTION_ER_CONNECTED;当设备停止充电时,系统会发送广播ER_DISCONNECTED。只要在应用程序中静态一个这两天广播的 Broadcast,即可到充电过程,再由用户首次使用本应用程序时输入充电器输出电流,即可计算出充电电量。充电流程如图 3.1 所示。图 3.1充电流程(2) 充电补偿Android 操作系统的耗电在每次充满电时清空以往的耗电数据,而充
14、电补偿只能在安装此之后才能进行,因此为了电量数据的准确,需要清除安装此之前的耗电进行电量当前的剩余电数据。而系统并未向应用层提供清除耗电数据的接口,于是本决定在的管理,即第一次运行程序时通过电池驱动读数和用户输入的电池容量量,在之后的耗电统计和充电补偿是以剩余电量此为基准加减充放电电量,并在充满电时自动将该剩余电量变更为电池容量大小。充电补偿流程如图 3.2 所示。图 3.2 充电补偿 图表显示技术本程序中使用的图表显示技术来自第开源图表引擎 AChartEngine。AChartEngine 是为 Android 应用而设计的绘图工具库。可用于绘制多种图标,目前该绘AChar
15、tEngine 发布:http/p/achartengine/3.2.2 程序/用户行为分析技术本程序从应用程序的层次获取数据分析程序/用户行为,目前行为数据的主要来源为Android 的日志系统。Android 日志系统提供了和查看系统调试信息的功能。日志都是从各种一些系统的缓冲区中下来的,缓冲区可以通过 logcat 命令来查看和使用。使用 logcat 命令来查看系统日志缓冲区的内容:logcat . .每一个输出的 Android 日志信息都有一个和它的优先级.日志的是系统原始信息的一个简要的标志。(比如:“View”就是查看系统的).优先级有下列集中,是按照从低到高顺利排列的:V V
16、erD Debug I Infoe (lowest priority)W Warning E ErrorF FatalS Silent (highest priority, on which nothing is evred)在运行logcat 的时候两列的信息中你就可以看到 logcat 的列表和优先级别,它是这样标出的:/ .下面是一个 logcat 输出的例子,它的优先级是 I,是 ActivityManage:I/ActivityManager(585): Starting activity:ent action=android.ent.action.为了让日志输出能体现管理的级别,你
17、还可以用过滤器来控制日志输出,过滤器可以帮助你描述 系统的等级.过滤器语句按照下面的格式描述:(1)tag:priority . , tag 表示。的最(2)priority 是表示的级。(3)从上面的 tag 的中可以得到日志的优先级。图工具库的稳定版本是 1.1.0。AChartEngine 支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、气泡式图表、环形图、高低交替图。以上每种图表都可以包含多个序列, 可以将X 轴以水平或垂直的形式显示,也支持很多自定义的特性。另外,图表可以作为 View 构建,也可以作为ent 构建这样可以被用于启动一个活动(Activity)。(4)
18、可以在过滤器中多次写 tag:priority 。.下面有一个例子,该例子表示支持所有的日志信息,除了那些为“ActivityManager”和优先级为“Info”以上的和为“MyApp”和优先级为“ Debug”以上的。logctivityManager:I MyApp:d *:S上面表达式的最后的元素 *:S ,,是设置所有的为“silent”,所有日志只显示有“View”和“MyApp”的,用 *:S 的另一个用处是 能够确保日志输出的时候是按照过滤器的说明限制的,也让过滤器也作为一项输出到日志中.日志信息包括了许多元数据域包括和优先级。可以修改日志的输出格式,所以可以显示出特 定的元数
19、据域。可以通过 -v 选项得到格式化输出日志的相关信息.brief Display priority/tag andof originating pros (the default format).pros Displayonly.tag Display the priority/tag only.thread Display pros:thread and priority/tag only.raw Display the raw log message, with no other metadata fields.time Display the date, invocation time
20、, priority/tag, andof the originating pros.long Display all metadata fields and separate messages wibllines.当启动了 logcat ,可以通过-v 选adb logcat -v 下面是用 thread 来产生的日志格式:adb logcat -v thread指定输出格式,如:需要注意的是你只能-v 选规定输出格式 option。Android 日志系统有循环缓冲区,并不是所有的日志系统都有默认循环缓冲区。为了得到 日志信息,你需要通过-b 选的 循环缓冲期:启动 logcat 。如果要
21、使用循环缓冲区,你需要查看剩余radio 查看缓冲区的相关的信息。events 查看和事件相关的的缓冲区。main 查看主要的日志缓冲区。-b 选项使用方法:adb logcat -b 下面的例子表示怎么查看日志缓冲区包含radio 和adb logcat -b radioephony 信息:Logcat 命令列表:OptionDescription-b加载一个可使用的日志缓冲区供查看,比如 event 和 radio . 默认值是main 。具体查看 Viewing Alternative Log Buffers.-c清楚屏幕上的日志.-d输出日志到屏幕上.4 编程实现4.1 代码结构描述4
22、.1.1 工程结构描述本程序的工程文件结构如图 4.1 所示。图 4.1 工程文件结构图重要的包和文件介绍如下。src 下的包结构:-f指定输出日志信息的 , 默认是 stdout .-g输出指定的日志缓冲区,输出后退出.-n 设置日志的最大数目 ., 默认值是 4,需要和 -r 选 项一起使用。-r 每 时 输出日志,默认值为 16,需要和-f 选 项一起使用.-s设置默认的过滤级别为 silent.-v 设置日志输入格式,默认的是 brief 格 式,要知道的支持的格式,参看 Controlling Log Output Format.res: 放置应用程序用到的资源文件包含(Drawab
23、le, layout, values 等目录),当目录下的文件发生变化时,gen 目录下的 R.java 就会自动发生变化(重新编译)res/drawable: 放置应用用到的资源。res/layout: 放置与 UI 相关的布局文件,都是 xml 文件 res/values: 放置字符串,颜色,数组等常量数据 assets: 主要放置多等数据文件如动画,字体等AndroidMainfest.xml: 相当于应用的配置文件,在此文件里必须到的 Activity, Service, Receiver 等应用的名称,用viewflow: 由于本用到了滑动切换界面的效果,该效果依赖于 viewflo
24、w 这个工程。4.1.2 静态结构描述在本设计中使用了较多的自定义静态结构,如图 4.2 所示。edu.ustc.eryser.chartengine.chart图表展示edu.ustc.eryser.log获取和显示 log 信息edu.ustc.erysowerme耗电统计的 serviceedu.ustc.eryser.tools数据的转换edu.ustc.eryser.ui整体的界面应用分析(ApplicationList)该页面显示每个应用的耗电的情况,布局文件:applist_item.xml模块分布(ComponentsPieChartActivity)该页面用饼状图显示各个模块
25、的耗电状况布局文件:xy_chart.xml模块分布详情(ComponentsLineChartActivity)该页面用线形图显示各个模块的耗电状况布局文件:xy_chart.xml4.3 数据结构描述本主要由前端的图表展示模块和的模块、数据处理模块组成。4.3.1 图表展示模块图表展示模块用到了开源的画图引擎 AChartEngine ,图表展示模块的类图如图 4.4 所示。成员方法:BatterySisticivity 显示电池整体的耗电情况成员变量:AppSisticivity 显示各应用耗电情况成员变量:ComponentsLineChartActivity 各耗电曲线图Compon
26、entsPieChartActivity 各耗电饼状图mChartView : GraphicalView对象由 ChartFactory 生成mRenderer : DefaultRenderer渲染的对象mDataset : CategorySeries数据集对象mSave : ImageBut保存按钮colors :饼状图各部分的颜色mChartView : GraphicalView对象由 ChartFactory 生成mDataset : XYMultipleSeriesDataset数据集包括Date 的 list 和 Value 的 listmRenderer : XYMulti
27、pleSeriesRenderer渲染的对象mSave : ImageBut保存的按钮dates : Listx 轴(时间)的数据集链表values : Listy 轴(耗电量)的数据集链表mChartView : GraphicalView对象由 ChartFactory 生成mDataset : XYMultipleSeriesDataset数据集包括Date 的 list 和 Value 的 listmRenderer : XYMultipleSeriesRenderer渲染的对象mSave : ImageBut保存的按钮dates : Listx 轴(时间)的数据集链表values :
28、 Listy 轴(耗电量)的数据集链表UID :每个应用的UIDmChartView : GraphicalView对象由 ChartFactory 生成mDataset : XYMultipleSeriesDataset数据集包括Date 的 list 和 Value 的 listmRenderer : XYMultipleSeriesRenderer渲染的对象mSave : ImageBut保存的按钮dates : Listx 轴(时间)的数据集链表values : Listy 轴(耗电量)的数据集链表buildRenderer返回一个能绘图的rendersetRenderer设置 ren
29、der 的属性setChartSettings对图形的详细设置buildDateDataset构建用来显示的数据集,横坐标为时间buildCategoryDataset构建用来显示饼状图的数据集buildCategoryRenderer构建绘制饼状图的renderbuildBarDataset构建用来显示柱状图的数据集buildBarRenderer构建用来绘制柱状图的 renderparisonChartActivity 驱动和模型计算对比4.3.2模块模块分为耗电和行为两个子模块。耗电子模块耗电数据模块源于 Android 操作系统源代码中的 Settings.apk:耗电计算模型来源于S
30、ettings.apk 中的erSummaryUsage.java 文件;耗电实际数据来源于 Android 操作系统中的 BatterySsService 服务。耗电计算模型中主要涉及Service 类),其相关说明如下。eryserService 类(继承自成员方法说明成员变量说明mBatteryInfo : IBatterySsbatteryinfo 服务的通口。mSs : BatterySsImpl数据容器,了系统中的耗电数据。mrofile :rofile封装了rofile.xml 文件的方法。mTotaler : double当前计算的系统总耗电量。cpuer : double当前
31、计算的 CPU 总耗电量。phoneer : double当前计算的 Phone 总耗电量。radioer : double当前计算的 Radio 总耗电量。wifier : double当前计算的WIFI 总耗电量。mobileTranser : double当前计算的移动数据传输总耗电量。bluetoother ; double当前计算的蓝牙总耗电量。screener : double当前计算的屏幕总耗电量。sensorer : double当前计算的传感器总耗电量。idleer : double当前计算的 idle 进程总耗电量。applist : List所有应用程序的耗电数据。Com
32、ponent : List所有的耗电数据。Parser : PULLerDataParser自定义的文件的辅助类。mChartView : GraphicalView对象由 ChartFactory 生成mDataset : XYMultipleSeriesDataset数据集包括Date 的 list 和 Value 的 listmRenderer : XYMultipleSeriesRenderer渲染的对象mSave : ImageBut保存的按钮dates : List驱动取得的x 轴(时间)的链表values : List驱动取得的y 轴(耗电量)的链表datesM : List功耗
33、模型的x 轴(时间)的链表valueM : List功耗模型取得的 y 轴(耗电量)的链表values : List饼状图各部分的值 行为子模块行为模块主要负责程序行为数据和用户行为数据,这些数据都存在与Android 操作系统的 log 中,可通过 logcat 程序输出并。该子模块的逻辑较为简单,主要过程即定时将 logcat 的输出重定向到某个文件中,为减小文件查找的时间和空间损耗,这里将每分钟产生的 logcat 分别存入以时间命名的不同文件中。本子模块使用到的数据结构为LogterService 类(继承自Service 类),其相关说明如下。4.3.3 数据处理模块数据处理模块主要
34、功能是文件读写和数据筛选。在本程序中,每次运行耗电统计的结果都进行了,并且在时根据所需数据的不同要求进行了适当的筛选。数据处理模块使用到erData 类、erData 类:erLists 类和 PULLerDataParser 类。成员变量说明Name : String数据名称Mark : String标识(UID 或者名)Type : String类型enumerType成员函数说明startt构造 logcat 命令。ExecProgram执行 logcat 命令。成员变量说明Logrecord : Pros调用 s执行 logcat 命令。refreshSs开始统计。load获取系统服务
35、中的耗电数据。getBatteryPercentage获取 Driver 中读出的当前电池剩余电量百分比。(实际上是从系统广播中获取。)isChargeing判断当前是否处于充电状态。(从系统广播中获取。)prosAppUsage计算应用程序耗电。getAverageDost获取数据传输的平均电量消耗。prosMiscUsage计算硬件耗电。addPhoneUsage计算 Phone 耗电。addScreenUsage计算屏幕耗电。addWiFiUsage计算 WIFI 耗电。addBluetoothUsage计算蓝牙耗电。addIdleUsage计算 idle 进程耗电。addRadioUs
36、age计算 Radio 耗电。erLists 类:PULLerDataParser 类:成员函数说明parseXML 格式serialize序列化成XML 格式ponent的功耗分布readList(type, double TotalBattery)历史(电池剩余电量/总耗电)成员变量说明Mcontext : Context程序上下文Path : String文件路径(暂不使用)Data : List耗电数据成员函数说明geter获取耗电量列表seter设置耗电量列表getTime获取时间列表setTime设置时间列表成员变量说明er : List耗电量Time : List时间成员函数说明
37、get获取变量。(这里的指的是上表中的变量名。)set设置变量。(这里的指的是上表中的变量名。)CPU, GPU,Phone, Screen, WIFI,Bluetooth, Sensor, App;er : String耗电量(百分比或毫安秒)Description : String描述(可选)Time : String时间(Date 类转化)percent : String百分比3.4 程序详细描述4.4.1显示模块buildRenderer( colors, PoStyle styles): XYMultipleSeriesRenderer参数:colors:每个序列的颜色styles:
38、每个序列点的类型(可设置三角,圆点,菱形,方块等多种)返回值:一个 X,Y 坐标的渲染器setRenderer(XYMultipleSeriesRenderer renderer,styles ): void colors, PoStyle参数:renderer:一个渲染器即 buildRenderer 返回的对象colors:每个序列的颜色 styles:每个序列点的类型该方法可以对 renderer 做属性的设置如:设置轴标题文字的大小、轴刻度文字的大小、设置点的大小、图表的外边框间距等setChartSettings(XYMultipleSeriesRenderer renderer,
39、String title, StringxTitle, String yTitle, double xMin, double xMax, double yMin, double yMax,axesColor,labelsColor): void参数:renderer:要设置的 renderer title:图表标题xTitle:X 轴标题 yTitle:Y 轴标题 xMin:X 轴最小值 xMax:X 轴最大值 yMin:Y 轴最小值 yMax:Y 轴最大值 axesColor:X 轴颜色labelsColor:Y 轴颜色buildDateDataset(String titles, List
40、 xValues, ListyValues ): XYMultipleSeriesDatasetponent将耗电分布写入XML 文件中wriists(Stringer, String time,type)将历史(电池剩余电量/总耗电)写入文本文件中writeTxtFile写文本文件的操作函数wriists(Stringer, String time,type,String mark)将历史(应用耗电/耗电)写入文本文件中readList(type, String mark)历史(应用耗电/耗电)参数:titles:图表标题xValues:X 轴值的列表,因为构建的是与时间相关的数据集,所以 X 轴为 Date yValuess:Y 轴值,为 double返回值:XYMultipleSeriesDataset该方法返回与时间有关的数据集buildCategoryDataset(String title, double values): CategorySeries参数:titles: 图表标题values: 饼状图各个部分的值返回值:CategorySeries:该序列用于生成饼状图buildCategoryRenderer( colors): DefaultRenderer参数:colors:每个序列的颜色返回值:DefaultRend
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂房施工维修合同范本
- 安徽邮电职业技术学院《职业规划与作品设计》2023-2024学年第二学期期末试卷
- 山东文化产业职业学院《笔译理论和实践》2023-2024学年第二学期期末试卷
- 曲阜师范大学《外国文学二》2023-2024学年第一学期期末试卷
- 吕梁学院《免疫生物治疗学》2023-2024学年第二学期期末试卷
- 云南水利水电职业学院《日语口语》2023-2024学年第一学期期末试卷
- 济南大学《药物毒理学》2023-2024学年第二学期期末试卷
- 2025年四川省遂宁市蓬溪县初三4月19日第12周英语试题考试试题含答案
- 重庆合川区凉亭中学2025年初三4月模拟考试英语试题文试题含答案
- 江西省七校2025年高三冲刺模拟考试英语试题含解析
- 《道德与法治》六年级下《我们爱和平》课件
- 卫生法(教学讲解课件)
- 高三冲刺100天励志主题班会课件
- 全国工业产品生产许可证申请书
- 德能勤绩廉个人总结的
- 中层干部岗位竞聘报名表格评分表格评分标准
- 思想道德与法治课件:第六章 第一节 社会主义法律的特征和运行
- 有限空间作业及应急物资清单
- 《个人信息保护法》解读
- 新疆高速公路建设工程季节性施工方案
- 新版(七步法案例)PFMEA
评论
0/150
提交评论