国产亚洲欧美人成在线,免费视频爱爱太爽了无码,日本免费一区二区三区高清视频 ,国产真实伦对白精彩视频

歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
電話圖標(biāo) 余先生:13699882642

網(wǎng)站百科

為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴

flutter 結(jié)構(gòu)改動(dòng)

發(fā)表日期:2018-12 文章編輯:小燈 瀏覽次數(shù):2261

為什么要改結(jié)構(gòu)?

比如我寫了一個(gè)阿里支付的 plugin ,其默認(rèn)結(jié)構(gòu)應(yīng)該是這樣的

xxxLib --android //android 的代碼 --ios //ios 的代碼,這個(gè)里面我沒有實(shí)現(xiàn) --lib //flutter 的代碼 

flutter 的工程想使用當(dāng)然沒問題,

那要是android 工程想引用呢?僅當(dāng)做android 工程的一個(gè)lib?

因?yàn)檫@個(gè)lib 依賴 flutter.jar 所以要加入,要不然無法單獨(dú)編譯

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 

那么要傳到遠(yuǎn)程倉庫上怎么辦呢?遠(yuǎn)程倉庫沒flutter 環(huán)境怎么編譯出產(chǎn)物

1.把jar包放進(jìn)去
2.把flutter的相關(guān)代碼去了

于是成了下面這樣

if (rootProject.getExtensions().findByName(getName())==null){ ext.set("moduleType",Type.isModule.name()) }else{ ext.set("moduleType",rootProject.getExtensions().getByName(getName())) } enum Type{ isAPP, //app運(yùn)行 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運(yùn)行 isModule, //android lib 庫 isFlutterPlugin; //flutterplugins } 

目錄結(jié)構(gòu)如下


QQ20181201-124355@2x.png

flutter 工程引用要做些什么改動(dòng)?

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運(yùn)行 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 } } 

這樣結(jié)構(gòu)就被改動(dòng)了,如果要用ios 的話不要這么改

ali_pay 的鏈接


本頁內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學(xué)習(xí)參考,本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁中由涉嫌抄襲的內(nèi)容,請(qǐng)及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會(huì)在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://jstctz.cn/17662.html
相關(guān)APP開發(fā)