我的Android進階之旅——)對Java中註釋/**@hide*/的初步認識

 

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

 private static final int MAXIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_ON;

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

報錯內容如下:

BRIGHTNESS_ON cannot be resolved or is not a field

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

    /**
     * Brightness value for fully on.
     * @hide
     */
    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 argetcommonobjJAVA_LIBRARIESramework_intermediatesclasses.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中就不會再報錯瞭。

 

====================================================================================

作者:歐陽鵬 歡迎轉載,與人分享是進步的源泉!

轉載請保留原文地址:https://blog.csdn.net/ouyang_peng

===================================================================================

 

發佈留言