7
저는 AOSP로 작업 중이며 자체 라이브러리를 만들어 app (packages/app /에서 제공)에서 사용하고 싶습니다. 내 라이브러리에는 하나의 수업 만 있습니다.aosp 패키지에 리소스가있는 라이브러리 추가하기
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)
컴파일 오류가 없습니다. 하지만 안드로이드 응용 프로그램에서 내 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)
알다시피, 안드로이드 애플 리케이션은 내 lib에서 레이아웃을 찾을 수 없습니다. 그렇다면이 문제를 어떻게 해결할 수 있습니까? 바로을 클릭 한 다음 속성 -> 자바를 선택