android基礎——對Java中註釋/**@hide*/的初步認識

  今天寫一個調節系統背光亮度的時候,參考了Android中的Setting源碼,在源碼中有這麼一段代碼:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. private static final int MAXIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_ON;  

        然後我模仿它的代碼,來進行編寫我的應用,但是當我copy這段代碼後報錯

     報錯內容如下:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. BRIGHTNESS_ON cannot be resolved or is not a field  

 然後我去察看源代碼,發現定義如下:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. /** 
  2.  * Brightness value for fully on. 
  3.  * @hide 
  4.  */  
  5. public static final int BRIGHTNESS_ON = 255;  

      明顯聲明爲public,怎麼可能會訪問不到呢?再細看註釋,發現裏面有“@hide”這個標誌。後來百度一下才認識到,類或API是否開放,是通過doc的註釋{@hide}來控制的。這表示不對外公開api,但是系統內部是可以使用該註釋標記的接口的。

       google 給了兩個選擇:1. 在你添加的API或者變量前面,增加javadoc 註釋@hide。但是要注意的是,並不是簡單寫個@hide 或者 /*@hide*/ 就可以了,這些都是錯誤的javadoc註釋格式,標準的javadoc都是這樣的 /** */ 而且對於 format 變量 應該加上 { }。所以我們應該這樣寫 /** {@hide} */ 2. 你就是想要生成的javadoc裏面出現這個方法或者變量,你必須輸入:make update-api 但是如果修改的是google沒有開放出來的類,比如RIL,PhoneFactory,就不會出現這個問題。

       如何解決這個報錯的問題呢,問了一下公司的前輩,前輩是這麼解釋的,加入了 /** {@hide} */ 注視後的類或者API是google編譯時不對外開放的,但是運行的時候這寫類和API都是可以訪問的。爲了在Eclipse中不報錯的話,可以準備以下幾步就可以不報錯了。

1,準備好編譯後的Android源碼。
2,在該源碼的out目錄下尋找包含你所用隱藏類的jar文件,通常文件名爲classes.jar。例如framework的jar文件爲out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar。


3,在eclipse的Android項目中,選擇項目屬性->Java Build Path->Libraries->Add Library->User Library->Next-> UserLibraries進入到User Libraries管理界面,點擊New新建一個User Library,比如android_framework,點擊Add Jars把Jar包加入到建立的User Library中,最後點擊OK就可以了。

現在在Eclipse中就不會再報錯了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章