欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android開發(fā)源碼,Android源碼

如何使用Android Studio開發(fā)/調試Android源碼

開發(fā)調試環(huán)境: Ubuntu 14/display/IDEADEV/Inotify+Watches+Limit),具體內容如下圖:四、解決源碼中跳轉錯誤問題 ①為當前工程設置正確的SDK和JDK②設置'Modules'的依賴先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了. 如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar) 點擊上圖中'2'指向的'+'并選擇上圖'3'指向的'Jars or directories'選項,依次將frameworks和external文件夾添加進來.如:其它版本的代碼在添加frameworks時可能會顯示成:沒有關系,只是顯示問題,點擊OK還是會把frameworks路徑添加進去的. 如果還有代碼跳轉錯誤,請仿照上面的步驟將相應代碼的路徑或jar文件添加到其Dependencies標簽頁中即可. 五、DEBUG源碼 我們可以通過給剛導入的工程在'Modules'中添加'Android Framework'來讓AS將它作為一個Android工程,從而方便我們調試代碼.可以按照上圖中'1'和'2'來添加Android Framework支持.在代碼中加斷點,然后選擇'Run'-'Attach debugger to Android process'或者直接點擊下圖所示的圖標 在彈出的選擇進程(Choose Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可. 六、其它 代碼中很多地方提示Call requires API Level x.... 出現(xiàn)這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion. 我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。 也可以考慮使用build.gradle來解決該問題。

成都創(chuàng)新互聯(lián)公司主打移動網(wǎng)站、成都網(wǎng)站建設、成都做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡推廣、網(wǎng)站維護、國際域名空間、等互聯(lián)網(wǎng)信息服務,為各行業(yè)提供服務。在技術實力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務,根據(jù)網(wǎng)站的內容與功能再決定采用什么樣的設計。最后,要實現(xiàn)符合網(wǎng)站需求的內容、功能與設計,我們還會規(guī)劃穩(wěn)定安全的技術方案做保障。

Android源碼開發(fā)記錄-自定義系統(tǒng)服務和jar包生成

創(chuàng)建文件 IMyApiService

文件路徑 frameworks/base/core/java/android/os/

定義了一個計算和的方法。

在frameworks/base/Android.mk

LOCAL_SRC_FILES最后加入

創(chuàng)建文件 MyApiService.java

文件路徑 frameworks/base/core/java/com/android/server/

實現(xiàn)aidl的接口,計算參數(shù)和。

(1)Context添加服務名

文件路徑 frameworks/base/core/java/android/content/Context.java

添加

(2)添加啟動服務

文件路徑 frameworks/base/services/java/com/android/server/SystemServer.java

在startOtherServices方法中添加

創(chuàng)建 MyApiManager.java文件

文件路徑 frameworks/base/core/java/android/app/

文件路徑 frameworks/base/core/java/android/app/ContextImpl

添加registerService

記住make update-api

編譯打包完成后,燒寫新的固件。

jar主要為了在android studio編譯環(huán)境中MyApiManager報錯導致編譯不通過問題。

也可以導入frameworks jar包或使用反射。

在源碼目錄packages/app下新建MyJar文件夾

并新建目錄com/myapi/(包名)

在目錄com/myapi/新建文件MyApi.java

具體Android.mk語法這里不做解釋,可以自行查閱

在MyApi目錄下直接運行mm編譯命令(記得先source build/envsetup.sh)

待編譯完成后,jar生成目錄

out/target/common/obj/JAVA_LIBRARIES/Myapi_intermediates/javalib.jar

可更改為其他名稱。

如何使用Eclipse開發(fā)Android源碼

用eclipse?+?ADT作為android開發(fā)工具,?可以說是很方便的,在HelloActivity小程序里我們就感覺到eclipse功能的強大。那么,我們可以用?eclipse來開發(fā)android源碼嗎?如果我們直接把android源碼里一個工程導入eclipse,一般來說都會出現(xiàn)錯誤,說許多類庫(包)找?不到。

今天找到關于怎樣使用eclipse來開發(fā)android源碼的官方文檔:

e7?V/?[:?]!?l*?P+?n0?`

從該文檔和實踐可以總結出幾點:0?J*?f"?t:?q/?i?c

1、可以使用eclipse來編輯JAVA程序、檢查錯誤(主要是類庫包含和語法方面),但是不能在eclipse上編譯運行android源碼,還是得在shell中make(或mm或mmm)

2、android源碼文件夾里提供有一些eclipse配置文件,.?n;?`4?E)?z5?B8?G6?V,?z1?x2?a

.claapath:eclipse工程的配置文件,方便我們直接把android源碼相應的文件和JAVA包導入工程#??%?B9?J,?m!?t%?n0?t*?B9?P'??;?{

android-formatting.xml和android.importorder:這個很重要,主要是用來規(guī)范我們的編碼風格,更容易使我們的代碼風格一致

3、把android源碼作為一個工程導入eclipse時,必須注意兩點

1)、新建的工程必須是java?project,不能是android?project,否則會破壞android源碼(一般是多添加文件/文件夾)

2)、導入前最好檢查.classpath里的文件在android源碼中是否有相應的文件(文件夾),否則也會破壞android源碼(一般是多添加文件/文件夾)

總的來說:!?P"?A+?~'?]%?p9?I5?U7?V;?S;?B

1、用eclipse來編輯代碼、檢查錯誤

2、不在eclipse上編譯、運行android源碼程序,只能在命令行通過make(或mm或mmm)編譯android源碼

3、可以在eclipse上調試android源碼程序(原理:eclipse通過ddms服務器在emulator上進行調試),并可以單步調試、斷點調試。

下面,從官方文檔總結出具體怎樣用eclipse來開發(fā)android源碼

1、建立基本的android開發(fā)環(huán)境3?{#??0?q:?D?k#?k)?\$?R

請參考官方文檔或

2、編譯android源碼

android源碼根目錄下通過make進行編譯,請注意一些配置,具體可參考

3、把eclipse工程配置文件復制到android源碼根目錄下

cp?development/ide/eclipse/.classpath?./

chmod?u+w?.classpath?#?Make?the?copy?writable

4、修改eclipse程序的配置

1)、修改eclipse緩存設置

把eclipse.ini(在eclipse軟件的安裝目錄下)的3個值改為下面的值:

-Xms128m/?i2?t!?A4?p!?Z%?V/?q#?o"?J

-Xmx512m;?J??z8?E.?@'?z'?D'?D3?W

-XX:MaxPermSize=256m

2)、把android-formatting.xml和android.importorder導入eclipse

android-formatting.xml、.classpath和android.importorder都放在development/ide/eclipse/下

android-formatting.xml用來配置eclipse編輯器的代碼風格;android.importorder用來配置eclipse的import的順序和結構。(?S8?q$?p'?T*?x"?\/?H7?a

在window-preferences-java-Code?style-Formatter中導入android-formatting.xml+?X"?y*?b!?N$?m

在window-preferences-java-Code?style-Organize?Imports中導入android.importorder#?F??d5?X"?H.?X

3)、安裝anyedit插件(可選)#?G9?C;?h/?Z?q5?D!?s8?z7?y9?_

在下載并導入eclipse中+?J.?X#?@5??3?r3?U

5、把android源碼作為一個工程導入eclipse

導入前先檢查.classpath里的文件在android源碼中是否有相應的文件(文件夾),否則也會破壞android源碼(一般是多添加文件/文件夾),.classpath里多余的路徑可刪除-?]!?U4?n$?@:?~9?b+?A1?|-?z

新建Java?Project(不是android?project,否則會破壞android源碼),選擇從已存在的工程導入,工程名任意,完成。

導入時,eclipse要build工程,比較慢。導完后,一般都沒有錯誤。"?B(?U??i%?w#?w*?y4?]

6、eclipse上調試android里的程序。

先執(zhí)行:$?K+?H,?r.?},?v.?_??U5?q'?x?~,?I

cd?android源碼目錄

.?build/envsetup.sh

lunch?1?#?to?build?the?emulator

emulator??#?you?should?see?a?GUI?picture?of?a?phone$?q-?{/?n6?z+?{.?k0?O?I0?\-?p

ddms??#?you?should?get?a?splufty?debugging?console

然后在eclipse中配置調試類型和端口:5?z8?t(?q*?A+?o-?g7?L#?_

在Run-Debug?Configurations-Remote?java?application上雙擊,然后,”Host:”設為localhost,”Port:”設為8700,”Connection?Type”為Standard(Socket?Attach)

然后“Apply”-?Q7?I(?\8?v4?B??A9?R/?Q?u

注意,在點擊”Debug”時苦出錯,說8700端口被占用,那么把DDMS程序關掉,重新打開DDMS就OK了。如果提供連不到VM錯誤時,請注意,要先在DDMS中選中某一進程(對應某一應用程序),才能在eclipse執(zhí)行?Debug。.?B%?\*?E!?T,?K7?N8?U??b

在eclipse調試時,可以設斷點、單步調試。估計google團隊也是這樣開發(fā)、調試android應用程序的?X:?n6?t"?|%?B4?E

7、編譯android源碼2??:?`9?i0?O1?U;?E*?|+?Z'?]/?r

執(zhí)行:

cd?android源碼目錄0?v1?Z;?p1?P0?|$?V6?x5?A.?@$?S2?o7?p

.?build/envsetup.sh$?R!?h!?^-?l/?l:?i5?P

那么就會多出mm/mmm等命令,mm/mmm用來編譯模塊(包括C、C++、JAVA程序)。我們也可以直接在?android源碼根目錄下執(zhí)行“make?模塊名”來編譯模塊。

來自開源中國網(wǎng)老槍的分享

Android TV開發(fā)焦點移動源碼分析

點可以理解為選中態(tài),在Android TV上起很重要的作用。一個視圖控件只有在獲得焦點的狀態(tài)下,才能響應按鍵的Click事件。

相對于手機上用手指點擊屏幕產生的Click事件, 在TV中通過點擊遙控器的方向鍵來控制焦點的移動。當焦點移動到目標控件上之后,按下遙控器的確定鍵,才會觸發(fā)一個Click事件,進而去做下一步的處理

在處理焦點的時候,有一些基礎的用法需要知道。

首先,一個控件isFocusable()需要為true才有資格可以獲取到焦點。如果想要在觸摸模式下獲取焦點,需要通過setFocusableInTouchMode(boolean)來設置。也可以直接在xml布局文件中指定:

keyEvent 分發(fā)過程:

而當按下遙控器的按鍵時,會產生一個按鍵事件,就是KeyEvent,包含“上”,“下”,“左”,“右”,“返回”,“確定”等指令。焦點的處理就在KeyEvent的分發(fā)當中完成。

首先,KeyEvent會流轉到ViewRootImpl中開始進行處理,具體方法是內部類 ViewPostImeInputStage 中的 processKeyEvent :

接下來先看一下KeyEvent在view框架中的分發(fā):

這里也是可以做焦點控制,最好是在 event.getAction() == KeyEvent.ACTION_DOWN 進行.

因為android 的 ViewRootlmpl 的 processKeyEvent 焦點搜索與請求的地方 進行了判斷if (event.getAction() == KeyEvent.ACTION_DOWN)

? 首先ViewGroup會一層一層往上執(zhí)行父類的dispatchKeyEvent方法,如果返回true那么父類的dispatchKeyEvent方法就會返回true,也就代表父類消費了該焦點事件,那么焦點事件自然就不會往下進行分發(fā)。

? 然后ViewGroup會判斷mFocused這個view是否為空,如果為空就會return false,焦點繼續(xù)往下傳遞;如果不為空,那就會return mFocused的dispatchKeyEvent方法返回的結果。這個mFocused其實是ViewGroup中當前獲取焦點的子View

發(fā)現(xiàn)執(zhí)行了onKeyListener中的onKey方法,如果onKey方法返回true,那么dispatchKeyEvent方法也會返回true

如果想要修改ViewGroup焦點事件的分發(fā)

? 重寫view的dispatchKeyEvent方法

? 給某個子view設置onKeyListener監(jiān)聽

下面再來看一下如果一個頁面第一次進入,系統(tǒng)是如何確定焦點是定位在哪個view上的

由于DecorView繼承自FrameLayout,這里調用的是ViewGroup的requestFocus

descendantFocusability:

? FOCUS_AFTER_DESCENDANTS:先分發(fā)給Child View進行處理,如果所有的Child View都沒有處理,則自己再處理

? FOCUS_BEFORE_DESCENDANTS:ViewGroup先對焦點進行處理,如果沒有處理則分發(fā)給child View進行處理

? FOCUS_BLOCK_DESCENDANTS:ViewGroup本身進行處理,不管是否處理成功,都不會分發(fā)給ChildView進行處理

因為 PhoneWindow 給 DecoreView 初始化時設置 了 setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS),所以這里默認是FOCUS_AFTER_DESCENDANTS

到此第一次請求焦點的過程基本告一個段落

焦點移動的時候,默認的情況下,會按照一種算法去找在指定移動方向上最近的鄰居。在一些情況下,焦點的移動可能跟開發(fā)者的意圖不符,這時開發(fā)者可以在布局文件中使用下面這些XML屬性來指定下一個焦點對象:

在KeyEvent分發(fā)中已經知道如果分發(fā)過程中event沒有被消耗,就會根據(jù)方向搜索以及請求焦點View

流程一:查找用戶指定的下一個焦點

流程二:獲取搜索方向上所有可以獲取焦點的view,使用算法查找下一個view

addFocusables() 獲取搜索方向上可獲得焦點的view

descendantFocusability屬性決定了ViewGroup和其子view的聚焦優(yōu)先級

? FOCUS_BLOCK_DESCENDANTS:viewgroup會覆蓋子類控件而直接獲得焦點

? FOCUS_BEFORE_DESCENDANTS:viewgroup會覆蓋子類控件而直接獲得焦點

? FOCUS_AFTER_DESCENDANTS:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點

addFocusables 的第一個參數(shù)views是由root決定的。在ViewGroup的focusSearch方法中傳進來的root是DecorView,也可以主動調用FocusFinder的findNextFocus方法,在指定的ViewGroup中查找焦點。

FocusFinder.findNextFocus 查找焦點

網(wǎng)站欄目:android開發(fā)源碼,Android源碼
當前路徑:http://chinadenli.net/article7/dsioeoj.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站App設計網(wǎng)頁設計公司響應式網(wǎng)站企業(yè)建站網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設