【移动应用开发技术】Android开发必备知识点有哪些_第1页
【移动应用开发技术】Android开发必备知识点有哪些_第2页
【移动应用开发技术】Android开发必备知识点有哪些_第3页
【移动应用开发技术】Android开发必备知识点有哪些_第4页
【移动应用开发技术】Android开发必备知识点有哪些_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android开发必备知识点有哪些

这篇文章主要介绍“Android开发必备知识点有哪些”,在日常操作中,相信很多人在Android开发必备知识点有哪些问题上存在疑惑,在下查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android开发必备知识点有哪些”的疑惑有所帮助!接下来,请跟着在下一起来学习吧!1.使用ADB查看CPU温度(debug版本)查看CPU命令如下:adb

shell

cat

/sys/class/thermal/thermal_zone*/temp2.查看CPU返回内容对应分类信息adb

shell

cat

/sys/class/thermal/thermal_zone*/typehttps://upload-images.jianshu.io/upload_images/3117364-912a19dd5cc4fe22?imageMogr2/auto-orient/stripCPU温度查看命令方法由此查看的CPU温度包含小数点后三位,小数点省去,此方法适用于MTK平台。3.MTKlog中查看CPU温度kernellog中搜索关键字T_AP查看CPU温度。https://upload-images.jianshu.io/upload_images/3117364-f82df4a1578b9767?imageMogr2/auto-orient/strip1.debug版本跳过开机向导方案1.点击四次快捷操作连续点击屏幕四角(左上-->右上-->右下-->左下),既可跳过开机向导。2.adb命令disable开机向导adb

shell

settings

put

secure

user_setup_complete

1adb

shell

settings

put

global

device_provisioned

1adb

shell

pm

disable

com.google.android.setupwizard/.SetupWizardActivity2.debug重启开机向导方案跳过开机向导后又想重新走开机向导,可以尝试以下命令。1.将开机向导完成后设置的值复位命令如下:adb

shell

settings

put

secure

user_setup_complete

0adb

shell

settings

put

global

device_provisioned

02.设置开机向导可用,并启动过完开机向导后,会设置开机向导apk不可用。此时我们应该设置开机向导为enble状态。adb

shell

pm

enable

com.google.android.setupwizard/.SetupWizardActivityadb

shell

am

start

-n

com.google.android.setupwizard/.SetupWizardActivity3.开机向导log调试打开开机向导调试Log方式如下:adb

shell

setprop

log.tag.SetupWizard

VERBOSE4.代码中跳过开机向导的方法在代码中跳过开机向导的方法如下:

private

void

SkipSetupwizard(){

ActivityManager

activityAanager

=

(ActivityManager)

mContext

.getSystemService(Context.ACTIVITY_SERVICE);

ComponentName

cn

=

activityAanager.getRunningTasks(1).get(0).topActivity;

String

pName

=

cn.getPackageName();

if("com.google.android.setupwizard".equals(pName))

{

Settings.Global.putInt(mContext.getContentResolver(),

Settings.Global.DEVICE_PROVISIONED,

1);

Settings.Secure.putInt(mContext.getContentResolver(),

Settings.Secure.USER_SETUP_COMPLETE,

1);

activityAanager.forceStopPackage("com.google.android.setupwizard");

Log.i("wjwj","skip

com.google.android.setupwizard");

}

}1.使用adb命令抓log查看adblogcat|findstrDisplayed或者直接抓取adbLog,然后搜索关键字Displayedhttps://upload-images.jianshu.io/upload_images/3117364-220378b7ed8c2635?imageMogr2/auto-orient/stripAPP冷启动时间统计https://upload-images.jianshu.io/upload_images/3117364-eaf5c35a57a870c3?imageMogr2/auto-orient/stripadbLog中搜索关键字Display2.查看多次app冷启动的方法测试10次Chrome冷启动的方法如下:adbshellamstart-S-R10-Wcom.android.chrome/com.google.android.apps.chrome.Main测试结果如下:C:\Users\Administrator>adb

shell

am

start

-S

-R10

-W

com.android.chrome/com.google.android.apps.chrome.MainStopping:

com.android.chromeStarting:

Intent

{

act=ent.action.MAIN

cat=[ent.category.LAUNCHER]

cmp=com.android.chrome/com.google.android.apps.chrome.Main

}Status:

okActivity:

com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivityTotalTime:

1514WaitTime:

1525CompleteStopping:

com.android.chromeStarting:

Intent

{

act=ent.action.MAIN

cat=[ent.category.LAUNCHER]

flg=0x10000000

cmp=com.android.chrome/com.google.android.apps.chrome.Main

}Status:

okActivity:

com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivityTotalTime:

534WaitTime:

549Completeprivate

static

final

boolean

USER_BUILD

=

android.os.Build.IS_USER;查看Build.java发现,这些是对外部apk隐藏的方法,只有系统平台签名的应用才可以使用。

/**

{@hide}

*/

public

static

final

boolean

IS_ENG

=

"eng".equals(TYPE);

/**

{@hide}

*/

public

static

final

boolean

IS_USERDEBUG

=

"userdebug".equals(TYPE);

/**

{@hide}

*/

public

static

final

boolean

IS_USER

=

"user".equals(TYPE);/frameworks/base/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java

//

import

com.mediatek.storage.StorageManagerEx;

String

defaultWritePath

=

StorageManagerEx.getDefaultPath()+File.separator+"Pictures";

mScreenshotDir

=

new

File(defaultWritePath,

SCREENSHOTS_DIR_NAME);1.将所有的systemdump文件追加到一个文件中首先我们需要抓到dumpsyslog,然后将所有的systemcore*文件追加到一个文件中。cat

systemcore*

>

allhttps://upload-images.jianshu.io/upload_images/3117364-e621d2e877e128bb?imageMogr2/auto-orient/strip将sysdump所有文件追加到一个文件中2.使用对应版本的vmlinux解析dump文件使用crash_arm命令对dump文件进行解析32位系统使用如下:./crash_armvmlinuxall-mphys_base=0x8000000064位系统使用如下命令:./crash_arm64vmlinuxall-mphys_offset=0x800000003.解析成功后进行调试成功解析dump后解析log方法log>log.txthttps://upload-images.jianshu.io/upload_images/3117364-af209775c7779c07?imageMogr2/auto-orient/strip使用log命令读取log到指定文件修改

device\sprd\xxxx\common\rootdir\root\mon.rc在onpost-fs-data

中添加如下内容:on

post-fs-data

setprop

persist.ylog.enabled

1//增加这一句用于打开ylog

setprop

debug.sysdump.enabled

true

//增加这一句用于打开sysdump

setprop

persist.sys.eng.reset

1

//再增加这一句

start

ylog

public

boolean

isMonkeyRunning()

{

return

ActivityManager.isUserAMonkey();

}修改以下路径下配置的属性值既可alps\device\mediatek\common\mtklog将false

改为true就可以打开对应的logmtklog_path

=

internal_sdcom.mediatek.log.mobile.enabled

=

falsecom.mediatek.log.mobile.maxsize

=

500com.mediatek.log.mobile.totalmaxsize

=

1000com.mediatek.log.modem.enabled

=

falsecom.mediatek.log.modem.maxsize

=

2000.enabled

=

.maxsize

=

600com.mediatek.log.gps.enabled

=

false输入暗码

*#*#3646633#*#*,进入MTKLogger

界面,右上角打开LoggerSetting,手动关闭除MoblieLog之外的开关。关闭方法请看下图:https://upload-images.jianshu.io/upload_images/3117364-5fe27fda34c7b622?imageMogr2/auto-orient/stripmtk平台开启Mobilelog参考图输入暗码

*#*#83781#*#*,进入SPRDLogger

界面,右上角打开Settings,点击Customscene,关闭除Androidlog之外的开关,关闭方法请看下图。https://upload-images.jianshu.io/upload_images/3117364-4c4cc374d73c1516?imageMogr2/auto-orient/stripSPRD平台开启Androidlog参考图只开AndroidLog(参考十一、SPRD平台只开Androidlog方法)进入DEBUG&Log界面,systeminfo->

PowerLog;打开PowerGurulog和wakelocklog;重启设备。使用下面命令,复位一下batteryhistoryadb

shell

dumpsys

batterystats

--enable

full-wake-historyadb

shell

dumpsys

batterystats

--reset测试完成后,使用下面命令,抓取bugreportadb

rootadb

bugreport

>

bugreport.zip最后将andoridlog和bugreport.zip

都提供出来。获取ActivityTop的方法如下://import

android.app.ActivityManager;//import

android.app.ActivityManager.RunningTaskInfo;//import

android.content.ComponentName;//import

java.util.List;//

获取top

Activity

apk

public

String

getTopActivityPackageName(Context

context)

{

String

topActivityPackage

=

null;

ActivityManager

activityManager

=

(ActivityManager)

(context

.getSystemService(android.content.Context.ACTIVITY_SERVICE));

List<RunningTaskInfo>

runningTaskInfos

=

activityManager

.getRunningTasks(1);

if

(runningTaskInfos

!=

null)

{

ComponentName

f

=

runningTaskInfos.get(0).topActivity;

topActivityPackage

=

f.getPackageName();

//Slog.e("wangjie",

"topActivityPackage"+topActivityPackage);

}

return

topActivityPackage;

}孟加拉语开机向导欢迎语不对,客户要求去掉开机向导界面欢迎语方法。idh.code/frameworks/base/core/java/android/widget/TextView.javapublic

class

TextView

extends

View

implements

ViewTreeObserver.OnPreDrawListener

{...

...

public

void

setTextLocale(@NonNull

Locale

locale)

{+

//

add

for

Bangla

language+

if

(getContext().getClass().getName().equals("com.google.android.setupwizard.user.WelcomeActivity")

&&+

locale.getLanguage().equals("bn")

&&

locale.getCountry().equals("BD"))+

{+

Log.i(LOG_TAG,

"find

text:"

+

getText());+

if

(!getText().equals("")

&&

!getText().toString().contains("("))+

Log.i(LOG_TAG,

"set

text:"

+

getText());+

setText("");+

}+

//

add

for

Bangla

language

mLocalesChanged

=

true;

mTextPaint.setTextLocale(locale);

...

...

}...

...}展讯平台修改状态栏时间显示秒方法如下adb

shell

pm

enable

com.android.systemui/com.android.systemui.tuner.TunerActivityadb

shell

am

start

-n

com.android.systemui/com.android.systemui.tuner.TunerActivity进入设置--系统--界面界面调谐器--状态栏--时间--显示时分秒。判断多用户方法如下://

import

android.os.UserHandle;if(UserHandle.myUserId()

!=

UserHandle.USER_OWNER){

//

给管理员用户

进行操作}AndroidGO版本下,为了兼容系统性能,牺牲部分UI体验,比如最近任务列表模糊,Settings界面加载由模糊到清晰,Launcher图标加载由模糊到清晰,但是这个很影响用户体验,个人认为不太好,去掉模糊效果的方案如下:1.需要修改的文件如下:

frameworks/base/services/core/java/com/android/server/wm/AppWindowContainerController.java

frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotController.java

frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotPersister.java1.AppWindowContainerController修改方法在AppWindowContainerController.java类中,请注释掉scheduleAddStartingWindow方法实现。public

class

AppWindowContainerController

extends

WindowContainerController<AppWindowToken,

AppWindowContainerListener>

{...

...//

注释掉该方法

void

scheduleAddStartingWindow()

{

//

Note:

we

really

want

to

do

sendMessageAtFrontOfQueue()

because

we

//

want

to

process

the

message

ASAP,

before

any

other

queued

//

messages.

/***

if

(!mService.mAnimationHandler.hasCallbacks(mAddStartingWindow))

{

mContainer.startingAdding

=

true;

if

(DEBUG_STARTING_WINDOW)

Slog.v(TAG_WM,

"Enqueueing

ADD_STARTING");

mService.mAnimationHandler.postAtFrontOfQueue(mAddStartingWindow);

}

***/

}...

...}2.TaskSnapshotController修改方法将系统手动设置为非低内存设备,比如将isLowRamDevice=false状态。class

TaskSnapshotController

{...

...//

将系统手动设置为非低

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论