Android 系统应用Setting开发小结

简介:
最近由于工作关系需要对系统应用Setting进行二次开发,选择的工具是eclipse,所以也可以看得出来,不是在源码的环境下开发的。第一步自然是把Setting源码导入到eclipse,这样的话问题就出现了,会有很多错误。原因就是Setting属于系统应用,而且它用到了很多系统级的api,这些api是隐藏的、不对外开放的(相对于一般应用来说)。那 如果想要使程序运行起来,就必须手动导入相应的jar包,    这些jar包是系统编译完成后生成的, 而且jar包的顺序也要对应好,先后有序,类似这样就可以。而且 版本不一样,所需要jar包也有所差异,因此基于哪个版本的系统开发,就选择相应版本的jar包。导入完后记得把project.properties版本号对上,然后 clean一下就不会有错误了。另外如果你修改了AndroidManifest.xml文件,里面会有很多错误,没关系clean。关于如何打入jar,可以参考下面的  7、 编译系统包Settings这篇文章。

                                                        
                                                                                                                                                   整体结构图

                                                                                                                                               Build Path示意图
,导完之后开始运行一下程序,会出现无法安装的情况。原因是和系统的冲突了,解决办法就是删除系统已经安装好的Setting,方法是使用adb shell命令,可以参考下面的: 【安卓通用】android adb shell 命令大全。但是运行完之后会发现,程序分辨率变低了,图片、文字都放大模糊了。具体原因不清楚,但是可以确定的是如果在系统环境下编译是不会有这个问题(eclipse有)。最后找到一个解决办法,就是在 AndroidManifest.xml文件中加入:
    <supports-screens 
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true"
        />
  这个就是用于适配大屏幕的(我做的是基于平板开发),但是为什么要额外加上这段代码呢?系统环境下编译就不需要,不明觉厉。明白的朋友望告知。这样一来程序就可以正常显示了。
  
    下面是我在网上找的参考资料,可以看一下,但里面的实例教程中都或多或少存在一些问题。

一、参考资料

导入部分:
    1、 将packages/apps/下的app导入eclipse
    2、在Eclipse+ADT中开发Android系统的内置应用
    3、[2013.9.8网络首发]导入Android4.2源码里的Gallery2和Camera模块至Eclipse全过程
    4、 Android SystemUI (导入到Eclipse,可以正常运行)
    5、把系统的Settings拉到另外目录下,并导入eclipse中编译运行
    6、Windows下Eclipse Android源码Settings模块调试
     7、编译系统包Settings
    8、Android Settings 导入eclipse(含有调试好的源代码)
    9、将packages/apps/下的app导入eclipse
   10、使用内部(com.android.internal)和隐藏(@hide)API[第2部分,定制android.jar]
   11、Android.mk简单分析

编译部分:
    1、Android平台上如何让应用程序获得系统权限以及如何使用platform密钥给apk签名
    2、Android应用程序永久获取root权限方法
    3、Android通过源码编译apk获得系统权限
    4、apk获得Android系统权限的方法
    5、Android如何通过shared_user_id获取系统权限
    6、android实现权限管理和签名静默卸载
    7、错误 -- Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
    8、安卓工具箱
    9、安卓签名工具SignApk.jar使用教程
   10、eclipse源码编译的apk开发,使用系统签名机制
   11、WINDOWS下ECLIPSE ANDROID源码SETTINGS模块调试
   13、Android签名总结
   14、 【安卓通用】android adb shell 命令大全
   15、Android中的lcd_density设置
   16、Eclipse中跟踪调试Android源代码
相关文章
|
18小时前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
1天前
|
存储 监控 调度
Android系统服务:WMS、AMS相关知识
参考文献 Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析 Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析 Android窗口管理服务WindowManagerService对输入法窗口(Input Method Window)的管理分析 Android窗口管理服务WindowManagerService显示窗口动画的原理分析
|
3天前
|
安全 Android开发 iOS开发
探索Android与iOS开发的差异:平台特性与用户体验的对比分析
在移动应用开发的广阔天地中,Android和iOS两大阵营各据一方。本文将深入探讨这两个操作系统在开发环境、编程语言、用户界面设计及市场分布等方面的主要区别。通过比较分析,我们将揭示各自平台的特有优势,并讨论如何根据目标受众和业务需求选择适合的开发平台。
|
4天前
|
前端开发 测试技术 API
探索安卓应用的架构演进:从MVC到MVVM
本篇文章将深入探讨安卓应用开发中的架构演进,特别关注从传统的MVC(Model-View-Controller)到现代流行的MVVM(Model-View-ViewModel)架构的转变。通过对比两种架构的设计理念、实现方式和实际应用案例,解析MVVM在提高代码可维护性和可测试性方面的优势。
8 0
|
4天前
|
前端开发 JavaScript Android开发
手机APP开发|基于安卓APP实现掌上党支部——党员app
手机APP开发|基于安卓APP实现掌上党支部——党员app
|
4天前
|
安全 Java Android开发
探索Android与iOS开发的差异与挑战
在移动应用开发的广阔天地里,Android和iOS两大平台各自占据半壁江山。本文将深入探讨这两个平台的开发环境、工具、语言以及设计理念的差异,并分析这些差异给开发者带来的挑战。我们将从多个角度出发,包括用户界面设计、性能优化、安全性考量、以及市场分布等方面,为读者提供一个全面的视角,以理解在这两个平台上进行开发时需要考虑的关键因素。
|
4天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的安卓的微博客系统的详细设计和实现
基于SpringBoot+Vue+uniapp的安卓的微博客系统的详细设计和实现
5 0
|
4天前
|
JSON Android开发 C++
Android c++ core guideline checker 应用
Android c++ core guideline checker 应用
|
5天前
|
Java Linux Android开发
Android面试题之说说系统的启动流程(总结)
这篇文章概述了Android系统的启动流程,从Boot Rom到Zygote进程和SystemServer的启动。init进程作为用户级别的第一个进程,负责创建文件目录、初始化服务并启动Zygote。Zygote通过预加载资源和创建Socket服务,使用fork函数生成SystemServer进程。fork过程中,子进程继承父进程大部分信息但具有独立的进程ID。Zygote预加载资源以减少后续进程的启动时间,而SystemServer启动众多服务并最终开启Launcher应用。文中还讨论了为何从Zygote而非init或SystemServer fork新进程的原因。
11 2
|
5天前
|
存储 Android开发 Kotlin
Kotlin开发安卓app,在使用 MediaPlayer 播放 res/raw 中的音乐时遇到突然中断的问题,而 onErrorListener 没有接收到任何报错
在使用 Android MediaPlayer 播放 res/raw 中的音乐时遇到中断问题,可能的原因包括资源问题、媒体文件编码格式、生命周期管理和设备资源配置。要排查问题,检查音频文件是否正确包含,格式编码是否支持,MediaPlayer 是否正确管理及释放,以及设备是否有足够存储和配置。通过设置 onErrorListener 日志和确保在 onDestroy 中释放资源来调试。如果文件过大,考虑使用 AssetManager。遵循这些步骤可帮助诊断并解决播放中断的问题。