我正在与AOSP合作,我想创建自己的库并在app中使用它(来自packages / app /).我的图书馆只有一个班级:
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); } }
它有自己的布局.这个lib的Android.mk看起来像这样:
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)
没有编译错误.但是当我在Android应用程序中使用我的lib时它会崩溃:
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)
据我了解,Android应用程序无法从我的lib中找到布局.那么我该如何解决这个问题呢?
解决方法
(YOURPROJECT)右键单击,然后选择Properties-> Java Build Path->选择选项卡Order and Export,然后您的添加库将处于未选中状态.检查lib是否干净并运行你的项目.
希望这对你有所帮助.