在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 = [
]