如果您正在创建 jar 文件,则不应在 jar 文件中包含 r.java,manifeast 文件。
因为 jar 在编译期间不会被编译,并且在编译期间不会创建任何静态整数。
在 android 中,我们有Android LIbrary,它类似于 android 项目,但可以包含在其他项目中。
如果仍然需要 jar 文件,那么只需将类文件保存在 jar 中,包括应用程序中包含的所有资源,并且从 java 文件中,您可以使用以下代码在运行时引用资源。
您必须在代码中使用 getResourcesIdByName(getPackageName(), "drawable", "icon") 而不是 R.drawable.icon 。下面是 getResourceIdByName: 的代码:
public int getResourseIdByName(String packageName, String className, String name) {
int id = 0;
try {
for (int i = 0; i < Class.forName(packageName + ".R").getClasses().length; i++) {
if(Class.forName(packageName + ".R").getClasses()[i].getName().split("\\$")[1].equals(className)) {
if(Class.forName(packageName + ".R").getClasses()[i] != null)
id = Class.forName(packageName + ".R").getClasses()[i].getField(name).getInt(Class.forName(packageName + ".R").getClasses()[i]);
break;
}
}
} 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;
}