当前位置:首页 » 安卓系统 » androidframework下载

androidframework下载

发布时间: 2023-04-26 08:10:51

Ⅰ android手机里面的framework文件夹

anim是存放动画特效之类的伦理来说全android手机都通用。替换方法,你解压你喜欢的特效 用winrar打开提取出来的主题,只打开不要解压,然后按路径把特效拖到对应的文件夹。ok
drawable文件夹里面的default_wallpaper.jpg 就是主题默认背背景。
(准备好一张960*540的jpg图片,改名为default_wallpaper。用winrar打开提取出来的主题,只打开不要解压。放到res/drawable里)
drawable-mdpi文件夹, (主要是修改这里 主题相关的都在这里)
3.修改主题 (这里是最繁琐的)
电池、信号、通知栏、对话框什么的都在里面修改
电池:stat_sys_battery_0.png-sta到sys_battery_unknown.png都是电池
信号:stat_sys_signal_0.png到stat_sys_signal_null.png都是信号状态栏:status_bar_background.9.png 这个在SystemUI.apk里
去黑线:title_bar_shadow.9.png要屏幕透明的修改这个去黑白线
下拉菜单:status_bar_background.png和status_bar_background_cust.png
下拉棒:status_bar_background.png和status_bar_background_cust.png
通知栏:status_bar_item_app_background_normal.9.png和status_bar_item_background_normal.9.png
通知栏中国电信:status_bar_header_background.9.png
通知栏正在进行:title_bar_portrait.9.png
菜单设置条:activity_title_bar.9.png
二级菜单设置条:dark_header.9.png
其他的都自己找吧,很容易找的 实在找不到就一张张图放大吧!
只要不解压,修改过的framework-res.apk都能安全的使用。不用签名!

去系统里所有小横线教程divider开头的文件图标
divider_vertical_dark_opaque.9.png
divider_vertical_dark.9.png

divider_vertical_bright_opaque.9.png
divider_vertical_bright.9.png

divider_horizontal_textfield.9.png
divider_horizontal_dim_dark.9.png
divider_horizontal_dark_opaque.9.png
divider_horizontal_dark.9.png
divider_horizontal_bright_opaque.9.png
divider_horizontal_bright.9.png
dialog_divider_horizontal_light.9.png

Ⅱ Android Framework 之 使用系统编译的文件 添加到 SDK 的源码

在上一篇文章中: Android Framework 添加新的 系统服务
我们添加了 新的 系统服务 DemoManagerService, 客户端可以通过 DemoManager.java 访问
但是 使用 Android Studio 新建一个项目时,是不能直接使用DemoManager.java, 因为当前Android Studio使用的是Google 原生的SDK (API31),并没没有我们新增的服务.
由此,产生一个debug 的需求: 使用系统编译的文件 替换掉 SDK 的源码
以达到我们可以在Android studio 可以使用新的服务。

总的思想是,将新增、修改的类的编译成字节码文件,然后把它放到 android.jar中.

(JAVA_LIBRARIES, 不同厂商产物不一样)
例如路径: androidout argetcommonobjJAVA_LIBRARIESframework_intermediates
然后解压这个路径下 class 的 jar 包
则可以在路径:
(1) androidapp 下, 找到:

(2) androidcontent

先找到 如: [SDK安装路径]platformsandroid-31目录,
将目录下的 android.jar 解压,将上面的五个文件, 添加到SDK 源码对应的目录中,即

[SDK安装路径]platformsandroid-31androidandroidapp
[SDK安装路径]platformsandroid-31androidandroidcontent

然后,重新压缩 android文件, 并把后缀改为 android.jar (即替换掉原来的android.jar)

则可以使用DemoManager

Ⅲ 怎么开发android framework

一.认识android的架构
Android其本质就是在标准的linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

二.搭建环境
搭建开发环境
对国内的开发者来说最痛苦的是无法去访问android开发网站。为了更好的认识世界,对程序员来说,会翻墙也是的一门技术,带你去领略墙外的世界,好了,不废话了, 国内开发者访问(androiddevtools) 上面已经有了所有你要的资源,同时可以下载到我们的主角framework

但是这样的搭建只能去阅读源代码,我们无法去更进一步去实现自己的rom,我们看到锤子的系统在早期的开放rom是自己从新实现了framework的代码,现在看起来他成功了,所以我们还要去搭建android系统的源码编译环境。

搭建源码编译环境
http://www.cnblogs.com/bluestorm/p/4419135.html
https://source.android.com/source/downloading.html(这里详细的介绍了如何下载编译)
三.开始主题

在一开始写c程序的时候都有一个运行的入口,比如
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

//这里的main就是应用的入口
int main(int argc, const char * argv[]){
return 0;
}

在计算机网络原理中我们用socket实现一个服务器端,不断的接听客户端的访问,而且他的代码是这样实现的:
#include <winsock2.h>
#pragma comment(lib, "WS2_32.lib")

#include <stdio.h>
void main()
{
WORD wVersionRequested;//版本号
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(2, 2);//2.2版本的套接字
//加载套接字库,如果失败返回
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
return;
}

//判断高低字节是不是2,如果不是2.2的版本则退出
if (LOBYTE(wsaData.wVersion) != 2 ||

HIBYTE(wsaData.wVersion) != 2)

{
return;
}

//创建流式套接字,基于TCP(SOCK_STREAM)

SOCKET socSrv = socket(AF_INET, SOCK_STREAM, 0);

//Socket地址结构体的创建

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//转换Unsigned long型为网络字节序格
addrSrv.sin_family = AF_INET;//指定地址簇
addrSrv.sin_port = htons(6000);
//指定端口号,除sin_family参数外,其它参数都是网络字节序,因此需要转换

//将套接字绑定到一个端口号和本地地址上
bind(socSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));//必须用sizeof,strlen不行

listen(socSrv, 5);

SOCKADDR_IN addrClient;//字义用来接收客户端Socket的结构体

int len = sizeof(SOCKADDR);//初始化参数,这个参数必须进行初始化,sizeof

//循环等待接受客户端发送请求

while (1)
{
//等待客户请求到来;当请求到来后,接受连接请求,

//返回一个新的对应于此次连接的套接字(accept)。
//此时程序在此发生阻塞

SOCKET sockConn = accept(socSrv, (SOCKADDR*)&addrClient, &len);

char sendBuf[100];

sprintf(sendBuf, "Welcome %s to JoyChou",

inet_ntoa(addrClient.sin_addr));//格式化输出

//用返回的套接字和客户端进行通信

send(sockConn, sendBuf, strlen(sendBuf)+1, 0);//多发送一个字节

//接收数据

char recvBuf[100];

recv(sockConn, recvBuf, 100, 0);

printf("%s\\n", recvBuf);
closesocket(sockConn);

}
}

他采用了一个while死循环去监听客户端的请求。
在一遍啰嗦之后,主角终于闪亮的登场了。

先上源代码
public final class ActivityThread {

public static void main(String[] args) {
SamplingProfilerIntegration.start();

CloseGuard.setEnabled(false);

Environment.initForCurrentUser();

EventLogger.setReporter(new EventLoggingReporter());

Security.addProvider(new AndroidKeyStoreProvider());

final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);

Process.setArgV0("<pre-initialized>");

Looper.prepareMainLooper();

//从中可以看到为app开辟了一个线程进入了looper之中

ActivityThread thread = new ActivityThread();
thread.attach(false);

if (sMainThreadHandler == null) {
sMainThreadHandler = thread.getHandler();
}

AsyncTask.init();

if (false) {
Looper.myLooper().setMessageLogging(new
LogPrinter(Log.DEBUG, "ActivityThread"));
}

Looper.loop();

throw new RuntimeException("Main thread loop unexpectedly exited");
}

}

看到源码失望了,没有一个while循环啊,其实用了他方法实现
//用一个looper的机制循环监听响应
Looper.prepareMainLooper();

Looper.loop();

进一步深入代码
public static void loop() {
final Looper me = myLooper();
if (me == null) {
throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread.");
}
final MessageQueue queue = me.mQueue;

Binder.clearCallingIdentity();
final long ident = Binder.clearCallingIdentity();

// 在这里看到了一个循环监听消息

for (;;) {
Message msg = queue.next(); // might block
if (msg == null) {
// No message indicates that the message queue is quitting.
return;
}

Printer logging = me.mLogging;
if (logging != null) {
logging.println(">>>>> Dispatching to " + msg.target + " " +
msg.callback + ": " + msg.what);
}

msg.target.dispatchMessage(msg);

if (logging != null) {
logging.println("<<<<< Finished to " + msg.target + " " + msg.callback);
}

// Make sure that ring the course of dispatching the
// identity of the thread wasn't corrupted.
final long newIdent = Binder.clearCallingIdentity();
if (ident != newIdent) {
Log.wtf(TAG, "Thread identity changed from 0x"
+ Long.toHexString(ident) + " to 0x"
+ Long.toHexString(newIdent) + " while dispatching to "
+ msg.target.getClass().getName() + " "
+ msg.callback + " what=" + msg.what);
}

msg.recycleUnchecked();
}
}

Ⅳ android Framework——普通应用的安装

由上篇文章 Android Framework——AMS、PMS的启动流程 我们知道apk的安指空装实际是PackageInstaller这个类帮我们完成的。我们都知道Android7.0之后无法使用file://的URL所以我们直接分析android 8.0的源码

http://androidxref.com/8.0.0_r4/xref/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallStart.java

packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java

PackageInstallerActivity源码

上面源码分析到bindUi我们看下源码

实际就是设置布局并且设置点击事件,我们主要看mok的点击事件

通过startActivity跳转到InstallInstalling

http://androidxref.com/8.0.0_r4/xref/frameworks/base/services/core/java/com/android/server/pm/PackageInstallerSession.java

mPm实际是PMS也就是说此时会到PMS的唯物瞎installStage方法

实际就是做了两件事情:
将apk信息封装到Session中,然后调用PackageInstaller.session的commit方法,最后交给pms进行处理

startCopy方法

handleStartCopy方法

installArgs是个抽象类,实现类有三个:FIleInstallArgs(处理data分区)、AsecInstallArgs(SD卡分区)、MoveInstallArgs(已安装APK的移动逻辑)

以FileInstallArgs为例蚂瞎,FileInstallArgs的Apk

Ⅳ 什么是android framework

说简单点,Framework具体的工作也就是为android应用开发的开发人员提供了一系列的服务和API的接口。
能够从源码下载到编译,到移植进开发板都能顺利的完成" 你的这些经验挺符合要求的啊,招聘信息里写的"Android Framework"指的应该就是/frameworks/base,多数是Java代码。看样子他们是在做Android设备,厂商一般是做移植,然后根据自己产品的特点可能会在frameworks及整个平台里加自己的扩展功能。
http://blog.csdn.net/coding_or_coded/article/details/6822029

Ⅵ Android Framework media providers 随笔

遇到一个问题是多媒体扫描失败:

从logcat 中可以看到的时候 这个服务 com.android.providers.media/.MediaScannerService 启动超时了

1、com.android.providers.media 和 com.android.providers.media/.MediaScannerService 到底是在哪里定义声明的?

2、Why com.android.providers.media/.MediaProvider is crashing?

带着问题扩展开来学习,遇到什么记录什么,慢慢搭建系统的体系

平台:Android 7.1

1、com.android.providers.media 与 MediaScannerService

看 frameworks.java 的构造方法和connect 方法, 其注释和接口实现可以回答之前的疑问

如下接口通过

​ new ComponentName("com.android.providers.media",
​ "com.android.providers.media.MediaScannerService"));

而 MediaScannerService 我们只需要看如下文件中的注释就对其流程有一个清晰的了解

frameworks.java

2、Why com.android.providers.media/.MediaProvider is crashing?

frameworks.java getContentProviderImpl函数中会对 OomAdj 优先级进行调整,如果调整失败和判断进程不可活, 则调用 appDiedLocked kill 其进程

其实最后之所以把文章标题写为随笔,就是还有未完成的事情要做。

虽然把 1 的疑问找到地方了,但是其实是引出来了更多疑问,什么时候调用,其他层逻辑实现

转一篇文章看看 Android开发——MediaProvider源码分析(1)

同样2 也是,OomAdj 为什么会调整失败,调整失败后怎么做 等等...

这些都是会引发新的思考,并且跟自身已有的知识点联系起来,所以系统知识技能需要不断思考,实践学习

安卓系统怎么制作应用软件

想制作软件先学好java,或顷腊者c,或者c++。
然后下载一个Android
SDK然后弄个Eclipse,装个雀并滑Android
Develop
Toolkit(Eclipse的插件)
主蔽首体是Java,使用Android
Framework
入门建议看看那个Android
Developer组的《Android开发教程&笔记》
不难的。

热点内容
酷派内置存储空间不足 发布:2025-09-16 15:50:44 浏览:397
php设置编码格式 发布:2025-09-16 15:20:04 浏览:610
php取两位小数点 发布:2025-09-16 15:12:40 浏览:313
加密块流加密 发布:2025-09-16 15:07:36 浏览:698
sqldeveloper导出表 发布:2025-09-16 15:07:33 浏览:364
xbox360ftp 发布:2025-09-16 14:45:34 浏览:849
火车站附近wifi密码是多少 发布:2025-09-16 14:45:30 浏览:192
国家标准加密 发布:2025-09-16 14:45:27 浏览:951
php集成支付宝 发布:2025-09-16 14:05:28 浏览:721
php的pregmatchall 发布:2025-09-16 14:04:43 浏览:440