最新消息:20210917 已从crifan.com换到crifan.org

【未解决】Android中导入androidX去实现PreferenceFragmentCompat的rcsjta的tts的设置

Android crifan 499浏览 0评论
折腾:
【未解决】Android Studio中用PreferenceFragmentCompat实现rcsjta的tts的参数设置页面
期间,PreferenceFragmentCompat代码报错,怀疑是没有导入库导致的
所以去试试,导入PreferenceFragmentCompat的库
其中看到新的好像都是androidx
https://www.jianshu.com/p/05dee82599f6
androidx.preference:preference:1.0.0
去看看如何导入到这里的
rcsjta/samples/api/tts/build.gradle
android gradle import androidx.preference:preference
Preference  |  Android 开发者  |  Android Developers
最新更新时间 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"
}
好像可以的,至少没语法错误
参考
https://developer.android.com/reference/androidx/preference/PreferenceFragmentCompat
去写成:
public class Main extends PreferenceFragmentCompat {
结果:
找不到
去尝试导入
import  androidx.preference;
结果也报错:
找不到preference
android – androidx.preference.PreferenceScreen not found when creating Preferences screen – Stack Overflow
去试试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的设置

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.180 seconds, using 23.33MB memory