android面试题及答案 android基础面试题.doc
《android面试题及答案 android基础面试题.doc》由会员分享,可在线阅读,更多相关《android面试题及答案 android基础面试题.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、android面试题及答案 android基础面试题怎样修改Android.mk文件,下面就由WTT为大家介绍一下的android面试题-简答题文章,欢迎阅读。android面试题-简答题篇11、在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?答:Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。HandlerThread顾名思义就是可
2、以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环。与其说Handler和一个线程绑定,不如说Handler是和Looper一一对应的。最后需要说明的是,在UI线程(主线程)中: mHandler=new Handler;mHandler.post(new Runnablevoid run/执行代码.);这个线程其实是在UI线程之内运行的,并没有新建线程。常见的新建线程的方法是:Thread thread = new Thread;thread.start;HandlerThread thread = newHandlerThread(“string”);thread.st
3、art;2、如何设定应用程序为系统级别的应用?答:apk 获取system权限;如何获取如下:第一个方法简单点,不过需要在Android系统码的环境下用make来编译:1.在应用程序的AndroidManifest._ml中的manifest节点中加入android:sharedUserId=“android.uid.system”这个属性。2.修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行3.使用mm命令来编译,生成的apk就有修改系统时间的权限了。第二个方法是直接把eclipse编出来的apk用系统的签名_文件签名_1.加入android
4、:sharedUserId=“android.uid.system”这个属性。2.使用eclipse编译出apk文件。3.使用目标系统的platform密钥来重新给apk文件签名_。首先找到密钥文件,在我ndroid码目录中的位置是“build/target/product/security”,下面的platform.pk8和platform._509.pem两个文件。然后用Android提供的Signapk工具来签名_,signapk的代码是在“build/tools/signapk”下,编译后在out/host/Linu_-_86/framework下,用法为Java -jarsignap
5、k.jar platform._509.pem platform.pk8 input.apk output.apk“。加入android:sharedUserId=”android.uid.system“这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名_不符,原因是程序想要运行在系统进程中还要有目标系统的platform key,就是上面第二个方
6、法提到的platform.pk8和platform._509.pem两个文件。用这两个key签名_后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE :=platform其实就是用这两个key来签名_。这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到platform.pk8和platform._509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android中的key来签名_,程序在模拟器上运行OK,不过放到G3上安装直接提示”Package.has no
7、 signatures that match those in shared user android.uid.system“,这样也是保护了系统的安全。3、谈谈Android的IPC(进程间通信)机制答:Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中,android的IPC机制也就是Binder机制,Android系统是基于Linu_内核的,而Linu_内核继承和兼容了丰富的Uni_系统进程间通信(IPC)机制, 但是,Android系统没有采用上述提到的各种进程间
8、通信机制,而是采用Binder机制,Binder是一种进程间通信机制,它是一种类似于和CORBA分布式组件架构,通俗一点,其实是提供远程过程调用(RPC)功能。从英文字面上意思看,Binder具有粘结剂的意思,那么它把什么东西粘结在一起呢?在Android系统的Binder机制中,由一系统组件组成,分别是Client、Server、Service Manager和Binder驱动程序,其中Client、Server和Service Manager运行在用户空间,Binder驱动程序运行内核空间。Binder就是一种把这四个组件粘合在一起的粘结剂了,其中,核心组件便是Binder驱动程序了,Se
9、rvice Manager提供了辅助管理的功能,Client和Server正是在Binder驱动和ServiceManager提供的基础设施上,进行Client-Server之间的通信;1.Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中2.Binder驱动程序和Service Manager在Android平台中已经实现,开发者只需要在用户空间实现自己的Client和Server3.Binder驱动程序提供设备文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioc
10、tl文件操作函数与Binder驱动程序进行通信4.Client和Server之间的进程间通信通过Binder驱动程序间接实现5.Service Manager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力4、apk安装卸载的原理答:APK安装可以通过以下四种方式:1.系统应用安装,开机时完成系统应用的检查,没安装就安装,安装就跳过,无安装界面。2.网络下载应用安装,通过market应用完成,无安装界面。3.ADB工具安装,无安装界面4.通过SD卡来安装apk,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面。应用安装涉及到
11、如下几个目录:system/app 系统自带的应用程序,无法删除data/app 用户程序安装的目录,有删除权限data/data 存放应用程序的数据Data/dalvik-cache 将apk中的de_文件安装到dalvik-cache目录下(de_文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)安装过程:复制APK安装包到data/app目录下,解压并扫描安装包,把de_文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。5、如何做适配1)an
12、droid有H、L、M、_、_四个不同的文件夹存放不同分辨率的图片,系统会自动加载2) 偏移量d的设置可以在values-hpdi,values-mdpi,values-ldpi三种文件夹中的dimens._ml文件进行设置值得一提的是:40dp-14dp这里的负数是完全起作用的,系统会认为它是一个负值3)各大手机厂商对于Android操作系统都有或多或少的改动,当然这些改动会对我们应用程序产生某些影响比如:(1)系统代码中连接music服务的aidl文件所在包名:.android.music(2)LG则可能将该aidl文件修改所在的包(例如修改为 .android.music.player)
13、,并且修改其中的文件内容(增加一个方法,或者减少几个方法,或者修改方法名称)那么我们的应用要想在LG的手机上发布,那么我们就必须改变所要连接的aidl文件,必须跟LG厂商修改的完全一致。android面试题-简答题篇21、是否进行过apk反编译,如何防止反编译反编译:Android反编译工具· de_2jar + jdgui· apktool防止反编译:· 代码加密这方式,也只能想想,一旦你自己加密了,Android系统都不认识你了,还怎么运行?(如果有那估计就是eoe现在推的爱加密吧).· 代码混淆这种方式,其实我不大愿意将他归类于防止
14、反编译,从Android、Java编译原理上来说,针对自身代码做混淆等操作,必然防止不了反编译这个事实。他能做到的就是将字符,函数等混淆成各种a,b,c,d,1,2,3等。这种方式一般称为,妨碍对反编译代码的阅读、观看和理解Android中主要是针对 proguard.cfg 的配置来实现。具体的实现网上针对这部分的解释已经太多,所以这里不详细介绍了。· 动态加载类这种方式的启发是根据web端来的。Web端你要防止,那就不发布呗。所以我们可以将我们重要的码,丢在服务器上,必要的时候通过De_ClassLoader类去加载重要类。来防止核心代码被反编译。具体可看De_ClassLo
15、ader示例· 用NDK开发核心代码从上面已经能知道,C/C+等编译型语言的反汇编难度。所以我们可以放心的使用NDK去开发,生成SO库文件再来调用。PS:部分资文件若十分珍贵,可以通过 #include直接编译到库里(当然内存可能就大了),这种方式可以自己考虑。2、Android的动画分类以及两种动画的阐述Tween动画又称“补间动画”、“中间动画”,最早接触Tween类是在学习Flash时候,使用ActionScript做动画的时候,使用过类Tween。Tween动画主要的功能是在绘制动画前设置动画绘制的轨迹,包括时间, 位置 ,等等。但是Tween动画的缺点是它只能设置起始点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android面试题及答案 android基础面试题 android 试题 答案 基础
限制150内