目錄結(jié)構(gòu)
一、JDK環(huán)境搭建
1. 什么是JDK
2. 如何下載JDK
3.配置JDK環(huán)境
二敬惦、用命令行工具搭建安卓環(huán)境
1. 下載命令行工具盼理,及其使用
2. 通過命令行工具下載cmdline-tools;latest
3. 通過命令行工具下載安卓SDK
4. 通過命令行工具下載仿真鏡像及模擬器
5. 設(shè)置GRADLE_USER_HOME
三、vscode配置
1. 安裝Android for VS Code插件
2. 添加vscode任務(wù)俄删,嵌入安卓命令行
3. 添加任務(wù)快捷鍵
4. 添加vscode的調(diào)試選項(xiàng)宏怔,利用安卓命令行任務(wù)
5. 利用真機(jī)調(diào)試app
6. 利用模擬器調(diào)試app
四、擴(kuò)展知識
一畴椰、JDK環(huán)境搭建
1. 什么是JDK
Java Development Kit(Java 開發(fā)工具包)的縮寫臊诊。用于 java 程序的開發(fā),提供給程序員使用斜脂。和JDK有個(gè)比較接近的名詞叫做JRE抓艳,JRE的全稱是Java Runtime Environment,JRE是java程序運(yùn)行時(shí)需要提供的運(yùn)行時(shí)環(huán)境帚戳,很顯然JDK會(huì)包含JRE玷或。對于不需要開發(fā)java程序(APP或者前端后臺(tái)服務(wù)器等),而是只需要提供java程序運(yùn)行環(huán)境的只要有JRE就可以了片任。而對于需要開發(fā)java的我們來說偏友,電腦環(huán)境中必須有JDK環(huán)境才能進(jìn)行開發(fā)。
2. 如何下載JDK
- 從Oracle的官網(wǎng)下对供,網(wǎng)址是 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html下載對應(yīng)的版本位他,但是個(gè)人覺得這個(gè)比較慢,而且還要注冊賬戶登錄
- 從別人分享的阿里云下載鏈接下載犁钟,網(wǎng)址是https://blog.csdn.net/xinquanv1/article/details/106304339棱诱,需要選擇對應(yīng)的版本下載,我這邊對應(yīng)選擇的下載地址是https://code.aliyun.com/kar/oracle-jdk/raw/3c932f02aa11e79dc39e4a68f5b0483ec1d32abe/jdk-8u251-windows-x64.exe
3.配置JDK環(huán)境
- 把下載下來的jdk-8u251-windows-x64.exe進(jìn)行安裝涝动,這里建議把所有安卓開發(fā)的軟件都安裝在同一個(gè)目錄下面迈勋,這樣可以方便處理,我這邊安裝目錄是E:\android
- 對Windows的環(huán)境變量進(jìn)行如下設(shè)置醋粟,添加環(huán)境變量
添加環(huán)境變量 CLASSPATH 賦值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
添加環(huán)境變量 JAVA_HOME 賦值 E:\android\jdk1.8.0_251
添加環(huán)境變量 path 增加 %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin
- 打開cmd終端靡菇,并輸入
java -version
,最后顯示如下圖重归,則代表JDK環(huán)境設(shè)置完成
二、用命令行工具搭建安卓環(huán)境
1. 下載命令行工具厦凤,及其使用
- 我們從安卓開發(fā)者的官網(wǎng)上下載命令行工具鼻吮,網(wǎng)址是https://developer.android.google.cn/studio?hl=zh-cn打卡網(wǎng)頁后,不用管Android Studio相關(guān)的下載较鼓,直接往下拉椎木,拉到最底下。然后再向上稍微滾動(dòng)幾下博烂,看到如下界面香椎,選擇相應(yīng)的系統(tǒng)下載即可
- 接著解壓下載的壓縮文件,并把里面的tools解壓到安卓軟件相關(guān)的目錄下禽篱,我這邊是E:\android\sdk
-
把解壓之后的目錄添加到環(huán)境變量path中畜伐,添加E:\android\sdk\tools和E:\android\sdk\tools\bin
- 重新打開一個(gè)新的cmd終端,輸入
sdkmanager --list
會(huì)顯示出你已經(jīng)安裝的包躺率,和其他沒有安裝的包玛界,如下圖所示,其中的Installed packages是已經(jīng)安裝的包列表悼吱,而Available Packages是未安裝的包列表慎框,不是說所有包都必須安裝,安裝我們需要的包即可
2. 通過命令行工具下載基礎(chǔ)工具包
-
使用
sdkmanager --list
輸出可以安裝的包舆绎,我們找到cmdline-tools鲤脏,我們這里安裝最新的版本latest 。找到platform-tools并進(jìn)行安裝吕朵。這里的cmdline-tools其實(shí)就是我們下載的命令行工具猎醇,只是為了符合sdk的路徑添加的path。而platform-tools則是我們app調(diào)試需要用到的工具努溃,比如adb硫嘶、fastboot等
通過
sdkmanager --install cmdline-tools;latest platform-tools
添加環(huán)境變量E:\android\sdk\cmdline-tools\latest\bin和E:\android\sdk\platform-tools到path
3. 通過命令行工具下載安卓SDK
- 確定我們需要開發(fā)的api級別,不同的api對應(yīng)不同的系統(tǒng)版本梧税,具體可以參考https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element?hl=zh-cn我們這里用API 級別為28的sdk
- 使用
sdkmanager --list
輸出可以安裝的包沦疾,我們找到build-tools;28.0.3和platforms;android-28,build-tools;28.0.3是編譯時(shí)對應(yīng)的編譯工具第队,platforms;android-28主要是系統(tǒng)的jar包哮塞,
- 通過
sdkmanager --install build-tools;28.0.3 platforms;android-28
4. 通過命令行工具下載仿真鏡像及模擬器
- 使用
sdkmanager --list
輸出可以安裝的包,我們找到emulator和system-images;android-28;google_apis_playstore;x86_64凳谦,emulator是模擬器忆畅,而system-images;android-28;google_apis_playstore;x86_64則是系統(tǒng)的鏡像文件,鏡像可以隨意尸执,只要是支持android-28的就可以
- 通過
sdkmanager --install emulator system-images;android-28;google_apis_playstore;x86_64
5. 設(shè)置GRADLE_USER_HOME
這里我們?yōu)槭裁匆狦RADLE_USER_HOME家凯,其實(shí)這個(gè)就算不設(shè)置也是可以的沒有什么問題缓醋,因?yàn)闀?huì)默認(rèn)在用戶目錄下創(chuàng)建一個(gè).gradle文件夾由于存放gradle的各個(gè)版本,比如C:\Users\Administrator.gradle绊诲,但是這樣會(huì)有兩點(diǎn)不好送粱,1、切換用戶時(shí)需要重新下載更新掂之。2抗俄、時(shí)間長了,版本多了會(huì)占用c盤存儲(chǔ)世舰,所以我設(shè)置了環(huán)境變量GRADLE_USER_HOME橄镜,并賦值為E:\android\gradlepro,這樣就好了
最后sdk的目錄也完成了冯乘,如下
三、vscode配置
1. 安裝Android for VS Code插件
-
點(diǎn)擊擴(kuò)展按鈕或者通過crtl+shift+x快捷鍵進(jìn)入插件搜索界面晒夹,輸入android回車搜索裆馒,一會(huì)就會(huì)出現(xiàn)如下圖所示界面,點(diǎn)擊邊上的安裝按鈕進(jìn)行安裝丐怯,安裝好后喷好,安裝按鈕會(huì)消失
- 創(chuàng)建原生的app目錄架構(gòu),這個(gè)我們可以直接從一個(gè)原生的架構(gòu)修改读跷,這里為了演示方便直接從碼云clone了他的原生app下來
git clone https://gitee.com/oschina/git-osc-android.git
2. 添加vscode任務(wù)梗搅,嵌入安卓命令行
-
通過快捷鍵F1,彈出下圖所示界面效览,選擇配置生成默認(rèn)任務(wù)无切,選擇創(chuàng)建task.json,再選擇other其他
- 編輯task.json為如下內(nèi)容丐枉,注意修改相關(guān)命令的路徑哆键,下面的模板是直接在原生APP的頂層目錄即gradle的腳本文件夾層
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "AppSignKey",
"type": "shell",
"command": "keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias",
"windows": {
// "command": "${workspaceRoot}\\shell.bat first"
"command": "cd gitoscandroid; del my-release-key.jks; keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias"
// keytool -genkey -v -keystore release.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
// keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "CleanApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew clean",
"windows": {
// "command": "${workspaceRoot}\\shell.bat first"
"command": "${workspaceRoot}\\gradlew.bat clean "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "BuildDebugApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew assembleDebug ",
"windows": {
// "command": "${workspaceRoot}\\shell.bat first"
"command": "${workspaceRoot}\\gradlew.bat assembleDebug "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "InstallDebugApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew installDebug ",
"windows": {
"command": "${workspaceRoot}\\gradlew.bat installDebug "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "InstallReleaseApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew installRelease ",
"windows": {
"command": "${workspaceRoot}\\gradlew.bat installRelease "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
]
}
- 上面的task列表說明
AppSignKey 通過命令行生成簽名文件
CleanApp 通過命令行清除生成目錄
BuildDebugApp 通過命令行編譯調(diào)試APP
InstallDebugApp 通過命令行把調(diào)試APP安裝到手機(jī)或虛擬機(jī)
InstallReleaseApp 通過命令行安裝簽名后的發(fā)布APP
- 在vscode中測試我們創(chuàng)建的task任務(wù)是否正常,按F1并輸入task瘦锹,選擇“運(yùn)行測試任務(wù)”籍嘹,后面會(huì)彈出我們創(chuàng)建的任務(wù)列表,選擇其中的AppSignKey任務(wù)測試是否正常弯院,該任務(wù)會(huì)在項(xiàng)目根目錄下生成一個(gè)叫my-release-key.jks的秘鑰文件辱士,而其alias是 my-alias,這是在AppSignKey定死的听绳,小伙伴也可以自行修改相關(guān)的參數(shù)颂碘。這里要注意在生成秘鑰文件時(shí)需要輸入相關(guān)信息和密碼,我們這里需要把密碼記錄下來辫红,比如我這里把兩個(gè)密碼都設(shè)置為vencol123凭涂,后面生成簽名APP的時(shí)候需要用到
- 接著我們選擇BuildDebugApp任務(wù)祝辣,可能出現(xiàn)的問題
- 通過jcenter下載文件失敗,這里需要把jcenter()修改成
maven { url 'https://maven.aliyun.com/repository/jcenter' }
//maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
- local.properties文件找不到切油,這是因?yàn)榇a云用local.properties控制某些項(xiàng)目在本地而不提交到服務(wù)器蝙斜,這里我們只要新建一個(gè)local.properties文件,并輸入如下內(nèi)容
RELEASE_STORE_FILE="my-release-key.jks"
RELEASE_STORE_PASSWORD=vencol123
RELEASE_KEY_ALIAS=my-alias
RELEASE_KEY_PASSWORD=vencol123
- Keystore file "my-release-key.jks" not found for signing config 'release'.澎胡,修改app目錄下的build.gradle文件孕荠,把signingConfigs里面配置的storeFile file(propertyStoreFileStr)替換成storeFile file("my-release-key.jks")。my-release-key.jks這個(gè)和build.gradle在同一層目錄下
3. 添加任務(wù)快捷鍵
- 我們簽名已經(jīng)熟練使用了F1---》運(yùn)行task---》選擇我們建立的task的方式運(yùn)行任務(wù)了攻谁,這里我們介紹一種設(shè)置vscode快捷鍵的方式調(diào)用任務(wù)
-
我們按下F1稚伍,接著輸入key,接著彈出如下界面戚宦,我們在這里選擇open keyboard shortcuts(json)的選項(xiàng)个曙,接著彈出keybinding.json文件
- 在keybinding.json文件中,添加如下內(nèi)容
{
"key": "F6",
"command": "workbench.action.tasks.runTask",
"args": "InstallReleaseApp"
},
{
"key": "F7",
"command": "workbench.action.tasks.runTask",
"args": "BuildDebugApp"
},
{
"key": "F8",
"command": "workbench.action.tasks.runTask",
"args": "CleanApp"
},
{
"key": "F9",
"command": "workbench.action.tasks.runTask",
"args": "AppSignKey"
},
- 添加的快捷鍵為F6到F9受楼,對應(yīng)關(guān)系如下
F6--->InstallReleaseApp垦搬,安裝發(fā)布版本的APP到手機(jī),需要先生成秘鑰
F7--->BuildDebugApp艳汽,編譯調(diào)試版本的APP
F6--->CleanApp猴贰,清除APP的編譯信息
F6--->AppSignKey,生成秘鑰
4. 添加vscode的調(diào)試選項(xiàng)河狐,利用安卓命令行任務(wù)
-
在安裝了Android for VS Code插件的前提下撑帖,通過運(yùn)行---》添加配置選項(xiàng)---》android著淆,彈出launch.json文件
- 修改launch.json文件湃累,修改相應(yīng)的目錄嘉栓,內(nèi)容如下所示,注意這里添加"preLaunchTask": "InstallDebugApp",意思是在執(zhí)行Android launch之前捐祠,先安裝app
{
// 使用 IntelliSense 了解相關(guān)屬性非驮。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息雏赦,請?jiān)L問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "android",
"request": "launch",
"name": "Android launch",
"appSrcRoot": "${workspaceRoot}/gitoscandroid/src/main",
"apkFile": "${workspaceRoot}/gitoscandroid/build/outputs/apk/debug/app-debug.apk",
"adbPort": 5037,
"preLaunchTask": "InstallDebugApp"
},
{
"type": "android",
"request": "attach",
"name": "Android attach",
"appSrcRoot": "${workspaceRoot}/gitoscandroid/src/main",
"adbPort": 5037,
"processId": "${command:PickAndroidProcess}"
}
]
}
5. 利用真機(jī)調(diào)試app
- 請確保已經(jīng)安裝了adb驅(qū)動(dòng)劫笙,以及手機(jī)已經(jīng)打開了adb調(diào)試功能。驅(qū)動(dòng)安裝正常星岗,設(shè)備管理器中會(huì)出現(xiàn)類似的設(shè)備信息填大,adb interface。如果沒有可以通過驅(qū)動(dòng)精靈等安裝俏橘,也可以下載https://adb.clockworkmod.com/的通用adb驅(qū)動(dòng)進(jìn)行安裝
-
分析AndroidManifest.xml可知允华,碼云APP的首頁是WelcomePage,這里我們找到WelcomePage的源碼,及在其啟動(dòng)的時(shí)候打上調(diào)試斷點(diǎn)靴寂,看下是否能斷點(diǎn)調(diào)試磷蜀,選擇Android launch,按下F5選擇進(jìn)行調(diào)試如下圖所示
-
app已經(jīng)正常啟動(dòng)了百炬,但是為什么沒有進(jìn)入我們的調(diào)試斷點(diǎn)褐隆?這個(gè)經(jīng)查找發(fā)現(xiàn),碼云的大佬開發(fā)是直接把debug的配置配置成release配置的剖踊,也就是debug和release是一樣的沒有調(diào)試信息在app里面庶弃,因?yàn)闊o法在線調(diào)試,下面是其build.gradle的信息
- 可能出現(xiàn)問題德澈,是因?yàn)锳PP的目錄設(shè)置有問題歇攻,請具體修改
Launch failed: APK read error. ENOENT: no such file or directory, open 'Gbuild\outputs\apk\debug\app-debug.apk'
6. 利用模擬器調(diào)試app
- 如果沒有虛擬鏡像,這里首先需要通過命令行創(chuàng)建一個(gè)鏡像
avdmanager create avd -n base -k "system-images;android-28;google_apis_playstore;x86_64 -p "E:\android\avd" -c 1000M
參數(shù)-n梆造,表示的是創(chuàng)建后avd鏡像的名稱
參數(shù)-k缴守,表示的是用于創(chuàng)建的基礎(chǔ)鏡像,這個(gè)選擇我們之前下載的鏡像
參數(shù)-p镇辉,表示avd鏡像放置的目錄
參數(shù)-c斧散,表示的是創(chuàng)建avd鏡像系統(tǒng)的大小
- 創(chuàng)建好鏡像后,可以通過使用emulator的方式對鏡像進(jìn)行啟動(dòng)測試摊聋,其中avd參數(shù)后面輸入的是avd鏡像的名字,如無意外就可以正常啟動(dòng)模擬器了
emulator -avd base
-
接著我們到vscode代碼目錄下栈暇,按下F5麻裁,如果沒有連接手機(jī)也沒有啟動(dòng)的模擬器,需要先啟動(dòng)模擬器
- 可能出現(xiàn)問題
'gitoscandroid:debug': Could not find build of variant which supports density 160 and an ABI in x86_64, x86
源祈,是因?yàn)樵赽uild.gradle煎源,沒有配置對x86的支持,這里我們直接添加即可abiFilters 'armeabi-v7a','x86'
四香缺、擴(kuò)展知識
這里介紹下vscode還可以通過react-native混合開發(fā)原生的APP和移動(dòng)APP手销,對應(yīng)的android目錄下可以放置安卓原生的工程文件,但是要修改build.gradle文件支持react-native插件图张。但是有個(gè)奇怪的問題锋拖,在vscode里面通過react-native調(diào)試APP的時(shí)候,似乎必須要把mainactive設(shè)置為頂層界面才可以調(diào)試祸轮,具體可以參考網(wǎng)址https://blog.csdn.net/qq_27082837/article/details/57409212
https://www.zhangshengrong.com/p/On1vqPvxXy/