android hide方法 末班,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.即将该工程代码全部混淆。

我是尝试了很多次才把代码编过的,使用的是第三种方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值