Android开发环境准备和常用命令总结
### Android Studio編譯速度優(yōu)化
$ 修改 studio.vmoptions
-Xms512m
-Xmx4096m
-XX:MaxPermSize=2048m
-XX:+HeapDumpOnOutOfMemoryError
-Dfile.encoding=UTF-8
$ 修改 gradle.properties
#開啟守護(hù)進(jìn)程
org.gradle.damen=true
##開啟并行編譯
org.gradle.parallel=true
##啟用新的孵化模式
org.gradle.configureondemand=true
##配置編譯時(shí)的虛擬機(jī)大小
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
$ 修改 編譯設(shè)置項(xiàng)
?
?
?
### JNI: android studio生成h頭文件
1.打開Terminal
2.切換到j(luò)ava文件夾
cd app/src/main/java
3.執(zhí)行 javah -d …/jni -jni xxx.xxx.xxx.XXX
此命令會(huì)生成 頭文件xxx_xxx_xxx_XXX.h 并放到app/src/main/java/jni文件夾下(如果文件夾不存在則自動(dòng)創(chuàng)建)
最新方式:javac -h [生成頭文件的路徑] [java文件路徑]
example: javac -h cpp java/com/rst/sdk/X264Engine.java
?
### adb命令總結(jié)
adb push <local> <remote> : 復(fù)制本地文件到設(shè)備上.例如:adb push e:/folder /data/dataadb pull <remote> [<local>]: 復(fù)制設(shè)備上的文件到本地.例如:adb pull /data/data/folder e:adb shell : 登錄設(shè)備的shelladb shell <command> : 登錄設(shè)備的shell并執(zhí)行command命令.例如:adb shell lsadb emu <command> : 執(zhí)行模擬器控制臺(tái)命令adb logcat [ <filter-spec> ] : 查看設(shè)備的logcat,相當(dāng)于eclipse上的logcat. 例如:adb logcat arcgallery:V表示輸出TAG為arcgallery和級(jí)別在V以上的日志。adb logcat arcgallery:V *:s只輸出TAG為arcgallery,級(jí)別為V的日志 adb forward <local> <remote>: 建立從主機(jī)端口到設(shè)備端口的轉(zhuǎn)發(fā).例如:adb forward tcp:6100 tcp:7100表示建立從主機(jī)端口6100到設(shè)備端口7100的轉(zhuǎn)發(fā)adb jdwp: 列出進(jìn)程IDadb install [-l] [-r] [-s] <file> : 安裝指定路徑的apk文件.例如:adb install c:/data/delivery/package/apk/arcmeidagallery.apkadb uninstall [-k] <package>: 從設(shè)備上移除相應(yīng)的包.例如:adb uninstall arcsoft.android.arcmediagalleryadb bugreport: 查看bug報(bào)告 adb start-server: 啟動(dòng)adb服務(wù)進(jìn)程adb kill-server: 終止服務(wù)進(jìn)程adb get-state: 獲取當(dāng)前設(shè)備的狀態(tài)adb get-serialno: 獲取當(dāng)前設(shè)備序列號(hào)adb status-window: 顯示設(shè)備詳細(xì)狀態(tài)adb remount: 重新掛載“/system”分區(qū)adb reboot: 重啟設(shè)備adb root 以root角色重新進(jìn)入adb usb 以USB模式重新進(jìn)入adb tcpip <port> 以指定端口重新進(jìn)入### SVN命令行大全
1、上傳項(xiàng)目到SVN服務(wù)器上
svn import project_dir(本地項(xiàng)目全路徑) http://192.168.1.242:8080/svn/IOS/Ben/remote_dir(svn項(xiàng)目全路徑) -m "必填, 不填此命令執(zhí)行不會(huì)成功."
注: 服務(wù)器上remote_dir若不存在, 會(huì)自動(dòng)創(chuàng)建;
只會(huì)上傳project_dir目錄下的文件到remote_dir的目錄下
import之后, project_dir并沒有自動(dòng)轉(zhuǎn)化為工作目錄, 需要重新checkout(后面會(huì)用到)
?
2、下載checkout svn項(xiàng)目到本地
svn checkout http://192.168.1.242:8080/svn/IOS/remote_dir (svn項(xiàng)目全路徑)project_dir(本地目錄全路徑) --username 用戶名 --password 密碼
svn checkout 簡(jiǎn)寫:svn co
?
3、添加新文件
svn add file(文件名)
svn add *.php(添加當(dāng)前目錄下所有的php文件)
?
4、提交到版本庫(kù)
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果選擇了保持鎖,就使用--no-unlock開關(guān))
svn commit -m “提交當(dāng)前目錄下的全部在版本控制下的文件“ * ( *表示全部文件 )
例如:svn commit -m "add test file for my test" test.php
svn commit -m “提交我的測(cè)試用test.php“ -N --no-unlock test.php ( 保持鎖就用–no-unlock開關(guān) )
注意:必須帶上-m參數(shù),參數(shù)可以為空("")
svn commit 簡(jiǎn)寫:svn ci
?
5、更新文件
svn update
svn update -r 修正版本 文件名
svn update 文件名
例如:
svn update (后面沒有目錄,默認(rèn)將當(dāng)前目錄以及子目錄下的所有文件都更新到最新版本)
svn update -r 200 test.cpp ( 將版本庫(kù)中的文件 test.cpp 還原到修正版本(revision)200)
svn update test.php ( 更新與版本庫(kù)同步 )
提交的時(shí)候提示過期沖突,需要先 update 修改文件,
然后清除svn resolved,最后再提交commit。
svn update 間寫: svn up
?
6、查看文件或者目錄狀態(tài)
1)svn status path(目錄下的文件和子目錄的狀態(tài),正常狀態(tài)不顯示)
【?:不在svn的控制中;M:內(nèi)容被修改;C:發(fā)生沖突;A:預(yù)定加入到版本庫(kù);K:被鎖定】
2)svn status -v path(顯示文件和子目錄狀態(tài))
第一列保持相同,第二列顯示工作版本號(hào),第三和第四列顯示最后一次修改的版本號(hào)和修改人。
注:svn status、svn diff、svn revert這三條命令在沒有網(wǎng)絡(luò)的情況下也可以執(zhí)行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。
svn status 簡(jiǎn)寫:svn st
?
7、刪除文件
svn delete path -m "delete test fle"
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
推薦使用:
svn delete test.php?
svn ci -m 'delete test file‘?
svn delete 簡(jiǎn)寫:svn del/remove/rm
?
8、查看日志(顯示文件的所有修改記錄,及其版本號(hào)的變化)
svn log path
svn log -l 3查看最新的三條記錄
例如:svn log test.php?
?
9、查看文件詳細(xì)信息
svn info path
例如:svn info test.php
?
10、比較差異
svn diff path(將修改的文件與基礎(chǔ)版本比較)
例如:svn diff test.php
svn diff -r m:n path(對(duì)版本m和版本n比較差異)
例如:svn diff -r 200:201 test.php
svn diff 簡(jiǎn)寫:svn di?
?
11、合并文件(將兩個(gè)版本之間的差異合并到當(dāng)前文件)
svn merge -r m:n path
例如:
svn merge -r 200:205 test.php(將版本200與205之間的差異合并到當(dāng)前文件,但是一般都會(huì)產(chǎn)生沖突,需要處理一下)
?
12、SVN 幫助
svn help 全部功能選項(xiàng)
svn help ci 具體功能的說明
?
13、版本庫(kù)下的文件和目錄列表
svn list path
顯示path目錄下的所有屬于版本庫(kù)的文件和目錄
svn list 簡(jiǎn)寫:svn ls
?
14、創(chuàng)建納入版本控制下的新目錄
svn mkdir newdir?
例如:
svn mkdir -m "Making a new dir." svn://localhost/test/newdir?
用法: 1、mkdir PATH...
2、mkdir URL...
創(chuàng)建版本控制的目錄。
1、每一個(gè)以工作副本 PATH 指定的目錄,都會(huì)創(chuàng)建在本地端,并且加入新增
調(diào)度,以待下一次的提交。
2、每個(gè)以URL指定的目錄,都會(huì)透過立即提交于倉(cāng)庫(kù)中創(chuàng)建。
(在這兩個(gè)情況下,所有的中間目錄都必須事先存在)
注:添加完子目錄后,一定要回到根目錄更新svn update一下,不然在該目錄下提交文件會(huì)提示“提交失敗”
注:如果手動(dòng)在checkout出來的目錄里創(chuàng)建了一個(gè)新文件夾newsubdir,
再用svn mkdir newsubdir命令后,SVN會(huì)提示:
svn: 嘗試用 “svn add”或 “svn add --non-recursive”代替?
svn: 無法創(chuàng)建目錄“hello”: 文件已經(jīng)存在
此時(shí),用如下命令解決:
svn add --non-recursive newsubdir
在進(jìn)入這個(gè)newsubdir文件夾,用ls -a查看它下面的全部目錄與文件,會(huì)發(fā)現(xiàn)多了:.svn目錄
再用 svn mkdir -m "添hello功能模塊文件" svn://localhost/test/newdir/newsubdir 命令,
SVN提示:
svn: File already exists: filesystem '/data/svnroot/test/db', transaction '4541-1',
path '/newdir/newsubdir '
?
15、恢復(fù)本地修改
svn revert: 恢復(fù)原始未改變的工作副本文件 (恢復(fù)大部份的本地修改)。
用法: revert PATH...
注意: 本子命令不會(huì)存取網(wǎng)絡(luò),并且會(huì)解除沖突的狀況。但是它不會(huì)恢復(fù)
被刪除的目錄
svn revert foo.c <- 丟棄對(duì)一個(gè)文件的修改
svn revert --recursive . <-恢復(fù)一整個(gè)目錄的文件,. 為當(dāng)前目錄?
?
16、代碼庫(kù)URL變更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch --relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一個(gè)新的URL,其行為跟“svn update”很像,也會(huì)將
服務(wù)器上文件與本地文件合并。這是將工作副本對(duì)應(yīng)到同一倉(cāng)庫(kù)中某個(gè)分支或者標(biāo)記的
方法。
2、改寫工作副本的URL元數(shù)據(jù),以反映單純的URL上的改變。當(dāng)倉(cāng)庫(kù)的根URL變動(dòng)?
(比如方案名或是主機(jī)名稱變動(dòng)),但是工作副本仍舊對(duì)映到同一倉(cāng)庫(kù)的同一目錄時(shí)使用
這個(gè)命令更新工作副本與倉(cāng)庫(kù)的對(duì)應(yīng)關(guān)系。
svn switch 間寫: svn sw
?
17、解決沖突
svn resolved: 移除工作副本的目錄或文件的“沖突”狀態(tài)。
用法: resolved PATH...
注意: 本子命令不會(huì)依語法來解決沖突或是移除沖突標(biāo)記;
它只是移除沖突的相關(guān)文件,然后讓 PATH 可以再次提交。
?
18、輸出指定文件或URL的內(nèi)容
svn cat 目標(biāo)[@版本]...如果指定了版本,將從指定的版本開始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以寫具體版本號(hào),這樣輸出結(jié)果是可以提交的)
?
19、查看svn版本
svn —-version
?
20、新建分支branchs,在分支上繼續(xù)開發(fā)
1、svn mkdir branches?
2、svn copy svn://server/trunk svn://server/branches/ep -m "init ep"?
?
21、該版本完成,打tag,發(fā)布版本
1、svn mkdir tags?
2、svn copy svn://server/trunk svn://server/tags/release-1.0 -m "1.0 released"?
?
?
使用發(fā)生的一些問題:
1、錯(cuò)誤:
svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found
問題原因是:?
沒有設(shè)置svn編輯器的環(huán)境變量,主要是import、commit中填寫comment要用
解決方法:
1、在 終端中 sudo vim /etc/bashrc 打開文件
加入:export SVN_EDITOR=vim
2、編輯完以后一般需要讓配置文件立即生效,可執(zhí)行命令:
source /etc/bashrc(也可以不進(jìn)行這一步)
?
2、問題:
不小心提交了一些動(dòng)態(tài)改變根本不需要的文件到svn服務(wù)器上
解決:
svn resolved filename 放棄對(duì)文件的修改,
svn ci -m "update" 提交所有文件
svn rm test.log 刪除掉這個(gè)文件。
svn ci -m "update" 再次提交
?
3、發(fā)生沖突:
兩人同時(shí)修改同一文件同一部分,先后提交,出現(xiàn)沖突?
svn ci -m "update"?
svn: Commit failed (details follow):?
svn: Aborting commit: 'test.log' remains in conflict?
解決:
A、放棄自己的更新,使用svn revert(回滾),然后提交。在這種方式下不需要使用svn resolved(解決)
B、放棄自己的更新,使用別人的更新。使用最新獲取的版本覆蓋目標(biāo)文件,執(zhí)行resolved filename并提交(選擇文件—右鍵—解決)。
C、手動(dòng)解決:沖突發(fā)生時(shí),通過和其他用戶溝通之后,手動(dòng)更新目標(biāo)文件。然后執(zhí)行resolved filename來解除沖突,最后提交。
堅(jiān)持使用自己的更新,找到.mine的文件名,恢復(fù)為原文件名,然后執(zhí)行:
svn resolved file_name
?
?
?
?
?
?
?
?
?
?
?
?
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的Android开发环境准备和常用命令总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单几步教你去除开机出现扫描硬盘!
- 下一篇: hello!everyone.大家好,我