记录Android修改报名顺便迁移androidx
修改包名:
我的方法不是正经方法。。不能完全修改包名。、
1、修改app的build.gradle 的applicationId ,然后sync一下 ,接着把项目用到的一些配置文件里面哪里有用到package_name 字段
defaultConfig {
applicationId "com.hyphenate.xxxx"
//测试oppo离线消息,需修改包名如下,如果配置了FCM推送,同时替换google-services.json 中的 package_name 字段
//applicationId "com.hyphenate.chatuidemo.push"
minSdkVersion 19
targetSdkVersion 29
multiDexEnabled true
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86'
}
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
然后发现竟然没报错诶
2、接着根目录改名 点击refactor > rename ,发现package只改了最后一个package的名字目录名字由原本的com.hyphenate.chatuidemo变为com.hyphenate.xxxx
3、不要忘记androidmanifest.xml中的package名字 。如果有用到FileProvider也不要忘记修改
<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
Android转成androidx:
太惨了我项目用的模块而不是依赖 我太难了
项目引用第三方库需要报错原因是不兼容Androidx 于是就迁移Androidx
1、直接refactor>Migrate to Androidx
T^T 各种报错幺 不能同步 不能编译
报错1:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
报错2:Error while generating the main dex list
报错3:NDK is missing a "platforms" directory.
报错4:Program type already present: android.support.v4.graphics.drawable.IconCompatParcelizer,,,等
以上报错除了第3个摸不着头脑 因为查看项目结构目录上有地址啊。。反正网上资料都是说包冲突的问题
这样先用命令行查看问题 在android studio 底部的 Terminal 输入 gradlew assembleDebug --stacktrace
就可以看到如2、4等报错 ,明确说是啥包冲突 接着我按照网上指导使用工具查看依赖树 开始剔除冲突包,根据编译得到冲突包名字exclude不同的版本,或者全部剔除再重写这个包的依赖 (事实证明这是不需要的)
implementation ('com.google.firebase:firebase-messaging:11.4.0'){ // exclude group: 'androidx.viewpager' ,module: 'viewpager'// 根据组织名 + 构建名剔除 }
2、之后就发现不对劲啊 module里面竟然还有support的依赖 ,然后就修改了过来变成了androidx的依赖
api 'androidx.appcompat:appcompat:1.1.0'
问题就没了。。。。
3、编译出来是就基本剩下Android到Androidx在activity中的import了 ,就是 module的活动特别多 T^T ,要使用自动导入功能 省不少事。
删除所有support的引用之后 就完了。
0^0 下一次不知道还能不能成功。
上一篇: 记一次AsmLib故障
下一篇: 源代码 我的论坛源代码四