`
ericbaner
  • 浏览: 173096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】Android导出jar library时资源resource id获取的问题

 
阅读更多

当需要把一个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

分享到:
评论

相关推荐

    android gradle导出jar包,并包含assets资源文件夹

    本demo是结合博客的资源,如有不懂请去看博客 http://blog.csdn.net/u013895206 ,文章是:android 使用gradle导出jar包,并包含assets资源文件夹。谢谢!

    android studio导出jar包工具 V1.1.0

    由于android studio不像eclipse一样自带有jar包导出功能,如果手动修改工程脚本文件来生成jar包既费时又费力,因此开发此款工具以第三方工具的形式导入到studio中,实现与eclipse一样的功能,连操作方式也一样,软件...

    android studio 生成Jar包并调用资源文件

    使用android studio生成jar包,并且使用映射来完美调用资源文件。包含两个工程,一个如何生成jar包,一个是如何使用jar包,调用资源文件。使用详情可以关注我的blog,http://blog.csdn.net/jujishou521

    android studio导出jar包工具

    由于android studio不像eclipse一样自带有jar包导出功能,如果手动修改工程脚本文件来生成jar包既费时又费力,因此开发此款工具以第三方工具的形式导入到studio中,实现与eclipse一样的功能,连操作方式也一样,软件...

    Highcharts图像导出jar

    包括Java导出Highcharts需要的4个jar包(其中highcharts-downimage.jar是下载图像的实现类,已经编译,并包含源码,其它3个jar包是相关引用类),以及struts配置。 使用时,只要将common_struts.xml加入struts配置...

    excle导出jar包

    excle导出jar包,支持2003及2007格式

    Android Studio 生成自定义jar包的步骤详解

    想要将一个项目导出为jar包,供其它项目使用,在eclipse中可以直接导出该项目为jar包,而 在AS中可以通过修改gradle才处理。 接下来就介绍下具体的步骤: 1、新建一个项目,项目名随意,eg:MakeJarApplication,在...

    android字串导出工具

    导出android代码内的字串到excel,便于翻译。 导出后的格式是: key 英文 待翻译的语言 导出时,会自动忽略不必要的字串。比如注释里带not translate,或者属性里有translate="false"的字串。 ------------ ./string...

    eclipse导出jar包

    eclipse 导出 jar包 Main类

    poi.jar导入导出jar包

    java开发导入导出功能所需jar包,包括该jar包的文档说明

    eclipse导出jar-fatjar

    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导出excel POI jar包 java代码地址http://blog.csdn.net/awenluck/article/details/51488537

    Android APK及导出JAR包的代码混淆

    Android APK和导出JAR包的代码混淆,自己实践的结果 ,很详细

    导出Excel所需的jar包

    基于poi导出Excel所需要的jar包,做Excel时候没少寻找

    POI数据Excel导入导出jar

    该文件中包含了所有java项目中针对excel导入导出所需的jar包集合。 -------------------------------------- 将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用...

    Android导出EXCEL表

    轻松实现Android导出EXCEL表

    Android将项目导出为Library并在项目中使用教程

    将Android项目导出为Library 1.修改build.gradle中的Module:app文件 最终如下: 2. 进入到项目文件夹目录,保留app文件夹,其余删除   3. 进入到app文件夹下,修改app.iml为你的库名,即是外层文件名 4.  ...

    Eclipse导出Jar包

    本文档使用eclipse工具将java项目导出成可执行的jar包。

    安卓APK导出的dex转jar文件

    首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar 文件夹。 在命令行下定位到dex2jar.bat所在目录,运行 dex2...

Global site tag (gtag.js) - Google Analytics