Gradle版本升级

官方介绍

它有三个版本注意区别

  1. 集成开发环境插件的版本(例如232.7754.78
  2. gradle本身的版本(例如5.6.4)
  3. 安卓项目的插件(AndroidGradlePlugin-AGP)版本(例如3.6.4)

Android Studio Flamingo| 后会出现Gradle Upgrade Assistant一个个版本升级

用Upgrade Assistant升级时会出现插件版本,Upgrade Assistant会自动同步 gradle/wrapper/gradle-wrapper.properties的配置gradle的版本

对照官方介绍的插件的版本和版本之间的关系检查,老项目测试已通过3.6.4

同步gradle尽量删除目前SDK Tools下所有的buildTools让gradle自己寻找正确的版本buildToolsVersion

尽量要升级高于4.0.0后进行==>AndroidX迁移迁移迁移

修复./gradlew的环境:

  1. 查看当前java版本,终端输入:java -version
  2. 查看存在的java sdk版本:/usr/libexec/java_home -V
  3. 查看gradle使用的java版本:./gradlew -v
  4. 复制需要更改的java sdk所在目录更新使用版本(用哪个版本复制其地址就行):export JAVA_HOME=/Users/seven/Library/Java/JavaVirtualMachines/java-1.8.0_342/Contents/Home

顺序执行构建指令,全部构建不能出错,出错需按提示修改配置文件:

./gradlew clean 

./gradlew -q app:dependencies

./gradlew build --profile 

./gradlew build --scan

安卓14权限适配

compileSdkVersion:告诉gradle用哪个SDK版本来编译,和运行时要求的版本号没有关系;(SDK maneger 中 SDK Platforms的安装对应的版本)

buildToolsVersion:版本需要大于等于compileSdkVersion;高版本的buildTools可以构建低版本编译的Android程序;(SDK maneger 中 SDK Tools的安装对应的版本)

targetSdkVersion:是 Android 系统提供前向兼容的主要手段;

android {
    compileSdkVersion 28//同步gradle时候注意用项目试图观察使用的是否都是这个版本
    buildToolsVersion "32.0.2"//有多高升多高尽量大
    useLibrary 'org.apache.http.legacy'//带上这个库升级要进行下步
    defaultConfig {
        applicationId "com.xx.xx"
        minSdkVersion 23
        targetSdkVersion 28
        }
    }
}

buildToolsVersion尽量最新,安卓14要求targetSdkVersion的版本最小28,所以compileSdkVersion最小也是28,防止使用org.apache.http.legacy出现闪退

<application
    android:usesCleartextTraffic="true">//这个属性要求minSdkVersion最小23
    <uses-library android:name="org.apache.http.legacy" android:required="false"/> 
</application>
  • compileSdkVersion尽量填最新的,以确保你能使用最新的API。
  • buildToolsVersion尽量最高的,因为新的兼容旧的。
  • minSdkVersion可以适量填小一点,以确保更多的人群能够使用。
  • targetSdkVersion可以根据需要来,比如想要使用到新系统的一些新特性。
  • 根据上述四个版本的特点,可以得出以下结论。
    minSdkVersion <= targetSdkVersion <= compileSdkVersion

安卓13权限适配

防止H5发消息给APP闪退在AndroidManifest.xml增加一行

<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

找回过期的库

最好找modules目录的原始aar文件(如果有)

/Users/alfred/.gradle/caches/modules-2/files-2.1/com.github.wildma/IDCardCamera/1.1.1/xxx/IDCardCamera-1.1.1.aar

没有只能拿之前编译成功的

.gradle/caches/transforms-2/files-2.1/xxx/picture_library-v2.0.1找到源文件直接压缩成zip改名aar,注意缓存里目录结构不同,要把.jar包文件放在最外层!!!

//implementation(‘com.github.LuckSiege.PictureSelector:picture_library:v2.0.1’) //Users/alfred/.gradle/caches/transforms-2/files-2.1/a1941803db8953e6e6e55ea2781d9485/picture_library-v2.0.1 implementation files(‘libs/picture_library-v2.0.1.aar’)

修改aar库:

  1. 在git上最好找到原java代码(找不到源码其次选择varaneckas.com/jad工具反编译class到java),同样的类在主项目复制成一摸一样的目录和文件。(https://github.com/skylot/jadx)
  2. clean并编译项目,在编译主项目过程中/build/intermediates/javac目录下找到编译的.class文件
  3. 替换aar库里的同名class文件
  4. 用https://github.com/java-decompiler/jd-gui 检查是否能正确读取class
  5. 其他class修改工具https://github.com/ingokegel/jclasslib

android studio 的模拟器在苹果的M1 arm cpu 下无法安装模拟器。(新版AS已经解决此问题)

只能用临时的模拟器,详情查github页面
文章极致简洁
数字化区块时代 » 安卓开发问题

发表回复