在App中使用AlertDialog有很多帖子说明,这里不在赘述。主要记录修改AOSP中遇到的使用AlertDialog踩坑记录。
在fwk中的service或者是CarService中要使用AlertDialog,仅添加AlertDialog是不够的,会直接crash。
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy
这里的主要问题是我们在创建AlertDialog时使用的Context对象,fwk的service继承自SystemService,它是一个抽象类,并不是我们所熟悉app中所使用的service。同理CarService中的Service也是类似情况。
解决方案:在CarService中创建一个service(android.app.Service)用以处理UI部分,不要写在AOSP中原始CarxxService中。
fwk中类似操作
原因就是Context并不是Activity或者是service,可以使用UI的
在AOSP中编译集成开发的aar或者是jar库
1.在AOSP要编译的目录下创建libs文件夹
2.在libs目录下放要编译的aar或者jar,并且书写Android.bp文件
android_library_import {name: "xxxx1",aars: ["xxxx1.aar"],sdk_version: "xxxx1",static_libs: ["androidx.appcompat_appcompat","androidx-constraintlayout_constraintlayout"]
}android_library_import {name: "xxxxx2",aars: ["xxxxx2.aar"],sdk_version: "current",
}java_import {name: "Okhttp",jars: ["okhttp-xxx.jar"],
}java_import {name: "Okio",jars: ["okio-xx.jar"],
}cc_prebuilt_library_shared {name: "libxxx",compile_multilib: "both",multilib: {lib64: {srcs: ["arm64-v8a/libxxx.so"],},lib32: {srcs: ["armeabi-v7a/libxxx.so"],},},clang: true,proprietary: true,
}
3.在要编译的Android.bp文件中的添加
common_lib_deps = [
]