• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網絡科技有限公司!
    電話圖標 余先生:13699882642

    網站百科

    為您解碼網站建設的點點滴滴

    flutter 結構改動

    發表日期:2018-12 文章編輯:小燈 瀏覽次數:2201

    為什么要改結構?

    比如我寫了一個阿里支付的 plugin ,其默認結構應該是這樣的

    xxxLib --android //android 的代碼 --ios //ios 的代碼,這個里面我沒有實現 --lib //flutter 的代碼 

    flutter 的工程想使用當然沒問題,

    那要是android 工程想引用呢?僅當做android 工程的一個lib?

    因為這個lib 依賴 flutter.jar 所以要加入,要不然無法單獨編譯

    apply plugin: 'com.android.library' def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if(flutterRoot!=null) { project.dependencies { if (project.getConfigurations().findByName("compileOnly")) { compileOnly project.files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar") } else { compile project.files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar") } } } 

    并且要在 local.properties 加入

    flutter.sdk=/Users/mac/Library/flutter flutter.versionName= xxx flutter.versionCode= xxx flutter.buildMode=debug 

    那么要傳到遠程倉庫上怎么辦呢?遠程倉庫沒flutter 環境怎么編譯出產物

    1.把jar包放進去
    2.把flutter的相關代碼去了

    于是成了下面這樣

    if (rootProject.getExtensions().findByName(getName())==null){ ext.set("moduleType",Type.isModule.name()) }else{ ext.set("moduleType",rootProject.getExtensions().getByName(getName())) } enum Type{ isAPP, //app運行 isModule, //android lib 庫 isFlutterPlugin; //flutterplugins } if (moduleType == Type.isAPP.name()){ apply plugin: 'com.android.application' }else { apply plugin: 'com.android.library' if (moduleType == Type.isFlutterPlugin.name()) { def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if(flutterRoot!=null) { project.dependencies { if (project.getConfigurations().findByName("compileOnly")) { compileOnly project.files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar") } else { compile project.files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar") } } } } }sourceSets { main { if(moduleType == Type.isAPP.name()){ manifest.srcFile 'src/module/AndroidManifest.xml' //特別注意這里manifest 的大小寫 不是 Manifest java.srcDirs = [ 'src/main/java', 'src/module/java' ] res.srcDirs = [ 'src/main/res', 'src/module/res' ] }else if(moduleType == Type.isFlutterPlugin.name()){ java.srcDirs = [ 'src/main/java', 'src/flutter/java' ] } } } 

    然后在 工程下的build.gradle中可以用不同的方式

    //這里可以改為不同的編譯方式 rootProject.extensions.add("ali_pay",Type.isFlutterPlugin.name())enum Type{ isAPP, //app運行 isModule, //android lib 庫 isFlutterPlugin; //flutterplugins } 

    目錄結構如下


    QQ20181201-124355@2x.png

    flutter 工程引用要做些什么改動?

    0.pubspec.yaml 里加 plugins 照舊 比如

    ali_pay: path: ../../github/ali_pay/ali_pay/src/flutter 

    1.flutter 工程里的android里的 build.gradle 加入

     //這里可以改為不同的編譯方式 rootProject.extensions.add("ali_pay",Type.isFlutterPlugin.name()) enum Type{ isAPP, //app運行 isModule, //android lib 庫 isFlutterPlugin; //flutterplugins } 

    2.flutter 工程里的android里的 settings.gradle 改為

    def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()def plugins = new Properties() def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') if (pluginsFile.exists()) { pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } }plugins.each { name, path -> def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() if(!pluginDirectory.exists()){ pluginDirectory = flutterProjectRoot.resolve(path).getParent().getParent().toFile() } if(pluginDirectory.exists()){ include ":$name" project(":$name").projectDir = pluginDirectory } } 

    這樣結構就被改動了,如果要用ios 的話不要這么改

    ali_pay 的鏈接


    本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.juherenli.com/17662.html
    相關APP開發
     八年  行業經驗

    多一份參考,總有益處

    聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

    咨詢相關問題或預約面談,可以通過以下方式與我們聯系

    業務熱線:余經理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    精品无码久久久久国产| 亚洲精品国偷自产在线| 久久人人做人人玩人精品| 国产农村妇女毛片精品久久| 国产精品亚洲自在线播放页码| 久草热久草热线频97精品 | 日韩成人国产精品视频| 久久99精品国产免费观看| freesexvideos精品老师毛多| 久久只这里是精品66| 久久99精品久久久久久青青日本| 伊人久久精品影院| 精品少妇人妻AV无码专区不卡 | 日韩精品国产自在久久现线拍| 妇女自拍偷自拍亚洲精品| 亚洲精品在线视频观看| 久久福利青草精品资源站免费| 日韩人妻无码精品无码中文字幕 | 91视频精品全国免费观看| 国产精品久久久久久久| 精品熟女少妇av免费久久| 亚洲综合精品香蕉久久网| 四虎影视永久在线精品| 国语自产偷拍精品视频偷| 国产精品一久久香蕉国产线看| 无码人妻精品中文字幕| 国产亚洲精品岁国产微拍精品| 国产成人精品免费视频大全| 国产精品爽爽va在线观看无码| 在线精品自偷自拍无码中文| 精品综合久久久久久97| 久久国产精品亚洲综合| 亚洲精品~无码抽插| 成人精品视频99在线观看免费 | 少妇人妻偷人精品免费视频| 奇米影视7777久久精品人人爽| 国产精品毛片无码| 一区二区不卡久久精品| 精品一区二区三区免费毛片| 国产精品午夜高清在线观看| 国产精品美女一区二区三区|