报红??????看一下报的错误吧。
Type mismatch.
Required: Lifecycle!
Found: androidx.lifecycle.Lifecycle
看来是类型不匹配啊,androidx 是 support 包整合之后,用以解决 support 包混乱的问题,没关系,换成 support(flutter 也支持 androidx,在新建工程的时候下方有个选项是否使用 androidX,28 版本是 support 库最后支持的版本,后面都要使用 androidX)。同时,将 gradle.properties
设置为useAndroidX=false
、enableJetifier=false
// 将 androidx 依赖改成这个
implementation “com.android.support:appcompat-v7:28.0.0”
再试一把:加入代码
setContentView(flutterView)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
FlutterMain.startInitialization(this)
val flutterView = Flutter.createView(this, lifecycle, “/main”)
setContentView(flutterView)
}
}
可以简单理解为创建了一个 View,然后设置为布局
@NonNull
public static FlutterView createView(@NonNull final Activity activity,
@NonNull final Lifecycle lifecycle,
final String initialRoute)
initialRoute
:在 flutter 中设置的页面路由,而在 flutter 工程默认生成的工程中,flutter_module_project/lib/main.dart
没有配置路由,给其配置一个路由:
再试亿把:编译成功了,下载到手机中试一试 方式1:as 里面的 run 方式2:打开 terminal ,输入
flutter run
作为未来的外卖员,该选哪个你心里没点数吗?肯定第一种啊!
Default interface methods are only supported starting with Android N (–min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
在 native 工程的 build.gradle 里面添加如下代码:
android {
…
defaultConfig{
…
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
}
到这里就成了!我们是冠军!
看一下成果(忽略这丑陋的一切):
2.2 - 以 aar 形式引入
在开始骚操作之前,先解剖一下刚刚成功生成的 apk 文件:
libflutter.so
和flutter_assets
是 flutter 运行必备的资源,前者是flutter 框架基础,后者就是 lib 文件夹下的 dart 代码,这就是坑的开始。
2.2.1 - 步骤1:生成 aar
–> 进入 flutter module 工程
两种方式:
- 进入 .android 文件夹,打开 Terminal,输入指令:
./gradlew assembleDebug
编译结束后