Ich arbeite mit AOSP und ich möchte meine eigene Bibliothek erstellen und in der App (aus Paketen/app /) verwenden. Meine Bibliothek hat nur eine Klasse:Hinzufügen von Bibliothek mit Ressourcen zu AOsp-Paket
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.my_fragment, container, false);
}
}
Es hat ein eigenes Layout. Android.mk für diese lib sieht ungefähr so aus:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my.own.package
LOCAL_NO_MANIFEST := true
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
include $(BUILD_STATIC_JAVA_LIBRARY)
Es sind keine Kompilierungsfehler. Aber wenn ich meine lib in Android-Anwendung verwenden stürzt:
E/AndroidRuntime(1030): FATAL EXCEPTION: main
E/AndroidRuntime(1030): java.lang.NoClassDefFoundError: my.own.package.R$layout
E/AndroidRuntime(1030): at my.own.package.MyFragment.onCreateView(MyFragment.java:17)
E/AndroidRuntime(1030): at android.app.Fragment.performCreateView(Fragment.java:1695)
E/AndroidRuntime(1030): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885)
E/AndroidRuntime(1030): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
E/AndroidRuntime(1030): at android.app.BackStackRecord.run(BackStackRecord.java:682)
E/AndroidRuntime(1030): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435)
E/AndroidRuntime(1030): at android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:474)
Wie ich verstehe, android app nicht das Layout von meinem lib finden kann. Wie kann ich dieses Problem lösen?