在Android M

时间:2019-07-12 21:40:55

标签: android android-source marshmallow

我正在Android M的“开发人员选项”菜单中添加新的EditTextPreference。创建CustomEditTextPreference时,AOSP构建失败并显示警告:

  

警告:android.support.v7.widget.SwitchCompat:找不到引用   android.support.v7.appcompat.R $ attr类警告:   android.support.v7.widget.SwitchCompat:找不到引用的类   android.support.v7.appcompat.R $ styleable警告:   android.support.v7.widget.SwitchCompat:找不到引用的类   android.support.v7.appcompat.R警告:   android.support.v7.widget.Toolbar:找不到引用的类   android.support.v7.appcompat.R $ attr警告:   android.support.v7.widget.Toolbar:找不到引用的类   android.support.v7.appcompat.R $ styleable警告:   android.support.v7.widget.Toolbar:找不到引用的类   android.support.v7.appcompat.R $ styleable

我已经在frameworks / base / packages / SettingsLib中创建了CustomerEditTextPreference

还修改了SettingsLib中的Android.mk和Common.mk。

当我尝试使用Packages / app / Settings /下的Settings中的CustomEditTextPreference时,它会失败并显示警告

import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v14.preference.EditTextPreferenceDialogFragment;
import android.support.v7.preference.EditTextPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;


public class CustomEditTextPreference extends EditTextPreference {


    public CustomEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    public CustomEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public CustomEditTextPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomEditTextPreference(Context context) {
        super(context);
    }

}

/ frameworks / base / package / SettingsLib中的Android.Mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_USE_AAPT2 := true

LOCAL_MODULE := SettingsLib

LOCAL_STATIC_JAVA_LIBRARIES := \
    android-support-v4 \
        android-support-v7-recyclerview \
        android-support-v7-preference \
        android-support-v7-appcompat \
        android-support-v14-preference

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

LOCAL_AAPT_FLAGS := --auto-add-overlay

LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat:android.support.v7.recyclerview:android.support.v7.preference:android.support.v14.preference

#LOCAL_JAR_EXCLUDE_FILES := none

LOCAL_SRC_FILES := $(call all-java-files-under, src)

include $(BUILD_STATIC_JAVA_LIBRARY)

Common.mk文件

ifeq ($(LOCAL_USE_AAPT2),true)
LOCAL_STATIC_JAVA_LIBRARIES += \
    android-support-annotations \
    android-support-v4 \
    android-support-v7-recyclerview \
    android-support-v7-preference \
    android-support-v7-appcompat \
    android-support-v14-preference \
    SettingsLib
else
LOCAL_RESOURCE_DIR += $(call my-dir)/res
LOCAL_AAPT_FLAGS += --auto-add-overlay --extra-packages com.android.settingslib
LOCAL_STATIC_JAVA_LIBRARIES += \
    android-support-annotations \
    android-support-v4 \
    SettingsLib
endif

如果我在此目录下执行“ mma”,则编译成功

但是当我对软件包/应用程序/设置进行“ mma”处理时,它会失败。

预期结果是AOSP应该可以成功编译。

但是构建失败并显示警告。

1 个答案:

答案 0 :(得分:1)

我想出了消除这些警告的方法。 SettingsLib中有一个proguard.flags文件,我需要这样添加

--dontwarn android.support.v7.appcompat.*
--dontwarn android.support.v7.widget.*

就这样,我能够成功构建AOSP。

谢谢