当需要把一个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 应用程序开发:Eclipse 可以将 Java 项目导出成可执行的 Jar 包,然后用于 Android 应用程序开发。 * Web 应用程序开发:Eclipse 可以将 Java 项目导出成可执行的 Jar 包,然后用于 Web 应用程序开发。 * ...
Android平台上的VCard文件导入与导出是移动设备管理联系人...总之,"android vcard文件导入导出jar"为Android开发者提供了一个方便的工具,简化了处理VCard文件的任务,使得导入和导出联系人数据变得更为高效和便捷。
导出android代码内的字串到excel,便于翻译。 导出后的格式是: key 英文 待翻译的语言 导出时,会自动忽略不必要的字串。比如注释里带not translate,或者属性里有translate="false"的字串。 ------------ ./string...
标题中的“excle导出jar包”指的是将Excel数据转换为Java可执行的JAR文件。Excel是一种广泛使用的电子表格程序,通常用于处理数据、计算和制作图表。在IT行业中,有时我们需要将Excel数据整合到Java应用程序中,或者...
由于android studio不像eclipse一样自带有jar包导出功能,如果手动修改工程脚本文件来生成jar包既费时又费力,因此开发此款工具以第三方工具的形式导入到studio中,实现与eclipse一样的功能,连操作方式也一样,软件...
本文将深入探讨如何在Android Studio中进行代码混淆,并导出混淆后的jar文件。 首先,我们需要了解混淆的基本原理。混淆是通过ProGuard工具来实现的,它会分析Java字节码,重命名类、方法和字段,删除未使用的代码...
混淆jar包在Eclipse中的过程与Android Studio类似,也需要编写ProGuard规则,并在导出jar前进行混淆。 总的来说,Android Studio和Eclipse都提供了生成和混淆jar包的功能,但Android Studio的Gradle构建系统使得...
【标题】"poi.jar导入导出jar包"指的是Apache POI项目提供的Java库,主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个jar包是开发人员在Java环境中进行读写Excel文档时必不可少的工具。 ...
在介绍NC65导出jar文件的过程中,需要掌握的知识点涵盖了整个软件开发...通过上述知识点的掌握,不仅可以顺利完成NC65导出jar文件的任务,还可以在遇到问题时具备分析和解决问题的能力,从而确保软件的顺利开发和部署。
包括Java导出Highcharts需要的4个jar包(其中highcharts-downimage.jar是下载图像的实现类,已经编译,并包含源码,其它3个jar包是相关引用类),以及struts配置。 使用时,只要将common_struts.xml加入struts配置...
本篇文章将深入讲解如何使用POI库在Java中实现Excel的导出功能,以及涉及到的相关jar包及其作用。 首先,`poi-ooxml-schemas-3.15-beta1.jar`是POI库中的XML schema定义,用于解析和创建符合Office Open XML标准的...
### Eclipse导出JAR包详解 #### 一、前言 在Java开发过程中,经常会遇到将项目打包成可执行的JAR文件的需求。这不仅便于程序的发布与分发,还能帮助开发者更好地管理项目的依赖关系。Eclipse作为一款广泛使用的...
"Android Studio3.2中导出jar包的过程详解" 一、Android Studio3.2中的jar包输出 Android Studio3.2提供了强大的jar包输出功能,能够帮助开发者快速生成jar包,并将其应用于实际项目中。在本文中,我们将详细介绍...
在 J2SE 中,导出 Jar 文件时经常遇到的问题是图片不能正常显示。本文将总结解决此类问题的方法,包括通过使用外部资源文件的方式和内部资源文件的方式解决问题。 一、通过使用外部资源文件的方式解决 这种方法的...
想要将一个项目导出为jar包,供其它项目使用,在eclipse中可以直接导出该项目为jar包,而 在AS中可以通过修改gradle才处理。 接下来就介绍下具体的步骤: 1、新建一个项目,项目名随意,eg:MakeJarApplication,在...
在使用时,开发者需要注意与AndroidX库的迁移问题,以避免版本冲突。迁移过程可以通过Android Studio的自动转换工具完成。 总之,`android-support-v7-appcompat.jar`和`android-support-v4.jar`是Android开发中的...