Flutter 使用 安卓 制作的Library

1.打开 Android Studio,创建一个新项目或在现有项目中添加一个 Android Library 模块:
File -> New -> New Module -> Android Library。
模块名称:例如 mylibrary。

2.项目结构如下:
mylibrary/
├── src/main/
│ ├── kotlin/com/example/mylibrary/
│ │ ├── Calculator.kt
│ │ ├── CalculatorImpl.kt
│ │ ├── CalculatorFactory.kt
│ ├── AndroidManifest.xml
├── build.gradle

2.1 编写 Kotlin 代码
Calculator.kt(接口)
package com.example.mylibrary

interface Calculator {
fun add(a: Int, b: Int): Int
}

CalculatorImpl.kt(实现)

package com.example.mylibrary

internal class CalculatorImpl : Calculator {
override fun add(a: Int, b: Int): Int {
return a + b // 具体实现
}
}

CalculatorFactory.kt(工厂类)
package com.example.mylibrary

object CalculatorFactory {
fun getCalculator(): Calculator {
return CalculatorImpl()
}
}
2.2 打包 AAR
在 Android Studio 中,点击 Build -> Rebuild Project。
运行以下命令生成 AAR:
bash
./gradlew :mylibrary:assembleRelease
输出文件位于:
mylibrary/build/outputs/aar/mylibrary-release.aar

3.1 添加 AAR 依赖
将 mylibrary-release.aar 复制到目标项目的 app/libs/ 目录。
修改目标项目的 app/build.gradle:
gradle
dependencies {
implementation files('libs/mylibrary-release.aar')
}

3.2 调用接口
在目标项目的 Kotlin 代码中:
package com.example.myflutterapp

import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import com.example.mylibrary.CalculatorFactory

class MainActivity: FlutterActivity() {
private val CHANNEL = "com.example/calculator"

override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
        if (call.method == "add") {
            val a = call.argument<Int>("a") ?: 0
            val b = call.argument<Int>("b") ?: 0
            val calculator = CalculatorFactory.getCalculator()
            val sum = calculator.add(a, b)
            result.success(sum)
        } else {
            result.notImplemented()
        }
    }
}

}

3.3 在 Dart 中调用
lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
static const platform = MethodChannel('com.example/calculator');
String _result = 'Waiting for result...';

Future<void> _calculateAdd(int a, int b) async {
try {
final int result = await platform.invokeMethod('add', {'a': a, 'b': b});
setState(() {
_result = 'Result: a +b = result'; }); } catch (e) { setState(() { _result = 'Error:e';
});
}
}

@Override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('AAR Library Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_result),
ElevatedButton(
onPressed: () => _calculateAdd(5, 3),
child: Text('Calculate 5 + 3'),
),
],
),
),
),
);
}
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容