日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Ubuntu >内容正文

Ubuntu

【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

發(fā)布時(shí)間:2025/6/17 Ubuntu 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

.

基本上可以導(dǎo)入項(xiàng)目開始使用了 ...

.

作者 : 萬境絕塵

轉(zhuǎn)載請(qǐng)注明出處 :?http://blog.csdn.net/shulianghan/article/details/21035637

.

Android Studio 相關(guān)博客 :?

--?Ubuntu 下 Android Studio 開發(fā)工具使用詳解 :?http://blog.csdn.net/shulianghan/article/details/20855541?;

--?Ubuntu 配置 Android 開發(fā) 環(huán)境 :?http://blog.csdn.net/shulianghan/article/details/20855541?;

.


1. SDK Manager 配置圖標(biāo)消失問題


上來就給我一棒子, 連工程都創(chuàng)建不了, 郁悶 ...





(1) 問題描述


點(diǎn)擊創(chuàng)建工程 : 出現(xiàn)如下的對(duì)話框, 這種對(duì)話框不正常;



問題解析 : 出現(xiàn)上述情況, 是因?yàn)?SDK 沒有配置, 下面是 SDK的情況 :?

-- SDK Manager 選項(xiàng)消失 : Configure 下面沒有 SDK Manager 選項(xiàng)了, 此時(shí) 在 Project Defaults | Project Structure 中也不能配置 SDK 路徑;

-- SDK Manager消失圖 :?


-- Project Structure 無法配置 SDK路徑 圖 :?



(2) 問題解決


出現(xiàn)原因 :?

-- 不是權(quán)限問題 : 之前認(rèn)為是 Android Studio 中相關(guān)執(zhí)行權(quán)限有問題, 后來執(zhí)行了 chmod -R 777 ./* 將整個(gè)Android Studio 都加上了權(quán)限, 還是沒效果;

-- 真正原因 : 插件沒有激活, 在 Configure | Plugin 中, gradle 插件沒有啟用, 這樣使得 SDK 模塊無法使用;

-- 插件激活問題界面 : 可以看出 有 幾個(gè)插件沒有激活, 包括 gradle 插件;




修復(fù)問題 :?

--?激活插件及之后的效果 : 激活插件后會(huì)重啟;


-- 重啟之后查看 Configure : 此時(shí) SDK Manager 圖標(biāo)已經(jīng)出現(xiàn), 但是灰色的, 不能啟動(dòng), 這是因?yàn)闆]有配置 SDK 路徑;


-- 配置SDK 路徑 : Configure | Project Defaults | Project Structure 中, 在 Android SDK 選項(xiàng)中 選擇 SDK 路徑;


-- 查看 SDK Manager 是否可用 : 此時(shí) SDK Manager 圖標(biāo)變亮, 可以執(zhí)行;


-- SDK Manager 管理 : 下載的版本還是比較全的;



現(xiàn)在創(chuàng)建工程 : 界面如下, 正常了 ...





2. 從SVN服務(wù)器上檢出代碼?



(1) 檢出代碼并創(chuàng)建工程


檢出代碼, 將代碼放到新創(chuàng)建的工程中;


彈出 Check from Subversion 對(duì)話框途徑 :?


-- 通過菜單欄 : VCS | Check from Version Control | SubVersion, 即可彈出;

-- 在歡迎界面中 : 選擇?Check from Version Control 選項(xiàng)即可;




檢出項(xiàng)目流程 :?

-- 選擇需要檢出的工程URL, 點(diǎn)擊Checkout按鈕 :?


-- 選擇檢出項(xiàng)目本地存放目錄 :?


-- 選擇工程在本地的存放目錄?: 如果系統(tǒng)生成的不合適, 點(diǎn)擊??鍵可以自己選擇存放工程的本地目錄;


-- 選擇SVN拷貝格式 : ?不懂 選默認(rèn)的 1.7 吧;


-- 輸入賬號(hào)密碼 :?


-- 是否為這個(gè)項(xiàng)目創(chuàng)建一個(gè)工程 : 工程就相當(dāng)于 eclipse中的workspace, 如果選擇否, 該過程就會(huì)執(zhí)行完畢, 工程就會(huì)下載到之前指定的目錄中了;


-- 創(chuàng)建工程 : 在上面的對(duì)話框中選擇是, 就會(huì)彈出創(chuàng)建工程對(duì)話框;


-- 工程的名稱 和 位置 :?


--選擇要導(dǎo)入Project工程的項(xiàng)目 :?


-- 檢查工程的依賴包 :?


-- 檢查module的依賴包 :?


-- 導(dǎo)入工程 : 工程中檢測(cè)到一些框架, 檢查這些條目排除錯(cuò)誤的檢測(cè);


-- 工程項(xiàng)目目錄 :?


-- 更新提交代碼 :??這兩個(gè)鍵分別是 更新 和 提交 代碼的按鈕, 如果項(xiàng)目時(shí)從 SVN 上檢出的, 這兩個(gè)按鈕就可以使用, 否則這兩個(gè)按鈕就不能使用;



(2) 檢出代碼放入已有工程


檢出代碼并導(dǎo)入項(xiàng)目到現(xiàn)有工程中 :?

-- 選擇要檢出的項(xiàng)目地址 :?


-- 選擇項(xiàng)目存放目錄 :?


-- 選擇項(xiàng)目源碼存放目錄 :?


-- 選擇 SVN 工作備份格式 :?


-- 是否創(chuàng)建工程 : 這里選擇否;


-- 上面的內(nèi)容 與 (1) 中檢出版本到新工程 步驟相同, 下面就開始不一樣了;

-- 選擇導(dǎo)入項(xiàng)目 : 菜單欄 File | Import Moudle 選項(xiàng), 彈出下面對(duì)話框, 在對(duì)話框中選擇我們要導(dǎo)入的項(xiàng)目;


-- 選擇創(chuàng)建項(xiàng)目方式 : 選擇從資源中創(chuàng)建一個(gè)項(xiàng)目;


-- 選擇項(xiàng)目中的文件 :?


-- 選擇項(xiàng)目中用到的庫(kù) :?


-- 檢查項(xiàng)目結(jié)構(gòu), 為項(xiàng)目命名 :?


-- 導(dǎo)入項(xiàng)目 :?


-- 項(xiàng)目成功導(dǎo)入到了現(xiàn)有工程 : 可以看到該項(xiàng)目可以更新 和 提交到 SVN服務(wù)器;




3. 導(dǎo)入eclipse工程



(1) 導(dǎo)入 Moudle項(xiàng)目 到現(xiàn)有Project下


導(dǎo)入一個(gè)eclipse中創(chuàng)建的項(xiàng)目到Project下 : eclipse中的項(xiàng)目相當(dāng)于 Android Studio中的Moudle, ?eclipse 中的workspace 相當(dāng)于 Studio中的 Moudle;

-- 選擇導(dǎo)入Moudle : 菜單 File | Import Moudle , 選擇要導(dǎo)入的工程;


-- 選擇導(dǎo)入項(xiàng)目方式 : 從現(xiàn)有資源選擇;


-- 選擇要加入工程的文件目錄 : gen 目錄就不用加了;


-- 檢查項(xiàng)目中用到的庫(kù) :?


-- 檢查項(xiàng)目, 并為項(xiàng)目命名 :?


-- 檢查工程中檢測(cè)到的框架 :?


-- 導(dǎo)入工程(Project)中的項(xiàng)目(Moudle) :?




(2) 導(dǎo)入一個(gè) Project 工程 并導(dǎo)入一系列的 eclipse 項(xiàng)目



數(shù)據(jù)準(zhǔn)備工作 : 創(chuàng)建一個(gè)目錄, 并將 項(xiàng)目源文件拷貝到這個(gè)目錄下, 我們就將這個(gè)目錄當(dāng)做 Project 導(dǎo)入, 目錄中的 工程 當(dāng)做 Moudle 項(xiàng)目 導(dǎo)入;

-- 創(chuàng)建文件并拷貝項(xiàng)目 : 創(chuàng)建一個(gè) my 目錄, 將四個(gè)項(xiàng)目 源文件拷貝到這個(gè)目錄中;

octopus@octopus-Vostro-270s:~/code/my$ ls DisplayTest Hot_Blog ListViewTest TabHost_Test octopus@octopus-Vostro-270s:~/code/my$ pwd /home/octopus/code/my

批量導(dǎo)入eclipse項(xiàng)目流程 :?

-- 歡迎界面中導(dǎo)入 : 在環(huán)境界面中選擇 Import Project;


-- 選擇剛才創(chuàng)建的my目錄 :?


-- 選擇導(dǎo)入工程方式 :?


-- 為 Project 命名 并選擇 工程目錄 :?


-- 選擇 Project 中要導(dǎo)入的文件 :?


-- 選擇依賴包 :?


-- 選擇要導(dǎo)入的項(xiàng)目, 并可以為項(xiàng)目命名 :?


-- 直接覆蓋即可 : 因?yàn)閯偛盼覀儗?項(xiàng)目 拷貝到了 my 目錄下, 此時(shí)需要覆蓋一次;


-- 確認(rèn)檢測(cè)到的工程 :?


-- 工程界面 :?





4. 配置adb工具


獲取 adb 工具路徑 : sdk 中的 platfrom-tools 中, 首先將 sdk 的 platform-tools 和 tools 目錄配置到環(huán)境變量中;

-- 獲取 兩個(gè)目錄的地址 :?/home/octopus/android-studio/sdk/tools 和?/home/octopus/android-studio/sdk/platform-tools ;

octopus@octopus-Vostro-270s:~$ cd android-studio/sdk/tools/ octopus@octopus-Vostro-270s:~/android-studio/sdk/tools$ pwd /home/octopus/android-studio/sdk/tools octopus@octopus-Vostro-270s:~/android-studio/sdk/tools$ cd ../platform-tools/ octopus@octopus-Vostro-270s:~/android-studio/sdk/platform-tools$ pwd /home/octopus/android-studio/sdk/platform-tools


配置環(huán)境變量 :?

-- 配置 .bashrc 文件 : 將上面兩個(gè)目錄配置到 環(huán)境變量中去;?

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH:/home/octopus/android-studio/sdk/tools:/home/octopus/android-studio/sdk/platform-tools


驗(yàn)證是否配置成功 :?
-- 關(guān)掉該終端, 重啟一個(gè)終端 : 查看 adb 版本, 卸載手機(jī)上運(yùn)行的程序 :?

octopus@octopus-Vostro-270s:~$ adb version Android Debug Bridge version 1.0.31 octopus@octopus-Vostro-270s:~$ adb uninstall com.ivt.mHealth Success octopus@octopus-Vostro-270s:~$

5. 在真實(shí)手機(jī)上運(yùn)行 Android 程序


連接手機(jī) : 手機(jī)開啟 USB 調(diào)試, 連接手機(jī), 在 Android Studio 界面中, 就可以查看手機(jī)連接信息;

-- 界面 Android 視圖顯示 :?


-- 啟動(dòng) Android Monitor View 界面 : 點(diǎn)擊??按鈕, 可以進(jìn)入 Android Monitor View 界面, 對(duì)于這個(gè)界面, 就比較熟悉了, 與 eclipse 中差不多;




程序運(yùn)行配置 : 在 菜單盤 Run | Edit Configurations 中配置;

-- 配置默認(rèn)的運(yùn)行方式 : 將默認(rèn)的 Target Device 設(shè)置為 需要彈出選擇對(duì)話框;


-- 也可以在下面的位置進(jìn)入配置對(duì)話框 :?



運(yùn)行Abdroid 程序 :?

-- 運(yùn)行方式 : ?選中 運(yùn)行的 Moudle, 點(diǎn)擊右邊的三角形, 就會(huì)進(jìn)入編譯階段;

-- 彈出選擇設(shè)備對(duì)話框 : 編譯很慢, 至少要半分鐘, 在該對(duì)話框中選擇要運(yùn)行程序的設(shè)備;


-- 運(yùn)行成功 :?


-- 卸載程序 : 在開啟一個(gè)終端, 在命令行使用 adb uninstyall com.ivt.mHealth 就可以將軟件卸載;

octopus@octopus-Vostro-270s:~/code/my$ adb uninstall com.ivt.mHealth Success




6. adb logcat 查看日志用法



(1) 按照標(biāo)簽 和 等級(jí) 查看日志


日志等級(jí) : 由 低級(jí) 向 高級(jí)介紹;

-- V : Verbose, 最低級(jí)的日志等級(jí);

-- D : Debug 級(jí)別;

-- I : Info 級(jí)別;

-- W : Warning 級(jí)別;

-- E : Error 級(jí)別;

-- F : Fatal 級(jí)別;

-- S : Silent 級(jí)別, 這是最高的級(jí)別, 級(jí)別太高, logcat無法打印這種日志;


分析一個(gè)log日志 :

-- 日志格式 : F 代表日志級(jí)別, Enviroment 是日志的標(biāo)簽, 7379 是進(jìn)程id;

F/Environment( 7397): Static storage paths aren't available from AID_SYSTEM

日志過濾輸出 : 可以同時(shí) 添加 多個(gè)過濾器;

-- 日志過濾格式 : 可以使用 ?日志標(biāo)簽 : 日志等級(jí) 作為日志的過濾器;

-- 使用的具體語法 : adb logcat 日志標(biāo)簽:日志等級(jí) 日志標(biāo)簽1:日志等級(jí)1 ...

-- 示例 : 使用 adb logcat *:F 輸出所有的 Fatal 級(jí)別的日志信息;

octopus@octopus-Vostro-270s:~$ adb logcat *:F --------- beginning of /dev/log/system --------- beginning of /dev/log/main F/Environment( 7397): Static storage paths aren't available from AID_SYSTEM F/Environment( 7397): java.lang.Throwable F/Environment( 7397): at android.os.Environment.throwIfSystem(Environment.java:637) F/Environment( 7397): at android.os.Environment.getExternalStorageDirectory(Environment.java:316) F/Environment( 7397): at com.android.MtpApplication.MtpReceiver.onReceive(MtpReceiver.java:1121) F/Environment( 7397): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2445) F/Environment( 7397): at android.app.ActivityThread.access$1600(ActivityThread.java:154) F/Environment( 7397): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1360) F/Environment( 7397): at android.os.Handler.dispatchMessage(Handler.java:99) F/Environment( 7397): at android.os.Looper.loop(Looper.java:137) F/Environment( 7397): at android.app.ActivityThread.main(ActivityThread.java:5306) F/Environment( 7397): at java.lang.reflect.Method.invokeNative(Native Method) F/Environment( 7397): at java.lang.reflect.Method.invoke(Method.java:511) F/Environment( 7397): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) F/Environment( 7397): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) F/Environment( 7397): at dalvik.system.NativeStart.main(Native Method)

(2) 設(shè)定日志格式


日志格式字段 : 使用 adb logcat -v 日志格式 命令可以規(guī)定日志輸出的格式, 只能跟隨一個(gè)格式;

-- brief : 最基本的顯示, 即默認(rèn)的 優(yōu)先級(jí)/標(biāo)簽(進(jìn)程號(hào)):日志信息;

-- process : 只顯示進(jìn)程id;?

-- tag : 只顯示 優(yōu)先級(jí)/標(biāo)簽;

-- thread : 只顯示 優(yōu)先級(jí)/標(biāo)簽 線程id;

-- raw : 只顯示原始的日志信息, 沒有其它字段;

-- time : 顯示日期 時(shí)間, 優(yōu)先級(jí)/標(biāo)簽(進(jìn)程號(hào));

-- long : 顯示所有的元數(shù)據(jù)字段, 并用空行分隔消息內(nèi)容;


輸出示例 :?

--?adb logcat -v brief :?

octopus@octopus-Vostro-270s:~$ adb logcat -v brief --------- beginning of /dev/log/system D/BatteryService( 2252): Sending ACTION_BATTERY_CHANGED. D/STATUSBAR-BatteryController( 2408): onReceive() - ACTION_BATTERY_CHANGED

--?adb logcat -v process :?

mitter.java:206) (System.err) W(29843) at com.ivt.mHealth.datacommunication.impl.BqfjSockPacketTransmitter.access$000(BqfjSockPacketTransmitter.java:25) (System.err) W(29843) at com.ivt.mHealth.datacommunication.impl.BqfjSockPacketTransmitter$1.run(BqfjSockPacketTransmitter.java:101) (System.err)

--?adb logcat -v tag :?

octopus@octopus-Vostro-270s:~$ adb logcat -v tag --------- beginning of /dev/log/system D/STATUSBAR-BatteryController: onReceive() - ACTION_BATTERY_CHANGED D/STATUSBAR-BatteryController: onReceive() - BATTERY_STATUS_DISCHARGING: tw_stat_sys_battery_usb_not_charge

-- adb logcat -v thread :?

octopus@octopus-Vostro-270s:~$ adb logcat -v thread --------- beginning of /dev/log/system D( 2252: 2299) sendNotification(1) - 17303322 D( 2408: 2408) checkOverflow(560), More:false, Req:false Child:7 --? adb logcat -v raw :?

octopus@octopus-Vostro-270s:~$ adb logcat -v raw --------- beginning of /dev/log/system sendNotification(3) - 252119 [SvcLED] turnOff:: id = 4mIsIDUsingPatternLED = true [SvcLED] setSvcLedStateLocked:: id = 4, color = 0, mode = Off, set = Off [SvcLED] ForcedSvcLEDTask is running. [SvcLED] setSvcLedLightLocked : mSvcLedState : 0x0 priority : 6 mSvcLedMode : 0 checkOverflow(560), More:false, Req:false Child:6 waitForAlarm result :8

--?adb logcat -v time :?

octopus@octopus-Vostro-270s:~$ adb logcat -v time --------- beginning of /dev/log/system 03-13 19:01:00.020 D/STATUSBAR-IconMerger( 2408): checkOverflow(560), More:false, Req:false Child:7 03-13 19:01:00.050 D/KeyguardClockWidgetService( 3910): onReceive action=android.intent.action.TIME_TICK 03-13 19:01:08.400 E/Watchdog( 2252): !@Sync 1678 03-13 19:01:12.295 D/BatteryService( 2252): update start

--?adb logcat -v long :?

octopus@octopus-Vostro-270s:~$ adb logcat -v long --------- beginning of /dev/log/system [ 03-13 19:01:12.300 2408: 2408 D/STATUSBAR-BatteryController ] onReceive() - ACTION_BATTERY_CHANGED[ 03-13 19:01:12.300 2408: 2408 D/STATUSBAR-BatteryController ] onReceive() - BATTERY_STATUS_DISCHARGING: tw_stat_sys_battery_usb_not_charge


.

作者?:?萬境絕塵

轉(zhuǎn)載請(qǐng)注明出處?:?http://blog.csdn.net/shulianghan/article/details/21035637

.

總結(jié)

以上是生活随笔為你收集整理的【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。