将资源库添加到aosp包中

Ov3*_*oad 7 android android-source android-layout

我正在与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);

    }

}
Run Code Online (Sandbox Code Playgroud)

它有自己的布局.这个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)
Run Code Online (Sandbox Code Playgroud)

没有编译错误.但是当我在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)
Run Code Online (Sandbox Code Playgroud)

据我了解,Android应用程序无法从我的lib中找到布局.那么我该如何解决这个问题呢?

小智 -1

(您的项目)右键单击,然后选择“属性”->“Java 构建路径”-> 选择“订单”和“导出”选项卡,然后您的添加库将处于未选中状态。检查 lib 是否干净并运行您的项目。

希望这对您有帮助。