包含标签 Android 的文章

CyanogenMod Code Search in Github

有些时候希望在Github上搜索源代码,包含字符串什么的 Github的响应速度比AndroidXref等等快得多了,值得推荐 https://github.com/search?q=user%3ACyanogenMod+%s&type=Code&ref=searchresults 或者,如果想包含android的源代码: https://github.com/search?q=user%3ACyanogenMod+user%3Aandroid+%s&ref=searchresults&type=Code 效果如下: {:target=“brank”}……

阅读全文

课程3: Android启动过程分析

相关技术文章 首先参阅一下别人写得很不错的文章,个人感觉还是有很多可以借鉴的内容 1. Android启动过程深入解析 原文链接 当然,小伙伴们若是英文足够好,可以直接查看:英文原文 我们先来粗略查看一下文章要点 ####第一步:启动电源以及系统启动 当电源按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行。 ####第二步:引导程序 引导程序是运行的第一个程序,因此它是针对特定的主板与芯片的; 引导程序是OEM厂商或者运营商加锁和限制的地方; ####第三步:内核 Android内核与桌面linux内核启动的方式差不多。 ####第四步:init进程 init进程有两个责任,一是挂载目录,比如/sys、/dev、/proc,二是运行init.rc脚本 ####第五步:Zygote Zygote让Dalvik虚拟机共享代码、低内存占用以及最小的启动时间成为可能。 Zygote是一个虚拟器进程,正如我们在前一个步骤所说的在系统引导的时候启动。Zygote预加载以及初始化核心库类。 ####第六步:系统服务或服务 系统服务同时使用native以及java编写,系统服务可以认为是一个进程。 系统服务包含了所有的System Services。 Zygote创建新的进程去启动系统服务。你可以在ZygoteInit类的”startSystemServer”方法中找到源代码。 ####第七步:引导完成 ACTION_BOOT_COMPLETED 启动已完成的广播 备注:在init.rc上还可以使用on property:dev.bootcomplete=1来处理你期望开机完成后做爱做的事情 2. Android启动分析 原文链接 由于前一篇文章,在system_server或services上讲解不够深入,现在利用这一篇文章来粗略讲解一下 关于这个文章的英文原文: 链接: Android Start Up 接下来这一段,我是依据 链接: 2.3服务启动过程 来讲解有关 system_server和Services的内容 ####1. daemons和Zygote init.rc启动类似adbd, debuggerd, rild等核心后台进程,用于监听指定信息 Zygote是用于初始化虚拟机的进程,监听请求创建虚拟机实例的socket,算是App的“鼻祖” Android 启动分析:Daemons和Zygote ####2. Services Manager 在 init.rc 有这么一段内容 service servicemanager /system/bin/servicemanager class core user system group system critical onrestart restart healthd onrestart restart zygote onrestart restart media onrestart restart surfaceflinger onrestart restart drm init.……

阅读全文

Android抓取所有日志

总有些时候我们会遇到非必现场景,若未及时抓取日志,可能为时已晚 抓取日志 抓取Logcat日志 这个是最简单的,使用-f重定向到一个文本文件即可,-v threadtime则显示详细时间和进程 # for logcat { log -t logcat_all "start logcat to file: $logcat_file" /system/bin/logcat -v threadtime -f $logcat_file } & 抓取Kmsg日志 通过抓取/proc/kmsg来完成 # for kmsg { log -t logcat_all "start kmsg to file: $kmsg_logfile" cat /proc/kmsg >$kmsg_logfile } & 抓取Top日志 通过抓取Top可以看到系统运行时,占用CPU的情况等等 # for top { while busybox true; do top_newtime=$(/system/bin/date +%F_%H-%M-%S) top_logfile=$logcat_dir/top_${top_newtime}.log && > $top_logfile log -t logcat_all "start top to file: $top_logfile" # 仅保留5个top日志文件 # 5*100*3=25分钟内的Top信息,避免Top日志文件过大 busybox rm -f $(busybox ls -1t ${logcat_dir}/top_* | busybox tail -n +6) for n in $(busybox seq 1 100) ; do # 每3秒打印一次top信息,并加入时间显示 top -m 5 -d 3 -t -n 1 | busybox awk '{now=strftime("%Y-%M-%d %T "); print now $0}' >>$top_logfile echo >>$top_logfile done done } & 为了方便分析结果,这里添加了详细时间,同时限定了Top输出大小(避免SD卡占用过快)……

阅读全文

Android Studio迁移闪退

很久没有撸Android App开发了~ 最近把一个月前通过反编译、二次修改的 Android SSHD 项目进行简单修改一下; 突然发现迁移项目时,报了一个错误,同时还出现了闪退情况: 04-29 20:20:11.493: W/dalvikvm(23964): threadid=1: thread exiting with uncaught exception (group=0x41b2cc50) 04-29 20:20:11.543: E/StubController(23964): service = null 感觉像是迁移过程中没完整导致的,解决方法很简单,就是把java目录重命名为src即可; 历史提交记录……

阅读全文

Eclipse ADT定制

配置自动补全: Windows -> preferences -> 搜索assist,修改 java xml自动触发补全: .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ 自动补全插件: Eclipse Tab自动补全 Windows -> Preference -> 搜索 Assist,C/C++、Java、XML都输入(或追加): .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ 直接替换文件方法: # 备份文件 find eclipse/plugins -name \*jface.text\* -exec mv -v {} {}.bak \; # 复制文件到 eclipse/plugins/org.eclipse.jface.text_3.8.2.v20121126-164145.jar #(要相同版本才可以) 修改边框过大以及颜色配置: 3.1. 修改提示框背景颜色: 路径:/usr/share/themes/Greybird/gtk-2.0/gtkrc 修改: gtk-color-scheme = "tooltip_bg_color:#f2edbc\ntooltip_fg_color:#000000" # Tooltips. 3.2. 修改全局背景颜色: gtk-color-scheme = "bg_color:#cce8cf\nselected_bg_color:#398ee7\nbase_color:#fcfcfc" # Background, base. 3.3. 修改eclispe背景颜色: windows->Preferences->General->Editor->Text Editors->Backgroud color修改成#fcfcfc 3.4. 边框过大的调整方法 cd /path/to/adt vi "$(find eclipse -name e4_default_gtk.css)" # 打开: plugins/org.……

阅读全文

Android字符串资源检查

Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译 脚本链接: Android字符串资源检查 使用方法: ./check_string_res.py packages/apps/Settings/ ./check_string_res.py packages/apps/Settings/ packages/apps/QuickSearchBox/ .. 效果如下: $ ./check_string_res.py packages/apps/Bluetooth/ ###正在检查项目packages/apps/Bluetooth/ >>> Checking res/values/strings.xml file .. - Warning: string name 'auth_notif_message' not found!!! - Warning: string name 'auth_notif_ticker' not found!!! - Warning: string name 'auth_notif_title' not found!!! - Warning: string name 'cancel' not found!!! - Warning: string name 'defaultname' not found!!! - Warning: string name 'localPhoneName' not found!!! - Warning: string name 'ok' not found!!! - Warning: string name 'pbap_authentication_timeout_message' not found!……

阅读全文

Android Keystore 那些事儿

生成Keystore 一键生成 Keystore keytool -genkey -v -keystore scue15K.keystore -alias scue15K \ -keyalg RSA -keysize 2048 -validity 15000 \ -keypass scue15 -storepass scue15 \ -dname 'CN=scue.github.io, OU=SDET, O=Android, L=ShenZhen, S=GuangDong, C=CN' 得到scue15K.keystore这个文件,keypass和storepass密码都是scue15 检验Keystore 使用一行命令检查Keystore信息 keytool -list -v -keystore scue15K.keystore # 需键入 storepass 使用Keystore签名 重新签名的步骤,同样适用于正常签名 zip -d in.apk 'META-INF/*' # 先清理旧的签名,假如你是重新签名的话 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /tmp/scue15K.keystore \ -keypass scue15 -storepass scue15 -signedjar out.apk in.apk scue15K zipalign -v 4 out.apk release.……

阅读全文