您当前的位置:首页 > 互联网教程

初学者学习 Android 开发,有什么好网站推荐

发布时间:2025-05-13 17:23:31    发布人:远客网络

初学者学习 Android 开发,有什么好网站推荐

一、初学者学习 Android 开发,有什么好网站推荐

初学者学习Android开发,推荐的网站及资源如下:

1. Android Developers-官方文档,提供全面的Android开发指南和技术参考。

2. Stack Overflow-遇到问题时,总能在Stack Overflow找到答案。

3.投票最多的几个问题-空闲时浏览投票最高的问题,学习他人解决Android开发常见问题的经验。

4.订阅博客-关注中文博客:android-developers.blogspot.com、blog.csdn.net/innost、blog.csdn.net/luoshengy...、blog.csdn.net/Android_T...、blog.csdn.net/hellogv,以及英文博客:cyrilmottier.com、curious-creature.org。

5. Google+-关注Android领域专家,如Dianne Hackborn、Romain Guy、Chris Banes、Roman Nurik、Nick Butcher、Adam Powell、Rich Hyndman、Cyril Mottier、Paul Burke、Jeff Gilfelt、Jake Wharton等。

6.邮件列表-订阅Android Weekly邮件报导,每周获取Android开发最新资讯。

7.阅读系统源码-通过android.git.kernel.org或grepcode.com在线浏览Android源代码。

8. Android开源项目-探索GitHub、f-droid等平台上的开源库、工具、App和组件。

9.必备资源-参考android-arsenal.com,这是一个Android开源库和工具的综合大全。

10.各种自定义组件-浏览androidviews.net,了解不同组件的实现与应用。

11. Android组件搜索引擎-使用theultimateandroidlibrary.com搜索Android相关组件。

12.定期观看PPT-通过slideshare.net搜索Android开发相关的PPT,下载到iPad上观看。

13.工具-利用jgilfelt.github.io/andr...等工具生成Android Action Bar样式,使用android-ui-utils.googlecode.com在线创建图标。

14.资源推荐-阅读文章Resources every Android developer must know,了解更全面的Android开发资源。

以上资源涵盖了从官方文档、社区问答到专家分享、开源项目、工具集等多个方面,为初学者提供了一个全面的学习路径。

二、如何访问android开发者网站

1、谷歌公布了四个官方网站,包括developer.android.com、market.android.com、source.android.com和www.android.com。在我的所在地区,只有www.android.com和market.android.com能够正常访问,而其它两个网站无法登录。

2、如果遇到无法访问developer.android.com和source.android.com的情况,建议尝试访问此链接:。这可能是谷歌为了提供开发者资源而设立的一个备用站点。

3、通过这个备用站点,用户可以找到与开源项目相关的资源,包括代码库、文档和其他重要信息。尽管访问路径有所不同,但开发者依然可以获取所需的技术支持和信息。

4、值得注意的是,不同地区的用户可能遇到的访问问题不同。如果在您的地区也无法访问这些网站,请尝试联系当地的谷歌支持团队,或者查看是否有其他可用的替代资源。

5、对于开发者而言,了解如何访问这些官方网站对于获取最新信息、参与社区讨论以及获取技术支持至关重要。希望以上信息对您有所帮助。

6、最后,鼓励开发者们持续关注官方渠道,以获取最准确、最新的Android开发资讯。

三、如何搭建 android 开发环境

Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。

android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

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

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

在一开始写c程序的时候都有一个运行的入口,比如

int main(int argc, const char* argv[]){

在计算机网络原理中我们用socket实现一个服务器端,不断的接听客户端的访问,而且他的代码是这样实现的:

#pragma comment(lib,"WS2_32.lib")

WORD wVersionRequested;//版本号

wVersionRequested= MAKEWORD(2, 2);//2.2版本的套接字

err= WSAStartup(wVersionRequested,&wsaData);

//判断高低字节是不是2,如果不是2.2的版本则退出

if(LOBYTE(wsaData.wVersion)!= 2||

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

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

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不行

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

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

//等待客户请求到来;当请求到来后,接受连接请求,

//返回一个新的对应于此次连接的套接字(accept)。

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

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

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

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

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

recv(sockConn, recvBuf, 100, 0);

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

他采用了一个while死循环去监听客户端的请求。

public final class ActivityThread{

public static void main(String[] args){

SamplingProfilerIntegration.start();

Environment.initForCurrentUser();

EventLogger.setReporter(new EventLoggingReporter());

Security.addProvider(new AndroidKeyStoreProvider());

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

TrustedCertificateStore.setDefaultUserDirectory(configDir);

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

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

ActivityThread thread= new ActivityThread();

if(sMainThreadHandler== null){

sMainThreadHandler= thread.getHandler();

Looper.myLooper().setMessageLogging(new

LogPrinter(Log.DEBUG,"ActivityThread"));

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

看到源码失望了,没有一个while循环啊,其实用了他方法实现

//用一个looper的机制循环监听响应

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();

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

Message msg= queue.next();// might block

// No message indicates that the message queue is quitting.

logging.println(">>>>> Dispatching to"+ msg.target+""+

msg.target.dispatchMessage(msg);

logging.println("<<<<< Finished to"+ msg.target+""+ msg.callback);

// Make sure that during the course of dispatching the

// identity of the thread wasn't corrupted.

final long newIdent= Binder.clearCallingIdentity();

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);