A. intellij idea怎麼創建一個android app
IntelliJ IDEA社區版作為一個輕量級的java開發IDE,是一個開箱即用的Android開發工具。
注意:在本次的教程中我們將以Android平台2.2為例進行IntelliJ IDEA的使用說明,Android 2.2雖然是一個很老的Android SDK版本,但是這樣可以保證你所開發的應用程序可以在更多的設備上進行測試,用以確定程序的硬體設備兼容性。
1 啟動Create New Project向導
在IntelliJ IDEA的主頁面上,啟動Create New Project向導。
下一步需要用戶選擇想創建項目的類型:選擇需要創建的Android模塊類型。每一個選擇對應一個不同的項目模板。
2 選擇項目模板
從下圖的對話框中選擇項目模板,然後進入創建項目的基本信息設置。
最常見的選擇是Application Mole。這個選項將讓IntelliJ IDEA按照一些預定義的結構安排項目。在這種情況下用戶可以照原來的樣子編譯項目,之後得到一個幾乎是空的,但功能齊全的Android應用程序。如果選擇Empty Mole選項,IntelliJ IDEA將為指定的Android平台提供一個簡單的空項目,不會生成額外的內容。Library Mole則是用於構建共享代碼類庫。
在這里我們選擇Application Mole,輸入項目名稱和目標文件夾。更重要的是,用戶應該選擇目標Android平台。這個時候下拉列表已經通過SDK Manager預裝好用戶所選定的平台。點擊Next進入下一步。
如果Java SDK或Android SDK沒有安裝或者配置錯誤,用戶可能會遇到一些麻煩。這個時候可以單擊File → Project Structure解決這些可能遇到的問題。
3 編輯項目屬性
下面的對話框包含了應用程序名稱和程序包名,並允許用戶設置目標設備和啟動activity。
程序包的名稱應該是com.xxx.yyy的格式,xxx通常代表公司名稱,yyy是應用程序名稱。當然用戶可以在這里使用任何名稱,但這個建議會極大降低與其他應用程序名稱沖突的風險。
IntelliJ IDEA提供創建一個名為MyActivity的示例activity。在安卓開發中,activity是一個純Java類,也是任何Android應用程序不可或缺的組成部分。
4 設置目標設備
對話框也可以讓用戶定義IntelliJ IDEA如何運行示例應用程序。有三種基本運行配置:
Show device chooser dialog表明在每次從啟動應用程序時,IDEIntelliJ IDEA將要求用戶選擇通過USB連接模擬器或設備。
USB device表明,IntelliJ IDEA將通過一個USB埠自動嘗試將應用程序部署到任何兼容的設備。通常在用戶想測試在一個物理設備的程序兼容性時使用。
Emulator表明IntelliJ IDEA將該應用程序部署到配置的模擬器。請注意,您還需要設置一個Android虛擬設備(AVD)在模擬器運行應用程序。這一步驟可在幾分鍾之內完成。
一切准備就緒之後,單擊Finish創建項目。
B. 如何搭建 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();
}
}
C. 如何用android studio
一、下載安裝
到http://developer.android.com/sdk/installing/studio.html下載安裝包(dmg文件),打開並將Android
Studio拖動到Applications中去,拷貝完畢即可,可以到應用程序下將圖標拖動到Dock上。
二、新建工程
安裝完成後,選擇默認選項點擊OK即可:
進入Android Studio,開始界面和Xcode有點類似,點擊New
project新建一個工程,新建過程和在Eclipse上差不多,這里就不贅述了。下圖是開始界面:
新建工程完畢後就進入了Android Studio主界面。第一次進去可能如下圖所示什麼也沒有,點擊箭頭所示按鈕展開目錄結構,
展開後可以看到Android Studio的目錄結構,和Eclipse的工程還是有一點區別的:
區別:
1.Android
Studio的目錄結構本來就代表一個workspace,一個workspace裡面可以有Mole,可以將一個Mole理解成Eclipse中的一個Project;
2.目錄中將java代碼和資源文件(圖片、布局文件等)全部歸結為src,在src目錄下有一個main的分組,同時劃分出java和res兩個Group,res和Eclipse下的結構一樣,java下就是源碼的包和類文件;
3.新建文件方式的不同,右鍵選擇New或Command+N後出現新建菜單,類型有Java
Class,也就是一般的java類,File就是普通文件,Package就是建包,值得注意的就是Android
Component,它直接提供了Android中基本組件的創建。
可以選擇創建Android中不同類型的組件:
三、窗口布局及主題介紹
另外,主界面底部有一個名為Android的選項卡,打開可以看到DDMS中的設備信息和Logcat輸出:
頂部工具欄中可以看到和Eclipse中功能一樣的一個選項,這些相信大家都比較熟悉了:
最後需要說明的是,大家看到我的主界面是暗色風格,和Google演示的是一樣的風格,大家第一次使用打開的是默認風格(亮色),如果想要修改的話,進入Preferences(按Command+,)到IDE
Settings下選擇Colors&font並設置Schema
name為Darcula就可以設置成暗色風格,如果需要自己定義樣式,比如字體大小顏色等,可以新建一個Schema來自己定義
四、布局文件編寫(實時預覽)
最炫的功能要來了,實時編寫並預覽布局文件,此項功能著實大大提高開發效率,打開一個xml布局文件點擊右側Preview選項卡即可喚出預覽界面,可以選擇很多尺寸的手機進行預覽:
同時,還可以同時預覽多種不同型號和尺寸的設備,編寫代碼的同時適配多種機型,這不就是當初夢寐以求的嘛!
上面介紹了Android
Studio的基本使用,包括安裝、新建工程、工程結構以及主題設置。下面介紹一些其他技巧,以及與Eclipse之前的一些對比。需要重申一下,我所有的操作與版本是基於Mac系統,在Windows上的同學基本類似,下面就分主題開始吧:
一、從Eclipse導入工程到Android Studio
根據官方的介紹,Android Studio可以兼容Eclipse的現有工程,但需要做一些操作:
首先升級ADT到最新版本,目前為版本號為22(注意和ADT相關的組件最好一並升級,避免後期可能出現的錯誤)
選擇需要從Eclipse導出的工程,右鍵選擇Export並選擇Android下的Generate Gradle Build Files(如下圖):
選擇完畢後並不會導出到其他地方,而是在本地工程生成了一個build.gradle文件,在Eclipse工程中也可以看到,這個文件是Android
Studio識別的,如下圖:
3.隨後進入Android Studio並選擇Import
Project,可以看到剛剛在Eclipse中的項目圖標變成了一個Android機器人圖標,說明轉換成功,這時候選擇工程導入即可:
至此,就完成了從Eclipse導入現有Android工程到Android Studio,現在可以開始對工程進行操作了!
二、Eclipse工程與Android Studio的區別
Eclipse工程可以導入Android Studio運行,而反過來在Android Studio建立的工程不能在Eclipse中運行;
二者的工程結構不一樣,在Eclipse中一個Project就代表一個項目工程,而在Android
Studio中就和Intellij一樣,一個Project代表一個工作空間,相當於Eclipse中的workspace,而在Android
Studio中一個Mole就相當於Eclipse中的一個Project,這個概念需要弄明白,不要混了或覺得糊塗了。
在編輯操作上,在Eclipse中編輯修改後必須手動command+s保存文件,而在Android
Studio中就和Intellij一樣是自動保存的,這一點和第二點和Xcode也是類似的。
工程目錄上的區別,在Eclipse中src部分一般是java文件,res部分是資源文件,包括布局文件和多媒體資源等。在Android
Studio中,可以看下圖的目錄結構:
包括java文件和資源文件全部放到了src目錄下,src目錄下包括一個main文件夾,再下面就是java文件夾和res文件夾,其實這里,java文件夾就相當於Eclipse中的src,res還是那個res,這里想起了本山老師的小品「src已經不是那個src了,res還是那個res」
三、真機運行以及常用快捷鍵
在Android
Studio中點擊界面下方的Android選項卡可以看到Device信息和Logcat,連上設備後打開Android選項卡會檢測真機,成功後會顯示在Device中,點擊頂部的綠色小箭頭就可以開始運行工程了。有一點需要注意的是,運行時可以選擇模擬器也可以選擇真機,由於在Android
Studio中運行工程的時候有一個Device優先順序選擇,如果不設置的話可能會出現只運行在模擬器上的現象,我們可以自行設置一下:先點擊Run菜單選擇Run
Configuration,並選擇你想選擇的目標設備,可以是模擬器和真機,也可以在運行選由用戶選擇:
快捷鍵大家可以對照官方文檔進行熟悉,如下表,也可以自己修改配置選項進行自定義:
個人覺得Android
Studio還是有一定的前景的,這里就需要Google不斷進行完善和改進了,趕緊把大家從Eclipse中解救出來吧。另外,在此期間,大家其實可以嘗試使用一下Intellij
IDEA,這個默認也是集成Android開發環境的。Android
Studio是基於前者改進而來,二者在使用上差不多,也是Eclipse的一個不錯的替代者。下面提供一個Windows版Android Studio下載。