当需要把一个Android导出为jar包时,如果里面有用到Resource,比如R.layout,R.id 其它程序引入这个包的时候会遇到id找不到的情况。
这是因为导出jar的时候里面的R.id已经替换为一个int常量,而在新的程序中resource id会重新生成,两者不匹配就会产生问题。
所以在这个Android工程中不能使用import com.xx.R,否则会出现问题,必须在用到资源的时候用另外一个函数去获取它的真正id.
解决办法大致就是利用java的反射机制,通过string来找到类,从而找到变量值。
方法一
public static int getId(Context paramContext, String paramString1, String paramString2) { try { Class localClass = Class.forName(paramContext.getPackageName() + ".R$" + paramString1); Field localField = localClass.getField(paramString2); int i = Integer.parseInt(localField.get(localField.getName()).toString()); return i; } catch (Exception localException) { Log.e("getIdByReflection error", localException.getMessage()); } return 0; }
方法二
这个也是替换Theme的方法
public static int getLayoutResIDByName(Context context, String name) { return context.getResources().getIdentifier(name, "layout", context.getPackageName()); } public static int getIdResIDByName(Context context, String name) { return context.getResources().getIdentifier(name, "id", context.getPackageName()); } public static int getStringResIDByName(Context context, String name) { return context.getResources().getIdentifier(name, "string", context.getPackageName()); } public static int getDrawableResIDByName(Context context, String name) { return context.getResources().getIdentifier(name, "drawable", context.getPackageName()); } public static int getRawResIDByName(Context context, String name) { return context.getResources().getIdentifier(name, "raw", context.getPackageName()); }
方法三
Android工程间相互依赖,只适用于在Eclipse中开发
参考官方说明http://developer.android.com/guide/developing/projects/projects-eclipse.html
相关推荐
本demo是结合博客的资源,如有不懂请去看博客 http://blog.csdn.net/u013895206 ,文章是:android 使用gradle导出jar包,并包含assets资源文件夹。谢谢!
由于android studio不像eclipse一样自带有jar包导出功能,如果手动修改工程脚本文件来生成jar包既费时又费力,因此开发此款工具以第三方工具的形式导入到studio中,实现与eclipse一样的功能,连操作方式也一样,软件...
使用android studio生成jar包,并且使用映射来完美调用资源文件。包含两个工程,一个如何生成jar包,一个是如何使用jar包,调用资源文件。使用详情可以关注我的blog,http://blog.csdn.net/jujishou521
由于android studio不像eclipse一样自带有jar包导出功能,如果手动修改工程脚本文件来生成jar包既费时又费力,因此开发此款工具以第三方工具的形式导入到studio中,实现与eclipse一样的功能,连操作方式也一样,软件...
包括Java导出Highcharts需要的4个jar包(其中highcharts-downimage.jar是下载图像的实现类,已经编译,并包含源码,其它3个jar包是相关引用类),以及struts配置。 使用时,只要将common_struts.xml加入struts配置...
excle导出jar包,支持2003及2007格式
想要将一个项目导出为jar包,供其它项目使用,在eclipse中可以直接导出该项目为jar包,而 在AS中可以通过修改gradle才处理。 接下来就介绍下具体的步骤: 1、新建一个项目,项目名随意,eg:MakeJarApplication,在...
导出android代码内的字串到excel,便于翻译。 导出后的格式是: key 英文 待翻译的语言 导出时,会自动忽略不必要的字串。比如注释里带not translate,或者属性里有translate="false"的字串。 ------------ ./string...
eclipse 导出 jar包 Main类
java开发导入导出功能所需jar包,包括该jar包的文档说明
eclipse导出运行jar包,包括net.sf.fjep.fatjar_0.0.31和net.sf.fjep.fatjar_0.0.32,对于高版本eclipse,使用后者。将jar包复制到eclipse安装目录下的plugins目录下,重启eclipse即可。
java导出excel POI jar包 java代码地址http://blog.csdn.net/awenluck/article/details/51488537
Android APK和导出JAR包的代码混淆,自己实践的结果 ,很详细
基于poi导出Excel所需要的jar包,做Excel时候没少寻找
该文件中包含了所有java项目中针对excel导入导出所需的jar包集合。 -------------------------------------- 将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用...
轻松实现Android导出EXCEL表
将Android项目导出为Library 1.修改build.gradle中的Module:app文件 最终如下: 2. 进入到项目文件夹目录,保留app文件夹,其余删除 3. 进入到app文件夹下,修改app.iml为你的库名,即是外层文件名 4. ...
本文档使用eclipse工具将java项目导出成可执行的jar包。
首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar 文件夹。 在命令行下定位到dex2jar.bat所在目录,运行 dex2...