發表日期:2018-12 文章編輯:小燈 瀏覽次數:2068
比如我寫了一個阿里支付的 plugin ,其默認結構應該是這樣的
xxxLib --android //android 的代碼 --ios //ios 的代碼,這個里面我沒有實現 --lib //flutter 的代碼
因為這個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
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 }
目錄結構如下
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 } }
ali_pay 的鏈接
日期:2018-10 瀏覽次數:7345
日期:2018-12 瀏覽次數:4413
日期:2018-07 瀏覽次數:4949
日期:2018-12 瀏覽次數:4248
日期:2018-09 瀏覽次數:5585
日期:2018-12 瀏覽次數:10001
日期:2018-11 瀏覽次數:4887
日期:2018-07 瀏覽次數:4652
日期:2018-05 瀏覽次數:4937
日期:2018-12 瀏覽次數:4391
日期:2018-10 瀏覽次數:5215
日期:2018-12 瀏覽次數:6288
日期:2018-11 瀏覽次數:4545
日期:2018-08 瀏覽次數:4666
日期:2018-11 瀏覽次數:12726
日期:2018-09 瀏覽次數:5652
日期:2018-12 瀏覽次數:4917
日期:2018-10 瀏覽次數:4259
日期:2018-11 瀏覽次數:4603
日期:2018-12 瀏覽次數:6139
日期:2018-06 瀏覽次數:4080
日期:2018-08 瀏覽次數:5524
日期:2018-10 瀏覽次數:4526
日期:2018-12 瀏覽次數:4613
日期:2018-07 瀏覽次數:4440
日期:2018-12 瀏覽次數:4584
日期:2018-06 瀏覽次數:4472
日期:2018-11 瀏覽次數:4449
日期:2018-12 瀏覽次數:4328
日期:2018-12 瀏覽次數:5352
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.