使用Android.bp 编译App是报Compilation can‘t be completed because `android.support.v4.app.DialogFragment`

报错如下:
lasses.dex.jar out/soong/.intermediates/packages/apps/VantronEmail/VantronEmail/android_common/combined/VantronEmail.jar
Warning: Missing class: android.support.v4.app.DialogFragment
Warning: Missing class: android.support.v4.app.Fragment
Error: Compilation can’t be completed because android.support.v4.app.DialogFragment and 1 other classes are missing.
Compilation failed
09:45:11 ninja failed with: exit status 1

这是由于 sdk_version:"30"版本只能使用androidx包的DialogFragment,不能使用android.support.v4.app.DialogFragment了,
通过grep 命令查看是evenbus包使用了android.support.v4.app.DialogFragment
,所以这里将eventbus版本升级到3.3.1版本解决,3.3.1版本的eventbus不再使用android.support.v4.app.DialogFragment

最终Android.bp配置如下:

java_import {
    name: "eventbus_jar",
    jars: ["libs/eventbus-java-3.3.1.jar"],
}
android_app {
    name: "Email",
    srcs: [
        "src/**/*.java",
    ],
    resource_dirs: ["res"],
    product_specific: true,
    sdk_version:"30",
    certificate: "platform",
    static_libs: ["VantronEmail-lib"
    ],
    optimize: {
        proguard_flags_files: ["proguard.flags"],
    },
}
android_library {
    name: "Email-lib",
    sdk_version:"30",
    resource_dirs: ["res"],
    srcs: ["src/**/*.java"],
    static_libs: [
        "androidx.core_core", 
        "androidx.media_media",
        "androidx.legacy_legacy-support-core-utils",
        "androidx.legacy_legacy-support-core-ui",
        "androidx.fragment_fragment",
        "androidx.appcompat_appcompat",
        "androidx.legacy_legacy-support-v13",
        "com.google.android.material_material",
	    "android-activation-1_6_7_jar",
        "android-mail-1_6_7_jar",
        "eventbus_jar",
        "com_blankj_utilcodex_1_30_6_jar"
    ]
}

目前发现编译出来后会报错 :( ,还是把apk编译好后放进去吧,同样可以用平台签名:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := VantronEmail
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := app-debug.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE :=
LOCAL_CERTIFICATE := platform
#LOCAL_OVERRIDES_PACKAGES := Music 
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
#LOCAL_PREBUILT_JNI_LIBS :=
include $(BUILD_PREBUILT)

版权声明:本文为qq_17525769原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。