android hide方法 末班,android 如何引用@hide(隐藏)的类,方法和常量?
最近在處理SD卡的讀寫問題,本地Elipse能跑的程序提交到服務器上的時候,報錯,找不到import的類,還有一些方法也是找不到,利用sourceInsight搜了源碼發現都是用了@hide標記的類和方法。
/**
* Description of a storage volume and its capabilities, including the
* filesystem path where it may be mounted.
*
* @hide
*/
public class StorageVolume implements Parcelable {
首先解釋一下為什么在android的源碼中會出現這種標記。@hide掉的一些類和方法是因為這些類,方法是正在開發中或者不穩定的,當用戶引用了這些類或者方法在下一次SDK更新之后可能就找不到了。這個時候程序的穩定性和兼容性都會存在很大的問題。
進入正題,當我們的程序中需要使用到這些方法才能實現我們的功能的時候,我們可以有三種方法去實現。
1、直接將@hide標記去掉,將重新編譯了的android.jar包換掉;
不過強烈的建議不要這樣做,別人隱藏起來的類或者方法肯定是不安全的,如果你把@hide放出來可能引起一些程序不可預知的錯誤。
2、利用反射機制使用@hide方法,這種方法在網上看到一篇不錯的,簡單易懂,要深入的自己再到網上搜
http://blog.csdn.net/annkie/article/details/8466654
3、修改系統文件
3.1修改android.mk文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-ex-camera2-portability
LOCAL_STATIC_JAVA_LIBRARIES += xmp_toolkit
LOCAL_STATIC_JAVA_LIBRARIES += glide
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SRC_FILES += $(call all-java-files-under, src_pd)
LOCAL_SRC_FILES += $(call all-java-files-under, src_pd_gcam)
LOCAL_RESOURCE_DIR += \
$(LOCAL_PATH)/res \
$(LOCAL_PATH)/res_p
include $(LOCAL_PATH)/version.mk
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--version-name "$(version_name_package)" \
--version-code $(version_code_package) \
LOCAL_PACKAGE_NAME := Camera2
#LOCAL_SDK_VERSION := current
LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_JNI_SHARED_LIBRARIES := libjni_tinyplanet libjni_jpegutil
include $(BUILD_PACKAGE)
include $(call all-makefiles-under, $(LOCAL_PATH))將紅色的注釋掉。
LOCAL_SDK_VERSION 用于指定該APK項目所需的SDK版本,current代表了當前android源碼的版本,如果注釋掉就會使應用程序可以訪問被@hide的api
3.2將LOCAL_SDK_VERSION 注釋掉之后提到服務器編譯出現了代碼混淆錯誤。這個時候可以在android.mk文件中將LOCAL_PROGUARD_ENABLED := disabled加上。LOCAL_PROGUARD_ENABLED := disabled不使用代碼混淆的工具進行代碼混淆,如果不設置,默認使用LOCAL_PROGUARD_ENABLED := full.即將該工程代碼全部混淆。
我是嘗試了很多次才把代碼編過的,使用的是第三種方法。
總結
以上是生活随笔為你收集整理的android hide方法 末班,android 如何引用@hide(隐藏)的类,方法和常量?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android rfid 读写sdk,A
- 下一篇: TCP/IP之IP协议(网际协议)