Bez działania nie wydaje się możliwe użycie klasy R. Jeśli masz aplikację testową w swojej bibliotece, aplikacja testowa będzie mogła uzyskać dostęp do R, ale nie z samej biblioteki.
Nadal można uzyskać dostęp do zasobów według nazwy. Na przykład, mam klasy jak ten w mojej bibliotece,
public class MyContext extends ContextWrapper {
public MyContext(Context base) {
super(base);
}
public int getResourceId(String resourceName) {
try{
// I only access resources inside the "raw" folder
int resId = getResources().getIdentifier(resourceName, "raw", getPackageName());
return resId;
} catch(Exception e){
Log.e("MyContext","getResourceId: " + resourceName);
e.printStackTrace();
}
return 0;
}
}
(Zobacz https://stackoverflow.com/a/24972256/1765629 uzyskać więcej informacji na temat ContextWrappers)
a konstruktora obiektu w bibliotece trwa to opakowanie kontekstowe
public class MyLibClass {
public MyLibClass(MyContext context) {
int resId = context.getResourceId("a_file_inside_my_lib_res");
}
}
Następnie z aplikacją, która wykorzystuje lib, trzeba przejść kontekstu
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
MyLibClass a = new MyLibClass(new MyContext(this));
}
}
MyContext, MyLibClass i a_file_inside_my_lib_res, wszystkie one żyją wewnątrz projektu biblioteki.
Mam nadzieję, że to pomaga.
Według biblioteki masz na myśli projekt biblioteki lub plik JAR/AAR? Dostęp do zasobów można uzyskać tylko z projektów bibliotecznych lub plików AAR, a nie z plików JAR. – shkschneider
Projekt biblioteki, a nie plik JAR. – sqshemet
Szczerze mówiąc, nie otrzymuję konfiguracji aplikacji. Masz "brak aktywności" ani "kontekst"? Czy tworzysz aplikację dla Androida? – shkschneider