搜档网
当前位置:搜档网 › Android下引用系统库(.so文件)的方法及问题

Android下引用系统库(.so文件)的方法及问题

Android下引用系统库(.so文件)的方法及问题
Android下引用系统库(.so文件)的方法及问题

我们看一下如何在Android环境下引用/system/lib下的.so文件(若您也对此有所了解,还望不吝赐教后面的问题,先谢!)。为避免讲得混淆,先将我的代码的结构贴出来。

首先,新建Android工程:AndroidJniTest,在AndroidJniTestActivity.java中的代码如下:

[j ava]view plaincopypr int?

1. package https://www.sodocs.net/doc/d61556346.html,;

2. import android.app.Activity;

3. import android.os.Bundle;

4. publicclass AndroidJniTestActivity extends Activity {

5. /** Called when the activity is first created. */

6. @Override

7. publicvoid onCreate(Bundle savedInstanceState) {

8. super.onCreate(savedInstanceState);

9. setContentView(https://www.sodocs.net/doc/d61556346.html,yout.main);

10. System.loadLibrary("test");

11. CallNative callnative = new C allNative();

12. byte[] cmd = {(byte)'\u004c'};

13. int a = callnative.writeC md(cmd, "/system/lib");

14.

15. }

16. }

package https://www.sodocs.net/doc/d61556346.html,;import andr oid.app.Activity; import android.os.Bundle;public class AndroidJniTestActivity extends Activity { /** Called w hen the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState)

{ super.onCreate(savedInstanceState); setContentView(https://www.sodocs.net/doc/d61556346.html,yout.main); System.l oadLibrary("test"); CallNative callnative = new CallNative(); byte[] cmd = {(byte)'\u004c'}; int a = callnative.writeCmd(cmd, "/system/lib"); }}

再在包https://www.sodocs.net/doc/d61556346.html,下建立文件:CallNative.java 代码:

[j ava]view plaincopypr int?

1. package https://www.sodocs.net/doc/d61556346.html,;

2. publicclass CallNative {

3. publicnativebyte[] readCmd(String path);

4. publicnativeint writeCmd(byte[] cmd, Str ing path);

5. }

package https://www.sodocs.net/doc/d61556346.html,;public class CallNative { public native byte[] readCmd(Str ing path); public native int writeC md(byte[] cmd, String path);}

利用javah工具创建本地库文件的头文件mars_com_CallNative.h 代码:

[cpp]view plaincopyprint?

1. /* DO NOT EDIT THIS FILE - it is machine generated */

2. #include

3. /* Header for class mars_com_CallN ative */

4. #ifndef _Included_mars_com_CallNative

5. #define _Included_mars_com_CallNative

6. #ifdef __cplusplus

7. extern"C" {

8. #endif

9. /*

10. * Class: mars_com_C allNative

11. * Method: r eadC md

12. * Signature: (Ljava/lang/String;)[B

13. */

14. JNIEXPOR T jbyteArray JNICALL Java_mars_com_C allNative_readC md

15. (JNIEnv *, jobject, jstring);

16. /*

17. * Class: mars_com_C allNative

18. * Method: wr iteC md

19. * Signature: ([BLjava/lang/Str ing;)I

20. */

21. JNIEXPOR T jint JNICALL Java_mars_com_CallN ative_writeC md

22. (JNIEnv *, jobject, jbyteArray, jstring);

23. #ifdef __cplusplus

24. }

25. #endif

26. #endif

/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* H eader for class mars_com_CallN ative */ #ifndef _Included_mars_com_CallNative#define _Included_mars_com_C allNative #ifdef __cplusplusextern "C" {#endif/* * C lass: mars_com_CallNative * Method: readCmd * Signature: (Ljava/lang/String;)[B */ JNIEXPOR T jbyteArray JNICALL

Java_mars_com_CallNative_readCmd (JNIEnv *, jobject, jstring);/* * Class: mars_com_CallNative * Method: writeCmd * Signature: ([BLjava/lang/String;)I */ JNIEXPOR T jint JNICALL Java_mars_com_CallNative_writeCmd (JNIEnv *, jobject, jbyteArray, jstring);#ifdef __cplusplus}#endif#endif

[cpp]view plaincopyprint?

1.

[j ava]view plaincopypr int?

1.

至于如何生成此头文件,可自行学习,这里不多讲了

第二,在工程目录下建立文件夹:jni,将文件mars_com_CallNative.h 拷贝到此目录下,再在此目录下建立文件test.c,代码:

#include"mars_com_CallNative.h"

#include

#include

#include

#include

#include

#include

#include

#include

#include"include/telephony/ril.h"

#define LOGD(...) __andr oid_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__)

JNIEXPOR T jbyteArray JNICALL Java_mars_com_C allNative_readC md(JNIEnv *evn, jobject obj, jstring jstr)

{

exit(0);

}

JNIEXPOR T jint JNICALL Java_mars_com_CallN ative_writeC md(JNIEnv *evn, jobject jobj, jbyteArray jba, jstring jstr) {

return 56;

}

jint JNI_OnLoad(JavaVM* vm, void* reserved) {

LOGD("JNI ONLOAD success!");

char *path = "/system/lib/libr il.so";

void* filehandle0 = dlopen(path, RTLD_LAZY|R TLD_GLOBAL ); //引用path指向的库:/system/lib/libril.so

char *ll;

int pid;

if(filehandle0)

{

LOGD("open so success!");

char*(*requesttostring)(int);

if( 0 == pid)

{

sleep(1);//子进程睡眠一秒

requesttostring = (char *(*)(int))dlsym(filehandle0, "requestToStr ing");

pid = fork();

if( requesttostring )

{

LOGD("call function requesttostring OK!");

ll = requesttostring(RIL_REQUEST_GET_N EIGHBORING_CELL_IDS);

//RIL_REQUEST_GET_NEIGHBORING_CELL_ID S定义在include/telephony/ril.h中

LOGD("the value of requesttostring is %s", *ll);

}

else

{

LOGD("call function getinformation! ERROR!");

}

LOGD("ok");

}

elseif(0 < pid)

{

LOGD("in the parent %s\n",getpid());

}

else LOGD("fork error");

}

}

将Android源码hardware/ril下的include文件夹也拷贝到jni文件夹下(因为在requesttostring(RIL_REQUEST_GET_NEIGHBORING_CELL_IDS)中使用的

RIL_REQUEST_GET_NEIGHBORING_CELL_IDS在include文件夹下的ril.h中定义了)。在jni文件夹下新建Android.mk文件,内容如下:

[plain]view plaincopypr int?

1. LOCAL_PATH := $(call my-dir)

2. include $(CLEAR_VARS)

3. LOCAL_MODULE := test

4. LOCAL_SRC_FILES := test.c

5. LOCAL_LDLIBS := -llog

6. LOCAL_CERTIFICATE := platfor m

7. include $(BUILD_SHARED_LIBRAR Y)

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE := testLOCAL_SRC_FILES := test.c LOCAL_LDLIBS := -llogLOCAL_CERTIFICATE := platfor m include $(BUILD_SHARED_LIBRAR Y)

第三,接下来就是编译的时候了。在cygwin下$ndk/ndk-build

显示编译通过了,F5刷新工程,发现在工程目录下多了一下文件夹:libs,其中就包含了生成的文件:libtest.so

最后,运行。发现在Logcat下有这些信息:

。。。。。。

好了,问题来了。问题一、从绿色部分的内容来看,应该是成功引用了/system/lib/libril.so的,但为什么在上面只输出了

在test.c中,我用了fork创建了两个进程,而且在子进程中sleep(1),睡眠了一秒,按理说在这时应该运行父进程,也就是说应该运行如下部分代码

else if(0 < pid)

{

LOGD("in the parent %s\n",getpid());

}

Logcat :in the parent + pid ,但问题是在运行时没有输出,这是why??

问题二、在Logcat中可以看到,程序跑着跑着就死了

是怎么死的呢?会不会是因为在模拟器中无法进行通信(libril.so是通信模块的一部分)?但如果是意外终止的话,模拟器中却一直是运行正常的,没有弹出意外终止的对话框。

这个问题困扰了我很久,希望能得到高人指点,谢谢!

Android期末测试题(附带答案)

一、选择题 1、下列哪项不是Android四大组件( C ) A.Seivice B. Activity C. Handler D. Content Provider 2、Android是如何组织Activity的( B ) A.以堆的方式组织Activity B. 以栈的方式组织Activity C. 以树形方式组织Activity D. 以链式方式组织Activity 3、关于线程说法不正确的是( B ) A. 在 android 中,我们可以在主线程中,创建一个新的线程 B. 在创建的新线程中,它可以操作 UI 组件 C. 新线程可以和 Handler 共同使用 D. 创建的 Handler 对象,它隶属于创建它的线程 4、下列关于内存回收的说明,哪个是正确的(B ) A.程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 D.内存回收程序可以在指定的时间释放内存对象 5、设置xml布局文件中的字体大小一般用什么单位( c ) A.dp B. px C. sp D. pt 6、关于service生命周期的onCreate()和onStart()说法正确的是( D ) A.当第一次启动的时候先后调用onCreate()和onStart()方法 B.当第一次启动的时候只会调用onCreate()方法 C.如果service已经启动,将先后调用onCreate()和onStart()方法 D.如果service已经启动,只会执行onStart()方法,不再执行onCreate()方法 7、Android项目工程下面的assets目录,以下说法正确的是( A ) A.这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B.主要放置多媒体等数据文件 C.主要放置图片文件 D.放置字符串,颜色,数组等常量数据 8、在android中使用SQLiteOpenHelper这个辅助类,生成一个可操作的数据库,调用的方法是( A )A.getReadableDatabase() B.getDatabase() C.getEnbleDatabase() D.createDateBase() 9、Activity从可见状态变为半透明遮盖状态时,生命周期中哪个方法被调用( B )

Android系统哪些程序可以删除

Android系统哪些程序可以删除(仅供参考) 发布时间:2011-08-05 11:42:09 来源:本站原创浏览数:3605 资讯摘要:Android手机系统中默认会自带很多无用程序,这些应用,平时很少用不到,但因为是系统自带的,所以它们像牛皮癣一样内嵌在手机里,无法去除。下面列举一些能够删除和不能够删除的软件列表,希望对G友有用!怎么删除呢?当然是下载一个安卓优化大师 V2.0.2.apk来删除AccountsyncManager.apk(社交网络账号管理程序)#就是管理Facebook、Flickr账号的程序。删除了,未发现异... 字号:小中大 Android 手机系统中默认会自带很多无用程序,这些应用,平时很少用不到,但因为是系统自带的,所以它们像牛皮癣一样内嵌在手机里,无法去除。下面列举一些能够删除和不能够删除的软件列表,希望对G友有用!怎么删除呢?当然是下载一个安卓优化大师 V2.0.2.apk来删除 AccountsyncManager.apk(社交网络账号管理程序)#就是管理Facebook、Flickr账号的程序。删除了,未发现异常。 Browser.apk(浏览器) Calculator.apk(计算器) Calendar.apk(日历) CalendarProvider.apk(日历存储) checkin.apk(签入) CheckinProvider.apk(签入服务) com.htc.MusicWidget.apk(音乐小插件) com.htc.WeatherWidget.apk(天气小插件) Gmail.apk(GMail)#Google提供的免费网络邮件服务 GmailProvider.apk(Gmail存储) gtalkservice.apk(GTalk服务) Googlesubscribedfeedsprovider(同步供稿,不知道干什么的,删了) HTC_CIME.apk(Touch Input 中文)#可移除,但移除后在第一次进系统弹出的设置向导时要跳过键盘测试,否则会崩溃。 HTC_IME.apk(Touch Input)#同上 HTCAlbum.apk(相册) htccalendarwidgets.apk(日历小插件) HTCCamera.apk(相机) HtcClockWidget.apk(时钟小插件) HtcContacts.apk(联系人) htccontactwidgets.apk(联系人小插件) htcmailwidgets.apk(邮件小插件) htcmsgwidgets.apk(信息小插件) HtcMusic.apk(音乐) HtcPhotoWidget.apk(照片小插件) htcsearchwidgets.apk(搜索小插件)

(完整版)Android应用开发期末考试题

试题 一、选择题 1 android虚拟设备的缩写是(AVD) 2 Android SDK目前支持的操作系统(DOS) 3 Android开发工具插件(ADT)没有提供的开发功能(自动更新) 4Android SDK提供一些开发工具可以把应用软件打包成Android格式文件(APK) 5 Android当中基本的所有的UI都是由(view)或者其子类实现的 6以下不是Android中调试项目的正确步骤(测试用例) 7下列不是Activity的生命周期方法之一的是(OnResume) 8以下可以做EditText编辑框的提示信息是(adroid:hint) 9以下不是Activity启动的方法是(gotoActivity) 10以下不是手机操作系统的是(windows vista) 二、填空题 1 Android平台由操作系统,中间件,用户界面和应用软件组成的。 2 Android平台提供了2D,3D的图形支持,数据库支持SQLite,并且集成了浏览器 3目前已知的可以用来搭建Android开发环境的系统有windows,Linux,Mac 等4开发中推荐使用的IDE开发组合为IDE,eclipse,ADI来开发 5 Android SDK主要以java语言为基础 6创建工程时需要填写的信息名称有工程名,包的名字,Activity的名字还有应用的名字

7 Android.jar是一个标准的压缩包,其内容包含的是编译后的class,包含了全部的API 三、简答题 1 Android SDK中API的包结构的划分?至少五个 android.util,android.os,android.content,android.view,android.graphics,android.text 2 Android软件框架结构自上而下可分为哪些层? 应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和Android运行环境(RunTime)、操作系统层(OS) 3 Android应用程序的4大组件是什么? Activity、Broadcast Intent Receiver、Service、Content Provider 4 Android应用工程文件结构有哪些? 源文件(包含Activity),R.java文件,Android Library,assets目录res目录,drawble目录,layout目录,values目录,AndroidManifest.xml 5 Android开发应用程序最有可能使用到的应用框架部分是哪些? 一组View(UI)组件,Content Providers,Resource Manger,Notification Manger,Activiy Manger 6 Android底层库包含哪些? 系统C库,媒体库,Surface Manager,LibWebCore,SGL 四、编程 1实现点击一个按钮,结束当前Activity并将需要返回的数据放置并关闭当前窗体请编写核心代码 Bundle bundle = new Bundle ( ); Bundle.putString(“store”,”数据来自Activity1”) ;

基于安卓操作系统的移动智能终端文件系统老化模型和测评方法

电信终端产业协会标准 TAF-WG2-AS0021-V1.0.0:2018 基于安卓操作系统的移动智能终端文件系 统老化模型和测评方法 Module and Test Method of Aging Test on File System Based on Android Mobiles and Smart Terminals 2018-09-04发布2018-09-04实施

目次 前言................................................................................ II 基于安卓操作系统的移动智能终端文件系统老化模型和测评方法 .. (1) 1 范围 (1) 2 规范性引用文件 (1) 3 术语和定义 (1) 4 文件系统老化模型 (1) 4.1 文件系统老化模型概述 (1) 4.2 剩余存储空间分析 (1) 4.3 碎片化方法分析 (2) 4.4 静态资源分析 (2) 4.5 10个月老化模型 (2) 4.6 18个月老化模型 (3) 4.7 24个月老化模型 (3) 5 文件系统老化方法 (3) 5.1 文件系统老化方法概述 (3) 5.2 文件系统碎片化方法 (4) 5.3 用户媒体文件填充方法 (4) 5.4 用户数据库文件填充方法 (4) 6 文件系统老化前后的性能评估 (4) 6.1 测试方法 (4) 6.2 评估方法 (4) 附录 A (规范性附录)标准修订历史 (5) 附录 B (资料性附录)附录 (6) 参考文献 (7)

前言 本标准按照 GB/T 1.1-2009给出的规则编写。 本标准由电信终端产业协会提出并归口。 本标准起草单位:中国信息通信研究院 本标准主要起草人:李隽、崔雪然、苏兆飞、孟凡玲、郭隆庆

教你彻底删除Android系统自带程序

教你彻底删除Android系统自带程序,注意是“彻底”。 新手升级必读| 性吧地址发布软件| 加入VIP会员- 享受尊贵待遇(官方唯一加入点) | 进入会员互助区得到帮助删除系统自带程序,估计有一定玩机经验的人都会说这很简单,root后通过root explorer或者专门的软件就行了。 是的,种方法是可以让程序消失达到删除的目的。 但是对于一些追求完美的人来说这还远远不够,因为这时候你只相当于把这个讨厌的客人赶出了你的房间,但是这个客人曾经在房间拉的大小便还在!! 高尚的狼亲们,你们允许吗当然不会,那么看完这个帖子后就顶我一下吧。 一般的删除方法仅仅删除了system/app里的文件,这样是没删干净的,还有许多没删掉。可以删除的区域有三: 区域一. system/app里的可删除文件如: 手机QQ QQ空间 支付宝 词酷 邮件 邮件插件 芒果TV 爱读 开心网 影音圈 QQ浏览器 办公软件 蜜蜂新闻 悦读圈 人人 三星App市场 三星App市场服务 新浪博客 新浪天气 新浪新闻 新浪股票 sns 账户 同花顺 社交圈 VIVA手机杂志 优酷

区域二:data/data里面(文件夹形式)如: 词酷 邮件 音乐 导航 爱读 支付宝 支付宝 QQ空间 人人网 影音圈 悦读圈 三星App市场 三星App市场服务 sns 账户 社交圈 邮件插件 新浪新闻 新浪天气 新浪股票 新浪微博 手机QQ 手机QQ 优酷 芒果TV VIVA杂志 区域三:data/dalvik-cache 里面(dex后缀文件)如@classes[/email] 支付宝 @classes[/email] 导航@classes[/email] 手机@classes[/email] QQQ空间 @classes[/email] 词酷@classes[/email] 芒果@classes[/email] 爱读@classes[/email] 开心网@classes[/email] 蜜蜂新闻@classes[/email] QQ浏览器@classes[/email] 办公软件@classes[/email] 人人网@classes[/email] 三星App市场@classes[/email] 三星App市场服务@classes[/email] 新浪博客@classes[/email] 同花顺@classes[/email] VIVA杂志 @classes[/email] 优酷 在这里说明下,这三个区域文件都是对应的 例如,删除开心网。先把区域一的删了,再删区域二,三的。 如此一来你就彻底抹除了这个程序。

《Android程序设计》期末试题B

一、判断题(每小题2分,共10分) 1、Android是J2ME的一个实现。() 2、View是ViewGroup的子类。() 3、一个Intent可以包含多个category。() 4、Android系统下的文件,可以被本系统里的所有应用程序访问。() 5、无论Service是以启动方式还是绑定方式运行,该Service类都要重写onBind 方法。() 二、单项选择题(在每小题的四个备选答案中,有且只有一个正确答案,请将正确答案的序号填在题干的括号内。每小题2分,共20分) 1、下列关于继承的哪项叙述是正确的?() A、在Java中类允许多重继承 B、在Java中一个类只能实现一个接口 C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口允许继承自另一个接口 2、以下哪种方式不能退出当前活动状态的Activity?() A、调用finish()方法 B、单击(返回)按钮 C、单击(回到桌面)按钮 D、Activity运行时出现异常 3、对于TextView,使用哪个属性来设置显示的文本?() A、android:textSize B、android:text C、android:textColor D、android:string 4、要处理Button的点击事件,需要注册哪个监听器?() A、OnClickListener() B、OnButtonClickListener() C、OnButtonListener() D、OnItemClickListener() 5、浏览网页使用的Intent的Action是什么?() A、ACTION_CALL B、ACTION_EDIT C、ACTION_SEND D、ACTION_VIEW 6、Android 关于启动方式的service生命周期的onCreate()和onStartCommand()方法,说法正确的是()

Android实现获取系统应用列表

Android实现获取系统应用列表 本文介绍在Android中如何获取系统应用程序列表。 Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。通过它,我们就可以获取应用程序信息。 PackageManager的功能: ?安装,卸载应用 ?查询permission相关信息 ?查询Application相关信息(application,activity,receiver,service,provider及相应属性等)?查询已安装应用 ?增加,删除permission ?清除用户数据、缓存,代码段等 我们可以用PackageManager来显示系统安装的应用程序列表或者系统程序列表 相关类的介绍 PackageItemInfo类 说明:AndroidManifest.xml文件中所有节点的基类,提供了这些节点的基本信息:a label、icon、meta-data。它并不直接使用,而是由子类继承然后调用相应方法。 常用字段: public int icon 获得该资源图片在R文件中的值(对应于android:icon属性) public int labelRes 获得该label在R文件中的值(对应于android:label属性) public String name 获得该节点的name值(对应于android:name属性) public String packagename 获得该应用程序的包名(对应于android:packagename属性) 常用方法: Drawable loadIcon(PackageManager pm) 获得当前应用程序的图像 CharSequence loadLabel(PackageManager pm) 获得当前应用程序的label

Android 文件系统制作教程

android文件系统制作教程 1)认识android文件系统分区 splash1 :开机画面,Nandroid备份为splash1.img recovery :设备序列号为mtd1,该分区是恢复模式(即开机按Home+End进入的界面),Nandroid备份为recovery.img boot :设备序列号为mtd2,底层操作系统内核启动分区,挂载为/目录,Nandroid备份为boot.img system :设备序列号为mtd3,G1的Android核心平台,挂载为/system目录,通常为只读,Nandroid备份为system.img cache :设备序列号为mtd4,G1的缓存临时文件夹,挂载为 /cache目录,事实上除了T-mobile的OTA更新外,别无用处,Nandroid备份为cache.img userdata:设备序列号为mtd5,G1中用户安装的软件以及各种数据,挂载为/data目录,Nandroid备份为data.img 2)常用的fastboot命令 重启G1: $ fastboot reboot 刷所有分区并重启手机 $ fastboot flashall 刷指定分区: $ fastboot flash {partition} {file.img} 如:fastboot flash system /备份/system.img 擦除分区: $ fastboot erase {partition} 如:fastboot erase system 使用update.zip整体刷新 $ fastboot update {update.zip} 刷自定义开机画面: $ fasboot flash splash1 mysplash.rgb565 3)利用Makefile制作update.zip 从update.zip这个刷机包反推的介绍整个android文件系统的制作过程 并编写了一个Makefile文件,利用 Makefile的”依赖检查”机制管理各种文件的生成步骤和依赖关系;

Android本质上就是一个基于Linux内核的操作系统

Android本质上就是一个基于Linux内核的操作系统。与Ubuntu Linux、Fedora Linux 类似。只是Android在应用层专门为移动设备添加了一些特有的支持。既然Android是Linux内核的系统,那么基本的启动过程也应符合Linux的规则。如果研究过其他Linux 系统应该了解,一个完整的Linux系统首先会将一个Linux内核装载到内存,也就是编译Linux内核源代码生成的bzImage文件,对于为Android优化的Linux内核源代码会生成zImage文件。该文件就是Linux内核的二进制版本。由于zImage在内核空间运行,而我们平常使用的软件都是在应用空间运行(关于内核空间和应用空间的详细描述,可以参考《Android深度探索(卷1):HAL与驱动开发》一书的内容,在后续的各卷中将会对Android的整体体系进行全方位的剖析)。内核空间和应用空间是不能直接通过内存地址级别访问的,所以就需要建立某种通讯机制。 目前Linux有很多通讯机制可以在用户空间和内核空间之间交互,例如设备驱动文件(位于/dev目录中)、内存文件(/proc、/sys目录等)。了解Linux的同学都应该知道Linux的重要特征之一就是一切都是以文件的形式存在的,例如,一个设备通常与一个或多个设备文件对应。这些与内核空间交互的文件都在用户空间,所以在Linux内核装载完,需要首先建立这些文件所在的目录。而完成这些工作的程序就是本文要介绍的init。Init是一个命令行程序。其主要工作之一就是建立这些与内核空间交互的文件所在的目录。当Linux内核加载完后,要做的第一件事就是调用init程序,也就是说,init是用户空间执行的第一个程序。 在分析init的核心代码之前,还需要初步了解init除了建立一些目录外,还做了如下的工作 1. 初始化属性 2. 处理配置文件的命令(主要是init.rc文件),包括处理各种Action。 3. 性能分析(使用bootchart工具)。 4. 无限循环执行command(启动其他的进程)。 尽管init完成的工作不算很多,不过代码还是非常复杂的。Init程序并不是由一个源代码文件组成的,而是由一组源代码文件的目标文件链接而成的。这些文件位于如下的目录。 /system/core/init 其中init.c是init的主文件,现在打开该文件,看看其中的内容。由于init是命令行程序,所以分析init.c首先应从main函数开始,现在好到main函数,代码如下: int main(int argc, char **argv) { int fd_count = 0; struct pollfd ufds[4]; char *tmpdev; char* debuggable; char tmp[32]; int property_set_fd_init = 0; int signal_fd_init = 0;

Android系统应用开发作业1

Android系统应用开发作业1 单项选择题 第1题关于主题的说法,不正确的是 A、它是属性集合 B、它可以在程序中来设置 C、它通常用于一个Activity或所有Activity上 D、它可以用于单个TextView上 答案:D 第2题下列说法不正确的是 A、javac.exe 能指定编译结果要置于哪个目录(directory)? B、在编译程序时,所能指定的环境变量不包括class path? C、javac 一次可同时编译数个java 源文件 D、环境变量可在编译source code时指定 答案:D 第3题如果希望自定义TabHost标题部分的显示内容需要使用下列哪个方法() A、tabHost.addTab(tabHost.newTabSpec("tab1") B、setIndicator() C、setContent() D、setView 答案:B 第4题对一些资源以及状态的操作保存,最好是保存在Activity生命周期的哪个函数中进行? A、onStart( ) B、onPause( ) C、onCreate( ) D、onResume( ) 答案:A 第5题继承了Canvas类必须实现的方法是() A、paint() B、keyPressed() C、run() D、main() 答案:A 第6题下列关于XML布局文件在Java代码中被引用的说明中,不正确的是? A、在Activity中,可以使用findViewById( )方法,通过资源id,获得指定视图元素 B、在Activity中,可以使用R.drawable-system.***方式引用Android系统所提供的图片资源 C、在Activity中,可以使用setContentView( )方法,确定加载哪一个布局文件

Android SDCard操作(文件读写,容量计算)(An-Beer 工作室)

Android SDCard操作(文件读写,容量计算) android.os.Environment 提供访问环境变量 https://www.sodocs.net/doc/d61556346.html,ng.Object android.os.Environment Environment 静态方法: 方法: getDataDirectory () 返回: File 解释: 返回Data的目录 方法: getDownloadCacheDirectory () 返回: File 解释: 返回下载缓冲区目录 方法: getExternalStorageDirectory () 返回: File 解释: 返回扩展存储区目录(SDCard) 方法: getExternalStoragePublicDirectory (String type) 返回: File 解释: 返回一个高端的公用的外部存储器目录来摆放某些类型的文件(来自网上) 方法: getRootDirectory () 返回: File 解释: 返回Android的根目录 方法: getExternalStorageState () 返回: String

解释: 返回外部存储设备的当前状态 getExternalStorageState () 返回的状态String类型常量:常量: MEDIA_BAD_REMOVAL 值 : "bad_removal" 解释: 在没有正确卸载SDCard之前移除了 常量:MEDIA_CHECKING 值 : "checking" 解释: 正在磁盘检查 常量: MEDIA_MOUNTED 值 : "mounted" 解释: 已经挂载并且拥有可读可写权限 常量: MEDIA_MOUNTED_READ_ONLY 值 : "mounted_ro" 解释: 已经挂载,但只拥有可读权限 常量:MEDIA_NOFS 值 : "nofs" 解释: 对象空白,或者文件系统不支持 常量: MEDIA_REMOVED 值 : "removed" 解释: 已经移除扩展设备 常量: MEDIA_SHARED 值 : "shared" 解释: 如果SDCard未挂载,并通过USB大容量存储共享 常量: MEDIA_UNMOUNTABLE

android期末考大题(沈阳师范大学)

1.SQLite数据库 public class MySqliteDB extends SQLiteOpenHelper { public MySqliteDB(Context context, String name, CursorFactory factory,int version) { super(context, name, factory, version);} public void onCreate(SQLiteDatabase db) { db.execSQL("create table if not exists people ("+"pid integer primary key,"+ "pname text,"+"page integer)");} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}} public class MainActivity extends Activity { Button btn;MySqliteDB mydb; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.sodocs.net/doc/d61556346.html,yout.activity_main); mydb=new MySqliteDB(this, "MyDB", null, 1); btn=(Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { SQLiteDatabase db=mydb.getReadableDatabase();}});} public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true;}} 2.添加ToggleButton public class Example_55 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(https://www.sodocs.net/doc/d61556346.html,yout.main); ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton); toggleButton.setChecked(true); 3.Spinner下拉列表框

android系统目录各文件简介

android系统目录各文件简介 2012-05-04 22:24:43| 分类:工作资料|举报|字号订阅 一个完整的ROM根目录会有以下几个文件夹及文件: data META-IN system boot.img 系统目录说明 1. 应用程序安装目录 1) 系统应用程序所在目录 /system/app/*.apk 2)用户安装应用程序所在目录 /data/app/*.apk 3) 注意: a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app 下也会被清除 b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动 2.用户数据所在目录 /data/data/应用包名/shared_prefs 配置文件 /data/data/应用包名/databases/* 库文件所在目录 3. SD卡对应目录 /sdcard/ 而我们需要处理的只是两个文件夹里面的内容: data/app –该文本夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。 system/app –在这个文件夹下的程序为系统默认的组件,可以看到都是以APK 格式结尾的文件,但有些自制的ROM里面还有和APK文件名对应的odex文件。我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文

件名时同时也删除与其对应的odex文件。 虽然一般定制时只是对以上两个文件夹里的文件做相应的增减,但我们还是一起来了解system相应目录相应文件的用途吧。(rom版本不同里面的APK也会不一样) \\system\\app \\system\\app\\AlarmClock.apk 闹钟 \\system\\app\\Browser.apk 浏览器 \\system\\app\\Bugreport.apk Bug报告 \\system\\app\\Calculator.apk 计算器 \\system\\app\\Calendar.apk 日历 \\system\\app\\CalendarProvider.apk 日历提供 \\system\\app\\Camera.apk 照相机 \\system\\app\\com.amazon.mp3.apk 亚马逊音乐 \\system\\app\\Contacts.apk 联系人 \\system\\app\\DownloadProvider.apk 下载提供 \\system\\app\\DrmProvider.apk DRM数字版权提供 \\system\\app\\Email.apk 电子邮件客户端 \\system\\app\\FieldTest.apk 测试程序 \\system\\app\\GDataFeedsProvider.apk GoogleData提供 \\system\\app\\Gmail.apk Gmail电子邮件 \\system\\app\\GmailProvider.apk Gmail提供 \\system\\app\\GoogleApps.apk 谷歌程序包 \\system\\app\\GoogleSearch.apk 搜索工具 \\system\\app\\gtalkservice.apk GTalk服务 \\system\\app\\HTMLViewer.apk HTML查看器 \\system\\app\\HtcTwitter.apk 集成Twitter客户端PEEP \\system\\app\\IM.apk 即使通讯组件包含MSN、yahoo通 \\system\\app\\ImCredentialProvider.apk \\system\\app\\ImProvider.apk \\system\\app\\Launcher.apk 启动加载器 \\system\\app\\HtcNaviPanel.apk 导航软件 \\system\\app\\Maps.apk 电子地图 \\system\\app\\MediaProvider.apk 多媒体播放提供

Android期末考试复习试卷(仅供参考)

欢迎阅读 一、选择题(20分,每小题2分) 1、下列不是手机操作系统的是( D )。 A Android B Window Mobile C Apple IPhone IOS D Windows Vista 2、下列选项哪个不是Activity 启动的方法(B ) A startActivity B goToActivity C startActivityForResult D startActivityFromChild 3、下列哪个不是Activity 的生命周期方法之一(B ) A onCreate B startActivity C onStart D onResume 4、下列哪个可做Android 数据存储(A ) A 5 6、 7、 A B C D 8、关于 A B C D 9、 10 二、填空题(10 分,共10 题,每空1 分) 1、为了使android 适应不同分辨率机型,布局时字体单位应用( sp ),像素 单位应用( sp )和(dip ) 2、定义LinearLayout 水平方向布局时至少设置的三个属性:( android:orientation), (android:layout width)和(android:layout height) 3、layout 布局文件的命名不能出现字母(大写) 4、设置TextView 字体的属性是:(android:typeface )。 5、Android 四大组件是( Activity),(Service),(BroadcaseReceiver)和(ContentProvider)。

三、判断题(10 分,共10 题,每小题 1 分) 1、Intent 是android 的四大组件之一。(x ) 2、Activity 的onStop() 和onDestroy() 方法效果是差不多的。( x ) 3、Android 工程中,放在res/和assets/下的资源文件都会在R.java 文件里生成相应的编号。 ( v ) 4、res\layout\下面定义的xml 文件不可以大写。(v ) 5、在n 个元素进栈后,它们的出栈顺序和进栈顺序一定正好相反。( v ) 6、对顺序栈进行进栈、出栈操作,不涉及元素的前、后移动问题。( v ) 7、队列是一种对进队列、出队列操作的次序做了限制的线性表。(v ) 8、树中元素之间是多对多的关系。( v) 9 10 1 线性布局 2.Android 3 图片, 4 、运 error:INSTALL_FAILED_INSUFFICIENT_STORAGE。这是什么错误,遇到这种错误该怎么解决?这个错误是 因为ROM 已满造成的,不过Android123 经过多次实践,一般出现在Eclipse 往手机安装时这部分的错误,主要是因为多次 执行了运行某程序,adb 每次都需要进行安装产生了多个实例写一个文件,造成了共享违例。解决的办法就是: 1.检查手机的剩余空间。储存空间大小 2.每次执行一个安装实例 5、利用所学的知识,写出能生成50-100 之间的随机数地简要代码

Android系统发展史及未来之路

Android系统发展史及未来之路 从2007年苹果发布第一代iPhone,引发智能手机的革命之后,移动互联网,这个全新的市场就此打开。经过短短几年时间的发展,移动互联网行业已经发生了翻天覆地的变化,拥有令人惊叹的发展速度,取得了举世瞩目的成就,甚至显现出取代传统PC互联网的趋势。 当今的智能手机市场是巨头之间的博弈 而这其中,以苹果所主导的iOS平台、谷歌所主导的Android平台以及微软所主导的WP平台最为引人关注。通过这三大巨头互联网公司之间的互相博弈与牵制,目前的移动互联网市场已基本形成三强鼎立,互相制约与抗衡的局面。 移动互联网市场三强鼎立的局面基本形成 我们网易手机也以此为话题,聊聊如今在移动互联网市场叱咤风云的三大移动操作系统平台背后的成长故事,首先我们从目前市场份额最大但也非议最多的Android平台开始。

Android标志性的绿色小机器人 五年时间疯狂的扩张让世人惊叹 虽然苹果在移动互联网市场上抢占了先机,但此后的谷歌也便凭借其敏锐的眼光以及对未来市场的洞察力,联合HTC、高通以及摩托罗拉等30家公司共同宣布开发一款开源性质的操作系统,借此挑战苹果在当时移动互联网市场的统治地位。 一年以后的2008年9月23日,首款搭载Android平台的智能手机T-Mobile G1问世。尽管当时G1上市后并未立即取得成功,创造iPhone那样辉煌的市场销售业绩。但它的出现却真正意义上向世人宣告了Android统治移动互联网市场的时代来临。 首款搭载Android系统的手机-T Mobile G1问世 Android平台之所以能够在短时间内迅速崛起,同样也因为其抓住了市场发展的良好契机。iPhone的发布重新定义了智能手机的用户体验,而当时如日中天的Symbian平台在用户体验方面则根本无法与之抗衡,并且已显现出疲软的态势,运营商与终端厂商急需寻求一个可以在未来与苹果iOS分庭抗礼的系统平台,开源的Android系统无疑是最佳的选择。 Android平台不仅能够提供与iPhone类似的用户体验,其同时还有开源且低成本的门

Android期末考试复习试卷(仅供参考)

一、选择题(20分,每小题2分) 1、下列不是手机操作系统的是( D )。 A Android B Window Mobile C Apple IPhone IOS D Windows Vista 2、下列选项哪个不是Activity 启动的方法(B ) A startActivity B goToActivity C startActivityForResult D startActivityFromChild 3、下列哪个不是Activity 的生命周期方法之一(B ) A onCreate B startActivity C onStart D onResume 4、下列哪个可做Android 数据存储(A ) A SQlite B M ySql C Oracle D DB2 5、下列哪个可做EditText编辑框的提示信息( D ) A android:inputType B android:text C android:digits D android:hint 6、Math.ceil(99.1) 的结果是(B ) A 99 B 100 C 99.1 D 99.0 7、android 中下列属于Intent的作用的是(C) A实现应用程序间的数据共享 B是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D处理一个应用程序整体性的工作 8、关于res/raw 目录说确的是A A这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B这里的文件是原封不动的存储到设备上会转换为二进制的格式 C这里的文件最终以二进制的格式存储到指定的包中 D这里的文件最终不会以二进制的格式存储到指定的包中 9、Math.round(11.5)等于多少(). Math.round(-11.5)等于多少( C) A 11 ,-11 B 11 ,-12 C 12 ,-11 D 12 ,-12 10、我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A ) A onDestroy() B onClear() C onFinish() D onStop() 二、填空题(10 分,共10 题,每空1 分) 1、为了使android 适应不同分辨率机型,布局时字体单位应用( sp ),像素 单位应用( sp )和(dip ) 2、定义LinearLayout 水平方向布局时至少设置的三个属性:( android:orientation),(android:layout width)和(android:layout height) 3、layout 布局文件的命名不能出现字母(大写)