此刻,本人还是一个android菜鸟,刚刚开始起步学习android相关知识,想用blog记录自己学习的过程,一方面给他人提供帮助,另一方面给自己个复习的地方。
在一起学习Android之前,先跟大家分享几个非常有用的网站:
4)Android developers need to know
网上学习的资源到处是,我们主要是要学会择优使用,充分使用,而且较好的资源都是英文的,所以也可以一起提高英文水平,让我们一起加油吧!!
学习Android之前可以先了解一下Android的历史,接下来让我们一起好好了解下android的系统架构:(开发环境配置可自行了解)
Q:Android中没有main函数,那它的程序入口在哪里?
A:在xml配置文件,<intent-filter><action android:name="android.intent.action.MAIN" /></intent-filter>
下面先介绍几个Android常识(含常用工具):
1、安装软件格式为.apk,系统级软件在/system/app下,第三方软件在/data/app下,相应数据放在/data/data;
2、ddms:dalvik debug manage system. dalvik虚拟机调试系统
3、aapt : android application package tools android应用程序打包工具
4、adb.exe : android debug bridge . android调试桥 (推荐大家添加到环境变量)
adb devices : 列出电脑上连接的设备
adb shell : 来到模拟器或者真实手机的终端. 执行linux 命令.
adb push: 把电脑上的一个文件 放在模拟器里面.
adb pull: 把手机里面的文件 导出到电脑.
5、dx.bat:把.class文件变成.dex,一般在真实手机上看到的.odex文件是.dex经过压缩、加密、签名等生成的
6、dexdump:反编译.dex文件,但得到的是另一种叫smali语言的文件?!
7、直接解压apk,由于文件经过加密,所以大部分内容是不可见的,只有raw文件和其他图形文件可见
8、关于资源文件的访问:
1)res中的raw资源是通过R文件访问的:getResources().openRawResource(R.raw....);
2)asset中的资源是直接通过路径访问的,其资源不会配置到R文件中,所以访问也较快;
9、通过apktool对apk文件进行反编译的效果:.dex变成smali,但是xml布局文件可见了
10、另外一种成功的反编译方法:
使用dex2jar把.dex变成.jar,.jar通过XJad工具变成(.class) .java
11、关于logcat中的信息:
pid:进程id,log的类别(按严重级别排列):Error,warn,infor,debug,verbose,调试程序或程序出错都得查看log,log信息放在/data/log
12、产生log文件的情况:
1)程序异常退出:uncased exception
2)强制关闭:force closed(FC),“Fatal Exception:Nullpoint,classnotfound等”
3)无响应:App No Response (ANR),出现这种情况的原因通常有:
a.界面操作等待响应时间超过5s
b.HandleMessage回调函数中执行超过10s,例如,BroadcastReceiver的生命周期只有10秒左右,若重写onReceive()内做超过10秒的业务,则会出现ANR错误,
通常较耗时间的task应通过Intent发给service完成,不能用子线程解决,'causeBroadcastReceiver的生命周期太短,线程没终结,它就挂了,成了空进程,很有可能被系统直接干掉
13、手机一般有2种出厂模式:
1)development:有root权限,支持打大量的,,log文件;
2)user:一般不打log
14、log文件的信息:系统的基本信息,内存,CPU,垃圾回收;事件信息(DDMS中的格式);虚拟机信息,进程,线程跟踪等
15、给想做软件开发的同学的一些tips:软件行业有潜力,应当学会规避行业压力,尽量做到同类创新,满足用户需求