`
ericbaner
  • 浏览: 176973 次
  • 性别: 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

    Eclipse导出Jar包

    * Android 应用程序开发:Eclipse 可以将 Java 项目导出成可执行的 Jar 包,然后用于 Android 应用程序开发。 * Web 应用程序开发:Eclipse 可以将 Java 项目导出成可执行的 Jar 包,然后用于 Web 应用程序开发。 * ...

    android vcard文件导入导出jar

    Android平台上的VCard文件导入与导出是移动设备管理联系人...总之,"android vcard文件导入导出jar"为Android开发者提供了一个方便的工具,简化了处理VCard文件的任务,使得导入和导出联系人数据变得更为高效和便捷。

    android字串导出工具

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

    excle导出jar包

    标题中的“excle导出jar包”指的是将Excel数据转换为Java可执行的JAR文件。Excel是一种广泛使用的电子表格程序,通常用于处理数据、计算和制作图表。在IT行业中,有时我们需要将Excel数据整合到Java应用程序中,或者...

    android studio导出jar包工具

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

    Android Studio混淆导出jar

    本文将深入探讨如何在Android Studio中进行代码混淆,并导出混淆后的jar文件。 首先,我们需要了解混淆的基本原理。混淆是通过ProGuard工具来实现的,它会分析Java字节码,重命名类、方法和字段,删除未使用的代码...

    Android studio和Eclipse分别生成jar包并混淆jar包的demo

    混淆jar包在Eclipse中的过程与Android Studio类似,也需要编写ProGuard规则,并在导出jar前进行混淆。 总的来说,Android Studio和Eclipse都提供了生成和混淆jar包的功能,但Android Studio的Gradle构建系统使得...

    poi.jar导入导出jar包

    【标题】"poi.jar导入导出jar包"指的是Apache POI项目提供的Java库,主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个jar包是开发人员在Java环境中进行读写Excel文档时必不可少的工具。 ...

    NC65导出jar文件

    在介绍NC65导出jar文件的过程中,需要掌握的知识点涵盖了整个软件开发...通过上述知识点的掌握,不仅可以顺利完成NC65导出jar文件的任务,还可以在遇到问题时具备分析和解决问题的能力,从而确保软件的顺利开发和部署。

    Highcharts图像导出jar

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

    java导出excel POI jar包

    本篇文章将深入讲解如何使用POI库在Java中实现Excel的导出功能,以及涉及到的相关jar包及其作用。 首先,`poi-ooxml-schemas-3.15-beta1.jar`是POI库中的XML schema定义,用于解析和创建符合Office Open XML标准的...

    eclipse导出jar包

    ### Eclipse导出JAR包详解 #### 一、前言 在Java开发过程中,经常会遇到将项目打包成可执行的JAR文件的需求。这不仅便于程序的发布与分发,还能帮助开发者更好地管理项目的依赖关系。Eclipse作为一款广泛使用的...

    Android Studio3.2中导出jar包的过程详解

    "Android Studio3.2中导出jar包的过程详解" 一、Android Studio3.2中的jar包输出 Android Studio3.2提供了强大的jar包输出功能,能够帮助开发者快速生成jar包,并将其应用于实际项目中。在本文中,我们将详细介绍...

    解决j2se中导出jar文件不能显示图片问题

    在 J2SE 中,导出 Jar 文件时经常遇到的问题是图片不能正常显示。本文将总结解决此类问题的方法,包括通过使用外部资源文件的方式和内部资源文件的方式解决问题。 一、通过使用外部资源文件的方式解决 这种方法的...

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

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

    android-support-v7-appcompat.jar和android-support-v4.jar包

    在使用时,开发者需要注意与AndroidX库的迁移问题,以避免版本冲突。迁移过程可以通过Android Studio的自动转换工具完成。 总之,`android-support-v7-appcompat.jar`和`android-support-v4.jar`是Android开发中的...

Global site tag (gtag.js) - Google Analytics