最近在处理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(隐藏)的类,方法和常量?相关推荐

  1. android hide方法 末班,Android调用@hide系统隐藏类的几种方法

    调用android系统隐藏的API的几种方法(以调SystemProperties这个类为例): 1.用反射: //获取系统属性public static String getProperty(Str ...

  2. java 隐藏父类方法,java 子类继承父类成员变量的隐藏、实现方法的重写

    成员变量的隐藏和方法的重写 Goods.java public class Goods { public double weight; public void oldSetWeight(double ...

  3. react 显示隐藏组件的方法_10种React组件之间通信的方法

    来源 | https://segmentfault.com/a/1190000023585646 这两天被临时抽调到别的项目组去做一个小项目的迭代.这个项目前端是用React,只是个小型项目所以并没有 ...

  4. bootstraptable 列隐藏_bootstraptable 隐藏列的方法

    bootstraptable隐藏列的方法:1.通过"bootstrapTable('hideColumn', 'GoodsId');"方式隐藏:2.通过属性"visibl ...

  5. Android开发之引用framework.jar中的方法 | 引用framework.jar包

    实际上网上写了很多最终就总结出来一句话而已,二种方法 方法一(强烈建议使用) 在app下面的gradle中配置如下信息,跟android目录同级,jar包的引用路径可以使用相对路径libs/frame ...

  6. android studio方法的调用树,Android Studio 多层级 Module 对 aar 引用问题解决方法

    最近碰到这么个恶心的问题 问题:有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件.(同时如果又有Mo ...

  7. 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

    博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.c ...

  8. android eclipse中导入framework.jar以及使用其隐藏类的方法

    想使用开关3G的网络数据 ConnectivityManager cm =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERV ...

  9. android继承父类的界面,Android调用父类方法,进行子界面刷新

    偶然遇到一个需求.有几个主界面需要获取消息的未读数量 由于不是所有类都调用.调用的次数又比较多,整的不上不下的 1.对于方法调用次数比较少的 推荐广播 广播的方法很方便.但是一堆的消息接收.发送很模式 ...

最新文章

  1. 面向药物发现的深度图学习
  2. yolov3 get_next_batch 异常
  3. java 无向图子图_无向图的连通子图
  4. Python之函数的参数
  5. tableView编辑
  6. cmd命令关闭占用程序的端口
  7. php推荐位调用,推荐位数据循环调用
  8. 【2015-18年腾讯招聘】腾讯产品策划类笔试面试题整理
  9. 动态硬盘转基本盘转换器
  10. win11系统右键菜单改回以往风格(亲测有效)
  11. 太阳能计算机屏幕是什么材质,电脑显示器表面是什么材质的 什么是液晶玻璃...
  12. CDlinux使用与安装
  13. 天津大学关于博士、硕士学位论文格式
  14. idea自动删除尾行空格(空行中空格)
  15. Linux_Oracle_11g_R2_RAC_安装配置详细过程
  16. 《算法设计与分析》第十三周作业
  17. Element UI, Ant Design Vue
  18. Excel如何从混合数据中提取出手机号码
  19. 教程篇(7.0) 03. FortiGate基础架构 虚拟域(VDOM) ❀ Fortinet 网络安全专家 NSE 4
  20. 电路分析第二章 网孔电流法,节点电压法,叠加原理

热门文章

  1. 如何将 winston log 库记录的日志写入 mongo DB 数据库
  2. 使用组件化开发思路替换 SAP Spartacus 的 Logo
  3. SAP Fiori 页面的周期性动态刷新功能的实现步骤
  4. SAP Spartacus BrowserPlatformLocation的初始化逻辑
  5. Angular rxjs fromEvent使用的一个例子
  6. 另一种使用SAP SAT事务码对通过浏览器启动的应用的性能测量和分析方式
  7. CRM and Saptest1 Fiori UI共存的一个典型例子
  8. Extension project - Component.js of standard application could not be loaded
  9. Fiori应用里如何隐藏prospect字段
  10. CRM呼叫中心和社交媒体集成的UI错误信息显示机制