android studio 4.1.2 gradle 6.7最新版上测试
1、在flutter项目中打开android项目,在app目录下新建libs并复制test.aar到libs目录下
2,配置android项目build.gradle文件,
repositories {
flatDir {
dirs 'libs'
}
}
以下代码添加build.gradle文件(android{}外面),在dependencies引用
implementation(name: 'test', ext: 'aar')
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.core:core:1.2.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
implementation 'com.google.code.gson:gson:2.7'
//上面的引用是你aar需要引用的东西,都在这里配置
3、在 build.gradle文件添加如下代码(): project.setProperty('target-platform', 'android-arm')//记住需要在下面的配前面apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
添加上面代码是为了使用armeabi-v7a架构,要不然会找不到so,因为本aar库,没有64位的
支持64位支持的aar可以忽略
4、在工程MainActivity中添加如下代码:
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
ThisAppApplication.init(getApplication());
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(),"samples.flutter.dev/battery") //samples.flutter.dev/battery这个可自定义,这里定义了,在Dart文件中需要一样的名称
.setMethodCallHandler(new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
if ("startNativeActivity".equals(call.method)) {
Intent intent = new Intent(MainActivity.this, AppMainActivity.class);
startActivity(intent);
}
}
});
}
5、在需要点击跳转的Dart文件中添加如下代码:
static const channel = MethodChannel("samples.flutter.dev/battery");
Future<void> startNativeActivity() async{
await channel.invokeMethod("startNativeActivity");
}
在按钮点击的地方添加如下代码 startNativeActivity
编译运行(ok)