欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Ubuntu下Android源码修改编译及运行launcher定制.docx

    • 资源ID:7562881       资源大小:22.54KB        全文页数:19页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Ubuntu下Android源码修改编译及运行launcher定制.docx

    1、Ubuntu下Android源码修改编译及运行launcher定制环境Linux版本:Ubuntu 11.04(可由10.10的版本进行升级)64位系统GCC版本:gcc version 4.5.2Java版本:java version 1.6.0_26下载android源码前注意:1、保证Ubuntu系统中的容量在80G左右,以保证足够的空间来存放android源码以及编译后的相关文件。 联网方法:采用拨号进行连接。相关操作步骤如下所示:1、虚拟机设置硬件网络适配器网络连接桥接2、启动Ubuntu系统,打开终端(在普通用户下),输入相关命令如下:$ pppoeconf/打开后输入上网账号跟密

    2、码,确认保存$ sudo pon dsl-provider/上网连接命令经过这两个步骤后就可以进行上网了。Android源码编译所依赖的tools01.$ sudo apt-get update02.$ sudo apt-get -y install git-core03.$ sudo apt-get -y install gnupg04.$ sudo apt-get -y install sun-java6-jdk flex05.$ sudo apt-get -y install bison06.$ sudo apt-get -y install gperf07.$ sudo apt-get

    3、 -y install libsdl-dev08.$ sudo apt-get -y install libesd0-dev09.$ sudo apt-get -y install libwxgtk2.6-dev10.$ sudo apt-get -y install build-essential11.$ sudo apt-get -y install zip12.$ sudo apt-get -y install curl13.$ sudo apt-get -y install libncurses5-dev14.$ sudo apt-get -y install zlib1g-dev15

    4、.$ sudo apt-get -y install valgrind注意:(如果是32bit的系统的话,则要更改几个Android.mk文件)01./external/clearsilver/cgi/Android.mk02./external/clearsilver/java-jni/Android.mk03./external/clearsilver/util/Android.mk04./external/clearsilver/cs/Android.mk用gedit打开,修改m64为m32即可另外将build/core/main.mk中的ifneq (64,$(findstring 6

    5、4,$(build_arch)修改为:ifneq (i686,$(findstring i686,$(build_arch)对于32位系统所出现的问题,解决方法:Error1:make: *out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o error1在terminal中输入$ gedit frameworks/base/libs/utils/Android.mk将LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)修改为:LOCAL_CFLAGS +

    6、= -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)fpermissiveError2:make: * out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.oerror 1此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的 86.mk并将以下语句:HOST_GLOBAL_CFLAGS+= -D_FORTIFY_SOURCE=0修改为:HOST_GLOBAL_CFLAGS+= -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0Android源码下载1、安装rep

    7、o安装过程步骤如下所示:Repo下载安装1、$ mkdir /bin/在home目录下创建bin文件夹2、$ PATH=/bin:$PATH/环境变量设置3、$ curl https: 4、$ chmod a+x /bin/repo/权限设置,保证repo可执行Repo client初始化1、$ mkdir Android/创建Android目录,用于存放下载的android源码2、$ cd Android/进入到Android目录3、$ repo init -u https: 当然也可以指定android版本,使用如下命令:$ repo init -uhttps: 4.0.1_r1Andro

    8、id源码文件获取$ repo sync注意: Android源码编译环境初始化1、$ source build/envsetup.shOR$ . build/envsetup.sh2、$ lunch full-eng/选择编译目标Code编译$ make -j4/其中j4表示同时启动4个线程任务进行编译,可以直接使用make,这样就是最大程度使用线程数来进行编译总结:到这里为止,android源码完成了编译过程,编译后,会在源码目录下的/out/target/product/generic/有三个镜像文件生成,分别是system.img、userdata.img以及ramdisk.img。注意

    9、:1、如果编译过程没有出问题,但是在/out/target/product/generic/下3个镜像文件不全,可以再次进行一次命令make,就可以解决问题了。2、如果是编译过程中出现错误,一般导致的原因是因为缺少了相关编译环境,可以根据提示进行安装,安装后,重新进行编译。Windows XP下使用Android模拟器运行所编译好的文件。原理:将Android模拟器下所加载的system.img替换成编译后的system.img即可。1、将编译好的system.img从Ubuntu中拷贝出来方法:1)先拷贝到U盘或者移动硬盘中,再从U盘或移动硬盘拷贝到Windows XP硬盘下;2)先进行Wi

    10、ndowsXP跟Ubuntu文件夹共享,这样就可以将system.img拷贝到共享文件夹中;3)传FTP,从FTPxx进行下载;4)在Ubuntu中上网将system.img作为附件进行邮件发送,然后从WindowsXP下进行下载。2、将拷贝出来的system.img文件放置到Android模拟器下的对于文件夹中,如果Android是4.0以上的版本的话,一般是在system-imges文件夹中。C:ProgramFilesAndroidandroid-sdksystem-imagesandroid-15armeabi-v7a3、启动模拟器就可以运行了。注意:创建Android虚拟机的时候,A

    11、ndroid版本应该跟Ubuntu下编译好的Android版本要保持一致,否则有可能替换system.img后,Android系统无法正常启动,或者无法进入Android启动界面。Android源码修改并进行编译下面以2个实例来进行说明,实例1目的是实现Android系统永不休眠,实例2是实现Android系统启动后,不自动进入锁屏界面。实例1:实现Android系统永不休眠其实很简单,只需要对源码下的配置文件XML下的参数进行修改即可。步骤如下:1、$ cd frameworks/base/packages/SettingsProvider/res/values/在下载的Android源码目

    12、录下输入此命令,进入到values目录下2、$ gedit defaults.xml/使用文本编辑器打开defaults.xml文件3、将600改为-1保存后退出/其中600单位是ms,表示60s,就是说60s屏幕会进行休眠状态,改为-1后,不再进入休眠4、$ cd ././././././返回到源码目录下5、$ source ./build/envsetup.sh/环境初始化6、$ mmm frameworks/base/packages/SettingsProvider/对SettingsProvider模块进行编译7、$ make snod /重新打包system.img到这里,模拟编译

    13、就完成了,查看效果的话,直接将Android模拟器下的system.img替换掉启动运行即可。注意:mmm命令可以对模块进行编译,后面必须接上模块所在目录,查看某目录是否为一模块,就看当前目录下是否有Android.mk文件,如果有的话,就是模块。除了可以使用mmm进行编译的话,还可以使用mm,但是mm是在当前目录下实行编译的,也就是模块目录下使用此命令。实例2:实现Android启动后不进入锁屏状态。修改KeyguardViewMediator.java文件下的变量,将其赋值改为false即可。步骤如下: 2、$ gedit KeyguardViewMediator.java/是用文本编辑器

    14、打开java文件3、将private boolean mExternallyEnabled = true;代码中的true改为false,保存退出4、$ cd ././././././ ./././返回到源码目录下5、$ source ./build/envsetup.sh/环境初始化6、$ mmm frameworks/base/policy/对policy模块进行编译7、$ make snod /重新打包system.img注意:如果在进行模块代码编译了,报出少了一个odex后缀名的文件的错误时,总结了下,导致报错的原因可能是Android版本的差异,不过没事,即使模块编译通不过,还是可以

    15、对整个源码进行编译的(直接在源码目录下执行make命令即可),只是时间会相对较长,同样会将修改的模块整合到system.img文件中。Android 4.0下防止用户对安装程序进行卸载 1、UninstallAppProgress.Java/程序卸载过程2、UninstallerActivity.java/程序卸载界面方法是在UninstallerActivity.java对应位置加上一段代码即可:Overridepublic void onCreate(Bundle icle) super.onCreate(icle);/ Get intent information./ We expect

    16、 an intent with URI of the form package:/#/ className is optional; if specified, it is the activity the user chose to uninstallfinal Intent intent = getIntent();Uri packageURI = intent.getData();String packageName = packageURI.getEncodedSchemeSpecificPart();if(packageName = null) Log.e(TAG, Invalid

    17、package name: + packageName);showDialog(DLG_APP_NOT_FOUND); /*AlertDialog.Builder builder= new AlertDialog.Builder(this);/builder.setIcon(android.R.drawable.ic_dialog_info);builder.setTitle(Message);builder.setMessage(Cannot be uninstall!);builder.setPositiveButton(确认, null);/builder.create().show()

    18、;builder.show();/showDialog(DLG_APP_NOT_FOUND);/return;finish();*/new AlertDialog.Builder(this).setTitle(游戏控制).setMessage(对不起,此程序不允许卸载!).setPositiveButton(确定,new DialogInterface.OnClickListener()public void onClick(DialogInterface dialoginterface, int i)/这里设置点击后执行finish();).show();mPm = getPackageMa

    19、nager();boolean errFlag = false; Android 4.0下防止用户对安装程序进行强行停止 1、在forceStopPackage函数中,加上一段代码2、public void forceStopPackage(final String packageName) 3、if(checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)4、!= PackageManager.PERMISSION_GRANTED) 5、String msg = Permission Denial: for

    20、ceStopPackage() from pid=6、+ Binder.getCallingPid()7、+ , uid= + Binder.getCallingUid()8、+requiresandroid.Manifest.permission.FORCE_STOP_PACKAGES;9、Slog.w(TAG, msg);10、throw new SecurityException(msg);11、12、final int userId = UserId.getCallingUserId();13、long callingId = Binder.clearCallingIdentity()

    21、;14、try 15、IPackageManager pm = AppGlobals.getPackageManager();16、int pkgUid = -1;17、synchronized(this) 18、try 19、pkgUid = pm.getPackageUid(packageName, userId);20、 catch (RemoteException e) 21、22、if (packageName = -1) 23、Slog.w(TAG, Invalid packageName: + packageName);24、return;25、26、/添加判断代码 28、ret

    22、urn;29、30、/31、forceStopPackageLocked(packageName, pkgUid);32、try 33、pm.setPackageStoppedState(packageName, true, userId);34、 catch (RemoteException e) 35、 catch (IllegalArgumentException e) 36、Slog.w(TAG, Failed trying to unstop package 37、+ packageName + : + e);38、39、40、 finally 41、Binder.restoreCa

    23、llingIdentity(callingId);+42、43、方法二:这是在网上看到的方法,尝试了下,编译通过了,但是在模拟器上面运行的时候出问题2、修改clearApplicationUserData函数44、public boolean clearApplicationUserData(final String packageName,45、final IPackageDataObserver observer, final int userId) 46、enforceNotIsolatedCaller(clearApplicationUserData);47、int uid = Bin

    24、der.getCallingUid();48、int pid = Binder.getCallingPid();49、long callingId = Binder.clearCallingIdentity();50、try 51、IPackageManager pm = AppGlobals.getPackageManager();52、int pkgUid = -1;53、synchronized(this) 54、try 55、pkgUid = pm.getPackageUid(packageName, userId);56、 catch (RemoteException e) 57、5

    25、8、if (pkgUid = -1) 59、Slog.w(TAG, Invalid packageName: + packageName);60、return false;61、 63、AlertDialog.Builder builder = new AlertDialog.Builder(mContent);64、builder.setTitle();65、builder.setMessage(msg);66、builder.setPositiveButton(OK,newDialogInterface.OnClickListener()67、public void onClick(Dia

    26、logInterface dialoginterface, int i)68、/Click event69、70、71、);72、builder.create().show();73、return false;74、75、if (uid = pkgUid | checkComponentPermission(76、android.Manifest.permission.CLEAR_APP_USER_DATA,77、78、79、pid, uid, -1, true)= PackageManager.PERMISSION_GRANTED) forceStopPackageLocked(packag

    27、eName, pkgUid);80、 else 81、throwpermission:+newSecurityException(pid+doesnothave82、android.Manifest.permission.CLEAR_APP_USER_DATA+ to clear data +83、for process:+packageName);84、85、86、87、try 88、/clear application user data89、pm.clearApplicationUserData(packageName, observer, userId);90、Intentintent

    28、=newIntent(Intent.ACTION_PACKAGE_DATA_CLEARED,91、Uri.fromParts(package, packageName, null);92、intent.putExtra(Intent.EXTRA_UID, pkgUid);93、broadcastIntentInPackage(android,Process.SYSTEM_UID,intent,94、null, null, 0, null, null, null, false, false, userId);95、 catch (RemoteException e) 96、97、 finally 98、Binder.restoreCallingIdentity(callingId);99、100、return true;101、Launcher桌面定制方法一:将系统的Launcher进行删除,使用自己编写的Launcher。实现步骤:1、编写自己的Launcher。例如:建立Jhome工程,修改工程下的AndroidManifest.xml文件,如下所示:/主屏activity属性设置/Android activity属性设置大全http: /以下两条代码一定要加上,表示Home Screencategory android:


    注意事项

    本文(Ubuntu下Android源码修改编译及运行launcher定制.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开