如果一个工程有他自己的资源,即不光是只有java文件,还有图片,布局等文件打包成jar包,如果这个工程引用资源的方式是R.xxx.yyy,那么打成jar后给其它工程引用是不行的
解决办法:
1.编写引用资源的类如下:
public class MResource {
public static int getIdByName(Context context, String className, String name) {
String packageName = context.getPackageName();
Class r = null;
int id = 0;
try {
r = Class.forName(packageName + ".R");
Class[] classes = r.getClasses();
Class desireClass = null;
for (int i = 0; i < classes.length; ++i) {
if (classes[i].getName().split("\\$")[1].equals(className)) {
desireClass = classes[i];
break;
}
}
if (desireClass != null)
id = desireClass.getField(name).getInt(desireClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return id;
}
2.在要打包成jar包的工程中引用资源用以下方式
private int wheelBackground = MResource.getIdByName(getContext(), "drawable", "wheel_bg");
private int wheelForeground = MResource.getIdByName(getContext(), "drawable", "wheel_val");
// private int wheelBackground = R.drawable.wheel_bg;
// private int wheelForeground = R.drawable.wheel_val;
3.然后把这些资源文件copy到引用这个jar包的工程,并且把要打包成jar包的工程只保留java文件打包成jar,引用即可
解决工程资源打包为jar后引用问题
本文介绍如何在将包含多种资源的工程打包为jar后,解决资源引用问题,确保其他工程能够正确引用这些资源。通过自定义类实现资源ID获取,以及将资源文件复制到引用jar包的工程中,确保资源正常加载。
2183

被折叠的 条评论
为什么被折叠?



