〇、前言
Google 官方针对 Jetpack Compose 的 Android 开发者挑战赛今天已经公布了第四周也就是最后一周的题目,面对这一新的技术趋势大佬们个个摩拳擦掌,看的我也蠢蠢欲动,学习的过程中发现坑还是不少的,特此记录下。
一、使用Android Studio 预览版本
目前(2021-03-18)Android Studio 最新的稳定版是4.1.2,还不支持 Jetpack Compose 开发,进行 Jetpack Compose 开发需要Android studio 4.2 最新预览版本,官网下载预览版本是免安装版本,直接打开 \bin\studio64.exe 即可。
二、项目配置
新建项目同步时直接报错:
Build file 'D:\AndroidCode\AndroidStudioProjects\Demo031803\app\build.gradle' line: 2
> Failed to apply plugin 'com.android.internal.application'.
> java.util.concurrent.ExecutionException: java.lang.NoSuchMethodException: java.lang.invoke.MethodHandles.privateLookupIn(java.lang.Class, java.lang.invoke.MethodHandles$Lookup)
* Try:
Run with --scan to get full insights.
这是由于gradle版本和Java版本不对应导致的,新项目默认 Gradle 版本是 6.8.2,Gradle Plugin 版本是 7.0.0-alpha10:
与此对应,Java版本需要Java 11,修改JDK为Embedded JDK即可:
或者修改适合的Gradle及Gradle Plugin版本也可以。
三、 Jetpack Compose 预览
既然 Jetpack Compose 是声明式UI,那必须得能预览啊,不过可能会遇到这种情况:A successful build is needed before the preview can be displayed.
此时需要 重新将项目Rebuild一下(Build -> Rebuild Project),成功后就可以看到预览视图。如果仍然没有显示预览视图,则需要将AS关闭重新打开项目
四、API被废弃
目前 Jetpack Compose Beta 版刚刚发布,Beta 版也意味着其 API 相对稳定,在此之前的预览版的 API 都不稳定,API被废弃也是正常,所以之前的写法直接用过来报红的话也不一定是环境问题,看看API有没有被废弃。
比如:ScrollableRow、ScrollableColumn函数已在alpha11版本已被标记废弃,建议使用LazyRow、LazyColumn代替。