生成aar包:
app/build.gradle中的apply plugin: ‘com.android.application'
改为apply plugin: ‘com.android.library',
同时注释掉 applicationId "com.he.flutter_app",
并且将清单文件修改为:
<manifest package="com.he.flutter_app"/>
执行命令:
cd android
./gradlew assembleRelease
生成的aar路径:
flutter_app/build/app/outputs/aar/app-release.aar
上述打包成功的aar就可以作为普通的aar集成到Android项目中了
1、拷贝aar到现有android项目中,拷贝到libs目录下
2、配置build.gradle
repositories {
flatDir { dirs 'libs' }
}
dependencies {
compile(name: 'app-release', ext: 'aar')
}
3、展示Flutter界面
其实就是模仿新建的flutter项目,在application中初始化
FlutterMain.startInitialization(this);
然后新建一个Activity继承FlutterActivity
public class FlutterMainActivity extends FlutterActivity {
//跳转该页面的时候可以传要跳转的页面,参数名固定为route
private static final String ROUTE_PAGE = "route";
public static Intent makeIntent(Context context, String routePage) {
if (routePage == null || routePage.equals("")) {
routePage = "/";
}
Intent intent = new Intent(context, FlutterMainActivity.class);
intent.setAction(Intent.ACTION_RUN);
intent.putExtra(ROUTE_PAGE, routePage);
return intent;
}
public void onCreate(@Nullable Bundle savedInstanceState) {
//或者在这里初始化Flutter
//FlutterMain.startInitialization(this);
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}
然后就能展示Flutter void main() => runApp(new MyApp());这句话对应的界面了。
可以看到我们还有传参,那么这个参数就可以在flutter里面接收到,我们可以根据这个参数的值来跳转对应的界面。
void main() => runApp(_widgetForRoute(window.defaultRouteName));
Widget _widgetForRoute(String route) {
switch (route) {
case 'route1':
return SomeWidget(...);
case 'route2':
return SomeOtherWidget(...);
default:
return Center(
child: Text('Unknown route: $route', textDirection: TextDirection.ltr),
);
}
}
参考文章:https://blog.csdn.net/qq_33666539/article/details/85340704