Flutter學(xué)習(xí)(2)-原生Android通過(guò)aar方式集成Flutter

生成aar包:

app/build.gradle中的apply plugin: ‘com.android.application'
改為apply plugin: ‘com.android.library',
同時(shí)注釋掉 applicationId "com.he.flutter_app",
并且將清單文件修改為:

<manifest  package="com.he.flutter_app"/>

執(zhí)行命令:

cd android 
./gradlew assembleRelease

生成的aar路徑:

flutter_app/build/app/outputs/aar/app-release.aar 

上述打包成功的aar就可以作為普通的aar集成到Android項(xiàng)目中了

1、拷貝aar到現(xiàn)有android項(xiàng)目中,拷貝到libs目錄下
2、配置build.gradle

repositories {
    flatDir { dirs 'libs' }
}

dependencies {
    compile(name: 'app-release', ext: 'aar')
}

3、展示Flutter界面
其實(shí)就是模仿新建的flutter項(xiàng)目,在application中初始化

FlutterMain.startInitialization(this);

然后新建一個(gè)Activity繼承FlutterActivity

public class FlutterMainActivity extends FlutterActivity {

//跳轉(zhuǎn)該頁(yè)面的時(shí)候可以傳要跳轉(zhuǎn)的頁(yè)面,參數(shù)名固定為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());這句話(huà)對(duì)應(yīng)的界面了。
可以看到我們還有傳參,那么這個(gè)參數(shù)就可以在flutter里面接收到,我們可以根據(jù)這個(gè)參數(shù)的值來(lái)跳轉(zhuǎn)對(duì)應(yīng)的界面。

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容