android使用隱藏api的方法(使用被@hide的api)

來源:互聯網
上載者:User

標籤:

http://blog.sina.com.cn/s/blog_5da93c8f0101e1yj.html

這篇文章主要要介紹的就是通過匯入全編譯的classes.jar包,來實現對隱藏API的使用。這種方法實現簡單,程式員編程也簡單,就像是那些隱藏的API在SDK中變得可見了一樣。它的缺點就是相容性問題,希望使用者引起重視,在使用時考慮清楚。

方法二:添加framework 編譯出來的classes.jar檔案到eclipsebuild path
其實在編譯android的時候,我們將framework 編譯到一個臨時的jar包中了,這個jar包的路徑一般為:
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
我們只需要在linux上android原始碼目錄下使用make 命令即可產生此檔案。

由於這個jar檔案中的api 還沒有重新打包,裡面被@hide掉的api並沒有被去掉。所以我們依然能夠引用裡面被@hide的api。而sdk 中的android.jar檔案時重新打包產生的,其裡標記有@hide的api已經被去掉了。所以我們把 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 拷貝到本地pc上。然後在工程中添加此jar包。
具體方法:
1 . 拷貝linux編譯產生的 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar到本機PC
2,在eclipseAndroid項目中,選擇項目屬性->Java Build Path->Libraries->Add Library->User Library->Next-> UserLibraries進入到User Libraries管理介面,點擊New建立一個User Library,比如android_framework,點擊Add JarsJar包加入到建立的User Library中,最後點擊OK
3.選擇項目屬性->Java Build Path->Order and Export,使用右面的“UP”鍵,把所建立的User Libraries移到Android SDK的上面。這樣做的意思就是優先使用classes.jar中的API,其次使用android.jar中的API。為什麼不直接使用classes.Jar?因為我在使用時發現,android.jar中有的東西classes.jar中沒有。

【實踐】

1. 第一種方式將項目代碼放置到系統原始碼當中,其能夠訪問所有的API,我一般在windows的eclisp當中建立項目,基本OK之後,將代碼 系統當中進行編譯,流程 放置路徑:pizza/package/apps/目錄,添加一個Android.mk檔案,Android.mk裡面的檔案內容

LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS:=optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)

# 根據自己項目需要apk的名稱,其他均不需要修改
LOCAL_PACKAGE_NAME:=TestRemoteSubmix
LOCAL_CERTIFICATE:=platform
include $(BUILD_PACKAGE)

2.第二種方式,也不需要去掉@hide, 也就是不需要修改android系統原始碼,直接將out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar檔案COPY出來,然後按上面的方式加入到windows的eclisp當中。

注意:它classes.jar其裡麵包含了具體方法的實現,在標準的sdk是沒有具體方法的實現

android使用隱藏api的方法(使用被@hide的api)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.