androidstudio入门
1. android studio是什么
Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA。
Android Studio 提供的功能:
1、基于Gradle的构建支持。
2、Android 专属的重构和快速修复。
3、提示工具以捕获性能、可用性、版本兼容性等问题。
4、支持ProGuard和应用签名。
5、基于模板的向导来生成常用的 Android 应用设计和组件。
6、功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览。
(1)androidstudio入门扩展阅读:
Android Studio 提供自动构建、依赖项管理和可自定义的构建配置功能。可以将项目配置为包含本地库和托管库,定义包含不同代码和资源的构建变体,并应用不同的代码收缩和应用签名配置。
Android Studio 集成有诸多版本控制工具,例如 GitHub 和 Subversion,让团队能够与项目和构建变更保持同步。利用开源 Gradle 构建系统,可以根据自己的环境量身定制构建,并在一台持续性集成服务器(如 Jenkins)上运行构建。
Android Studio 提供了统一的环境,可在其中开发适用于 Android 手机、平板电脑、Android Wear、Android TV 以及 Android Auto 的应用。可以利用结构化代码模块将项目细分成可独立构建、测试和调试的若干功能单元。
参考资料来源:
网络——Android Studio
Android官网——Android官网
2. Android初学者是选择eclipse还是Android studio
Android Studio
Android Studio
Android Studio
因为很重要所以说三遍。使用Android Studio可以先用着最基本的功能,然后慢慢熟悉它的更多功能。但是使用Eclipse的话,在解决依赖之类的问题时花费的时间就多太多了。
3. 自学android开发的书,基于androidstudio的,
我现在也在自学看的是郭霖的第一行代码
4. android开发,Android Studio和IDEA哪个更好用优势在哪
AndroidStudio是一个Android集成开发环境,基于IntelliJIDEA。因此大体是在IntelliJIDEA的基础上增加了一些对于Android开发的实用功能和一些对于使用者友好的处理。AndroidStudio提供了集成的Android开发工具用于开发和调试。
AndroidStudio与IntelliJIDEA差异:(在IDEA的基础上,AndroidStudio提供)基于Gradle的构建支持。Android专属的重构和快速修复。提示工具以捕获性能、可用性、版本兼容性等问题。支持ProGuard和应用签名。基于模板的向导来生成常用的Android应用设计和组件。功能强大的布局编辑器,可以让你拖拉UI控件并进行效果预览。
总结:AndroidStudio是谷歌主导的未来的Android的开发主流,应尽快转移到此IDE的使用和开发上。
5. 初使用 Android Studio 体验是不是很不好
AndroidStudio、Eclipse+ADT+SDK是两款开发Android应用程序的工具,开发工具对于初学者需要了解AndroidStudio或Eclipse的窗口布局,操作功能,然后慢慢熟悉各个菜单命令习惯Eclipse开发的Android程序员,刚接触AndroidStudio可能会有点“陌生”,从键盘布局到菜单指令,AndroidStudio和Eclipse有所区别,Android项目结构大体还是一样的所有,首先了解AndroidStudio基本操作和窗口介绍,可以比较方便操作AndroidStudio最新AndroidStudio快速入门(开发)指南、一天教你熟悉掌握AndroidStudio开发AndroidProject、初学AndroidStudio项目结构第一课
6. 有没有基于用android studio来编写的安卓开发的书呀,求推荐,谢谢
Android Studio是Google官方推出的安卓开发工具,目前国内介绍这方面的书籍比较少,千夏软件(www.qianxx.com)介绍基本很好的原版介绍Android Studio及相关开发技术的书籍,感兴趣的可以读一下:
Gradle for Android
主要介绍Android Stio构建工具的书籍
Android Studio Application Development
主要介绍使用Android Stio从事应用开发的方方面面
Learn Android Studio
详细的介绍了如何使用Android Stio从事用用开发,并有详细的例子。
7. 求Android的学习视频,最好是Androidstudio的
可以私下联系,某宝有卖
8. 想自学java开发安卓APP,求推真实好用的入门书籍,希望书中讲解工具是android studio
之前买过一本《第一行代码:Android》郭霖的书,写的还不错
9. 有哪些是基于Android studio介绍的Android的基础开发书籍
一.认识android的架构
Android其本质就是在标准的linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
二.搭建环境
搭建开发环境
对国内的开发者来说最痛苦的是无法去访问android开发网站。为了更好的认识世界,对程序员来说,会翻墙也是的一门技术,带你去领略墙外的世界,好了,不废话了, 国内开发者访问(androiddevtools) 上面已经有了所有你要的资源,同时可以下载到我们的主角framework
但是这样的搭建只能去阅读源代码,我们无法去更进一步去实现自己的rom,我们看到锤子的系统在早期的开放rom是自己从新实现了framework的代码,现在看起来他成功了,所以我们还要去搭建android系统的源码编译环境。
搭建源码编译环境
三.开始主题
在一开始写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();
}
}
10. 纯新手 android studio 怎么运行项目
android studio运行HelloWorld详解:
1、打开project视图:
2、在app目录下,build.gradle文件如下
文件路径: project视图下,app/build.gradle
apply plugin: 'com.android.application'
android {
// 编译器选择的版本
compileSdkVersion 14
buildToolsVersion "21.1.1"
// 默认配置
defaultConfig {
// 应用程序包名
applicationId "com.example.shiyanlou.myapplication"
// 最小的版本,即手机需要13的sdk才能运行
minSdkVersion 15
// 目标sdk
targetSdkVersion 21
// app 版本号
versionCode 1
// app 版本名
versionName "1.0"
}
// build 配置,暂不用管
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
// 外接的包需要在下面添加
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
3、在src/main/java/com.example.shiyanlou.myaplication目录下,MainActivity.java
package com.example.shiyanlou.myapplication;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
/**
* 自定义Activity类,要求必须继承android.app.Activity;
* 此处因为新建的时候选择了BlankActivity,默认继承ActionBarActivity
* 由于Activity是android四大组件(Activity(活动),Service(服务),
* BroadcastReceiver(广播接收者),Content Provider(内容提供者))之一, 因此必须在功能清单文件(AndroidManifest.xml)中进行注册,注册方式为:
* <activity
android:name="com.example.shiyanlou.myapplication.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
*/
public class MainActivity extends ActionBarActivity {
/**
* onCreate在Activity被创建时被调用,而且只调用一次,主要用来完成初始化工作
* 需要注意的是,此时的super.onCreate(savedInstanceState);不能省略,它用于保存恢复现场
*/
*
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*
* 将Activity到用户界面设定为R.layout.activity_main,即
* res/layout/activity_main.xml
* 可在build/generated/source/r/debug/com../R.java下查看layout静态内部类中的activity_main的静态成员
* 对应的是res/layout/activity_main.xml*/
setContentView(R.layout.activity_main);
}
/**
* 在用户单击手机上的菜单键时触发,用来弹出菜单
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
/*
* MenuInflater getMenuInflater():得到菜单填充气对象
* MenuInflater.inflate();执行填充操作
* R.menu.main:将菜单界面定位到res/menu/main.xml
*
* R.menu.main:访问R.java中中的静态内部类menu中的静态成员main,
* 对应的资源文件在res/menu/main.xml
*/
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
4、HelloWorld 布局界面如图
文件路径: project视图下,app/src/main/res/layout/activity_main.xml
5、在androidstudio中查看运行结果是通过Android下的Logcat查看的,如下图