折腾:
【未解决】Android Studio中用PreferenceFragmentCompat实现rcsjta的tts的参数设置页面
期间,PreferenceFragmentCompat代码报错,怀疑是没有导入库导致的
所以去试试,导入PreferenceFragmentCompat的库
其中看到新的好像都是androidx
的
androidx.preference:preference:1.0.0
去看看如何导入到这里的
rcsjta/samples/api/tts/build.gradle
android gradle import androidx.preference:preference
最新更新时间 2020 年 4 月 15 日
当前稳定版 1.1.1
然后加上:
dependencies { implementation project(':api') implementation 'com.android.support:support-v4:25.0.1' def preference_version = "1.1.1" implementation "androidx.preference:preference:$preference_version" }
好像可以的,至少没语法错误
参考
去写成:
public class Main extends PreferenceFragmentCompat {
结果:
找不到
去尝试导入
import androidx.preference;
结果也报错:
找不到preference
去试试legacy
不过先去gradle的sync
好像要download下载很多库
其中看到要下载 preference-1.1.1-sources.jar了。
然后报错了:
【已解决】Android中gradle编译报错:This project uses AndroidX dependencies, but the android.useAndroidX property is not enabled
继续,然后报错:
Manifest merger failed : uses-sdk:minSdkVersion 12 cannot be smaller than version 14 declared in library [androidx.preference:preference:1.1.1] /Users/xxx/.gradle/caches/transforms-2/files-2.1/e3ce7e7cf0568bf54350349961cc10db/preference-1.1.1/AndroidManifest.xml as the library might be using APIs not available in 12 Suggestion: use a compatible library with a minSdk of at most 12, or increase this project's minSdk version to at least 14, or use tools:overrideLibrary="androidx.preference" to force usage (may lead to runtime failures)
去搜:
minSdkVersion
发现项目根目录中的
build.gradle
// project.ext.set("compileSdkVersion", 23) // project.ext.set("minSdkVersion", 12) // project.ext.set("targetSdkVersion", 23) ext { compileSdkVersion = 23 minSdkVersion = 12 targetSdkVersion = 23 } //project.ext.set("buildToolsVersion", "24.0.0")
其中的
minSdkVersion = 12
的确是很低。
去改为14
不过改之前,看看sdk 14是安卓哪个版本,对应关系
然后去:
【整理】Android的api和sdk的版本号安卓版本和名称对应关系
得知:
- 之前
- minSdkVersion=12:Honeycomb,android 3.1
- 现在
- minSdkVersion=14:Ice Cream Sandwich,android 4.0.1
不过此处已没有很低版本的安卓手机了
为了演示和了解和运行调试rcs的demo,应该选择此处有的安卓的版本
此处安卓手机最低的版本都是 安卓 9
所以此处考虑去选择:
- 最新
- minSdkVersion=28:Android 9.0
但是也注意到:
此处代码编译版本是:
compileSdkVersion = 23
targetSdkVersion = 23
都是23,那么去一致的话:
- 相对较新的
- minSdkVersion=23:Android 6.0,Marshmallow
支持安卓 6.0+ 也是可以接受的。
那么此处干脆,也去设置这个23=android 6.0=Marshmallow
虽然重新编译后此处问题消失了
但是后续会出现其他兼容性问题:
/Users/xxx/.gradle/caches/transforms-2/files-2.1/f209091eb3926c649f0b3346884e478c/appcompat-1.1.0/res/values-v26/values-v26.xml
<style name="Base.V26.Theme.AppCompat" parent="Base.V23.Theme.AppCompat"> <!-- We can use the platform styles on API 26+ --> <item name="colorError">?android:attr/colorError</item> </style>
报错:
/Users/xxx/.gradle/caches/transforms-2/files-2.1/f209091eb3926c649f0b3346884e478c/appcompat-1.1.0/res/values-v26/values-v26.xml:5:5-8:13: AAPT: error: resource android:attr/colorError not found.
-》所以,还是改回之前的,稍微低一点的版本,比如14:
build.gradle
ext { compileSdkVersion = 23 // minSdkVersion = 12 // minSdkVersion = 23 minSdkVersion = 14 targetSdkVersion = 23 }
结果:
但是问题依旧。
所以感觉是:
加上androidX的问题,或者是加了enableJetifier的问题。
总体上感觉:
还是不去引入androidX吧,否则兼容性问题太多,无法全部解决的感觉。
转载请注明:在路上 » 【未解决】Android中导入androidX去实现PreferenceFragmentCompat的rcsjta的tts的设置