Se si sta creando file jar allora non dovrebbe includere r.java, file di manifeast nel file jar.
Poiché il vaso non viene rispettato durante la compilazione e non crea alcun numero intero statico durante il tempo di compilazione.
In Android abbiamo Android LIbrary che è simile al progetto Android ma può essere incluso in altri progetti.
E se è ancora necessario avere il file jar, basta tenere i file di classe nel jar includendo tutte le risorse contenute nell'applicazione e dai file java è possibile utilizzare il codice sottostante per riferire le risorse durante il runtime.
Che è necessario utilizzare getResourseIdByName (getPackageName(), "drawable", "icon") anziché R.drawable.icon nel codice. Di seguito è riportato il codice per 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;
}
fonte
2012-04-25 02:10:42