本文適用於從Eclipse轉AndroidStudio的開發者
最近打算寫一個系列的android初級開發教程,預計40篇以上的文章,結合我實際工作中的經驗,寫一些工作中經常用到的技術,讓初學者可以少走彎路,這是本系列的第一篇文章,345大神寫的。
一. 下載安裝
-
JDK安裝並配置JAVA_HOME環境變量
這個就略過了,純小白請自行百度
-
Android Studio安裝
截止到2016年4月9日Android studio的最新穩定版本為2.0,推薦使用該穩定版本。
下載地址:
-
下載地址1 官網下載頁面傳送門
如果下載速度很慢,請復制下載連接到迅雷,萬能的迅雷會幫你提速的。 如果根本打不開請移步地址2
-
下載地址2 AndroidDevTools
你需要的這里基本都會有,強烈推薦到這里下載。
如果本地已經下載有sdk的話推薦下載zip免安裝版,第一次啟動的時候配置下sdk目錄就好。
二. 第一次啟動
- 安裝完過后不要着急啟動,首次啟動會彈出檢查sdk更新組件等設置,點擊finish可能會去下載,如果沒有設置代理的情況下,這個界面會卡很久。
解決方法
- 關閉android sutdio,打開android studio安裝目錄下的bin文件夾,找到idea.properties並打開。
- 在該文件尾部添加如下代碼:
# 禁用首次檢查sdk功能 disable.android.first.run=true
-
重啟android studio就不會再出現sdk設置檢查界面了。
- 啟動完成會看到下面的界面
- 啟動完成會看到下面的界面
點擊Configure選擇SDK Manger可以配置SDK目錄等屬性
點擊左下角連接 啟動SDK Manger 配置SDK更新鏡像
我想說這一步在天朝是必須的,原因我想你懂的
下面說一下SDK更新鏡像網站的使用方法:
具體請參考AndroidDevTools
1. 啟動 Android SDK Manager ,打開主界面,依次選擇『Tools』、『Options…』,彈出『Android SDK Manager - Settings』窗口;
-
在『Android SDK Manager - Settings』窗口中,在『HTTP Proxy Server』和『HTTP Proxy Port』輸入框內填入上面鏡像服務器地址(不包含http://,如下圖)和端口,並且選中『Force https://… sources to be fetched using http://…』復選框。設置完成后單擊『Close』按鈕關閉『Android SDK Manager - Settings』窗口返回到主界面;
-
依次選擇『Packages』、『Reload』。
選擇鏡像網站的時候要注意的是,並不是所有的適合別人的就適合你還有可能根本無法更新,由於服務器遠近帶寬的問題,你應該選擇適合自己的鏡像,怎么選擇。。。。我想說設置成功后選擇更新個沒下載的文件能成功下載更新並且速度不慢的就是合適的
-
主題設置
這個沒什么好講的,但是追求逼格喜歡黑色主題的小伙伴在意這個的不少,這里就上圖說明一下。
啟動頁面點擊 configure->選擇Prefrences->Appearance->Theme->Darcula就是那個黑色Visual Studio風格主題 ->apply完事
如果想要更多字體關鍵詞顏色什么的個性化配置的話推薦到下面的網址下載
http://color-themes.com/?view=index
選擇喜歡的主題下載,下載到的是個jar文件,使用方法:
在AS中選擇File->import settings ->選擇下載的jar文件->勾選editor color 確認
三. 項目工程
- 新建工程
跟着引導一步步來就好了,注意最低兼容版本的選擇,新建項目的時候沒有提供編譯版本的選項,默認當前安裝的sdk的最高版本,AS給提供了幾個Activity模版,模版的實現都是比較經典的,推薦新建一個看一看。
- 工程目錄結構
新建完一個工程 如圖點擊左上結構視圖切換,切換到Project目錄結構(開發中常用的是Android視圖,比較簡潔) 其中 app2和mylibrary是為了方便后面講解新建完成后手動添加的module默認新建工程是沒有的。
-
MyApplication文件夾地位相當Eclipse的Workspace
不同的是AS工程目錄下面多了用於全局項目的配置文件,比較重要的是local.properties、setting.gradle、gradle.properties 、build.gradle和gradle文件夾
- local.properties
其中可以設置你的 sdk、ndk配置,一般情況下不需要改 - settings.gradle
該文件中就僅僅只包含了一句話,聲明所包含的module
比如上面的工程包含三個module
include ':app', ':app2', ':mylibrary' - gradle.properties
gradle編譯用到的一些參數設置 一般情況下不需要改 - buiLd.gradle
定義版本倉庫的依賴和一些gradle的命令一般情況下不需要改
- local.properties
-
Module目錄
這個目錄跟eclipse目錄很像 很容易就能理解各種目錄的對應關系,比較特別的是比eclipse多了一系列mipmap文件夾,mipmap和drawable文件夾一樣都是用來存放圖片的,按官方文檔說法是 mipmap文件夾只放應用圖標。其他需要使用的drawable資源象之前一樣放到對應的drawable文件夾。
新建moudle時drawable文件夾只有默認不帶分辨率參數的,適用於不同分辨率的文件夾需要自己手動建,AS提供了便捷的創建方式
在moudle上右鍵選擇Android resource directory,分別選擇類型drawable 左側列表選擇density 選擇對dpi
如下圖
其他res文件的創建同理。- 打開網上下載AS工程gradle報錯的問題
有時候我們從網上下載了一個demo工程打開后gradle報錯不能運行,這種情況大多數由於gradle版本不一致,AS下載對應版本失敗的問題引起的,一般情況下有兩種解決方法
* 手動下載對應gradle版本到本地目錄
這種方式不推薦有興趣的自行搜索
* 修改要打開工程的gradle配置
參考本地新建工程的相同文件
gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip //修改版本號與本地工程文件相同
build.gradle
dependencies { classpath 'com.android.tools.build:gradle:2.0.0' //修改版本號與本地工程文件相同 }
四. 添加依賴
了解了項目結構之后簡單的編譯運行調試一般來說應該沒有什么問題了,畢竟菜單欄,底部功能窗口功能提示都很明確,下面來說一說比較遇到問題的地方:添加依賴項目或運行第三方工程報錯的問題。
添加依賴一般有三種方式
1. 添加代碼倉庫的依賴
這種方式最簡單直接在項目module的build.gradle 里面的dependencies 里添加一句話,然后重新構建即可,如:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:design:23.3.0' //添加了OKHttp的依賴 compile 'com.squareup.okhttp3:okhttp:3.2.0' }
可以手動添加也可以右鍵項目在open module settings里搜索添加(推薦這種方式)
AS會自動聯網下載添加的依賴 這個一般不需要翻牆
- jar包的依賴
這個是最簡單的也不用聯網,和eclipse一樣把jar包拷貝到libs文件夾內,然后需要重新構建一下項目 點擊菜單欄的構建按鈕即可如圖
構建完成在左側目錄欄里的jar文件左側應該會有尖頭可以展開查看jar包內容
有的jar還需要關聯.so庫 這時候只需要在src目錄的main文件夾下面建一個名為jniLibs的文件夾將so庫拷貝進去即可(與res目錄同級)
3. libray項目的依賴
很多時候我們的要用到從github上下載的項目,把其中提供的library添加到我們的項目中,方法如下 首先導入module然后添加依賴
打開project structure -> 添加新moudle ->在下載的工程文件中 選擇要導入的library的module
注意不是導入下載的整個工程文件夾 而是選擇其中的module文件夾
把導入的library添加到目的項目的依賴中
當導入的library里的項目build.gradle文件里包含一些上傳到版本倉庫的信息的話導入過后可能會報錯,這時候只需要把不必要的信息注釋掉即可,需要保留的是編譯配置,依賴關系,目錄配置。如下
apply plugin: 'com.android.library' //項目編譯信息 android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName "1.0" } } //依賴信息 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:design:23.2.1' }
當然也可以手動把module文件夾拷貝到工程目錄中然后修改settings.gradle文件,不過不推薦這種方式。
五. 快捷鍵
AS的自動提示功能很強大,有輸入過后會自動彈出提示不需要像Eclipse一樣按alt+/才提示,至於其他AS的快捷鍵很多就不一一說明了, 上個圖拿去自行修煉吧
六. 插件安裝
打開Setting頁面 找到Plugins 搜索安裝 如圖
推薦的幾個AS插件,具體用法請自行百度
1. GsonFormat
2. android-butterknife-zelezny
3. JsonOnlineViewer
七. 打多渠道包
國內上線APP一般要從多渠道發布,為了統計渠道安裝量一般需要每個渠道生產一個安裝包,AS自帶多渠道打包功能,多渠道打包功能絕對是AS最實用的功能之一,這里重點講一下。
- 生成簽名文件
簽名文件可以在build->generate signed apk -> 選擇項目 next ->create new生成,方式與eclipse差不多
- 設置打包用的簽名文件
打開module setting 新建一個signing項 選擇簽名文件 填寫簽名文件的密碼別名等
- 新建Flavors配置
作為示例我新建了三個配置並選擇打包用到的簽名配置 一個offline_debug、一個release_360、一個release_baidu
- 修改module的build.gradle和Mainfest文件
按照上一步配置好之后,build.gradle里會多出productFlavors和singConfig配置,我們要修改的是productFlavors部分。
如何修改我們來舉例說明
這是build.gradle文件內修改的部分
defaultConfig { applicationId "com.example.mark.myapplication" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" //BuildConfig.IS_SIGN = false buildConfigField "boolean", "IS_SIGN", "false" } productFlavors { offline_debug { signingConfig signingConfigs.signConfig //這里演示的是一個變量的寫法 manifestPlaceholders = [APP_NAME: "Debug版本"] } release_360 { signingConfig signingConfigs.signConfig //BuildConfig.IS_SIGN = true buildConfigField "boolean", "IS_SIGN", "true" //這里演示的是有多個變量的寫法 manifestPlaceholders = [APP_NAME: "360版本", EXAMPLE: "360"] } release_baidu { signingConfig signingConfigs.signConfig buildConfigField "boolean", "IS_SIGN", "true" manifestPlaceholders = [APP_NAME: "百度版本", EXAMPLE: "baidu"] } }
其中defaultConfig內的 buildConfigField “boolean”, “IS_SIGN”, “false”一句 是在構建項目生成的BuildConfig類中添加一個名為 IS_SIGN 的bool變量,並賦值為false。
這個變量是可以在代碼里使用的,如下面的代碼可以用來切換線上線下的請求地址
public static String BASE_URL; static { if(BuildConfig.IS_SIGN){ BASE_URL = "線上地址"; }else{ BASE_URL = "線下地址"; } }
productFlavors 內的manifestPlaceholders = [APP_NAME: “Debug版本”] 一句的含義是 將AndroidManifest.xml文件里的變量APP_NAME替換為冒號后面的字符串,這句是只有一個要替換的變量的寫法,后面you多個變量的寫法舉例。這個APP_NAME在Manifest文件中的定義格式如下 ${變量名} 在打包的時候gradle會自動把這個占位變量給替換掉。
<activity android:name=".LoginActivity" android:label="${APP_NAME}"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
這種變量定義可以出現在Mainfest中任何需要字符串的位置,我上面只是一個示例,請活學活用不要照搬照抄。
- 打包
同時選中你要打包的配置項 點擊finish 等一會就會同時生成多個APK。
推薦下自己創建的android QQ群: 202928390歡迎大家的加入.
如果你想第一時間看我們的后期文章,掃碼關注公眾號,每個周末都會推送Android開發實戰教程一篇,其余時間我們會推出一些互聯網行業新聞,你還等什么,趕快關注吧,既能學到技術,還能長逼格,出任ceo,贏取白富美。。。。。