Car*_*ein 11 java android dart flutter
我一直在尝试为 Flutter 编写平台代码以启动后台服务。在这里,我使用了一个没有完成实际工作的最小示例来表明应用程序根本无法运行。实际的颤振代码根本没有被修改。
主活动.java
public class MainActivity extends FlutterActivity {
Intent i = new Intent(this, MainService.class);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}
Run Code Online (Sandbox Code Playgroud)
主服务.java
public class MainService extends IntentService {
public MainService() {
super("MainService");
}
@Override
protected void onHandleIntent(Intent Intent) {
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
<service android:enabled="true"
android:name=".MainService"></service>
Run Code Online (Sandbox Code Playgroud)
buildVersion > 27 并且 Manifest 文件相应地service添加了标签。
编译并运行 withflutter run -v将显示以下消息:
..
[ +121 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.example.hello/.MainActivity (has extras)}
[ +1 ms] Waiting for observatory port to be available...
Run Code Online (Sandbox Code Playgroud)
并且安装卡住了。
有解决方法吗?如果这是 Flutter 实现中的实际错误,是否也意味着无法在后台运行 Flutter 应用程序?
我遇到了这个问题,并最终将其归结为我将项目的包名称更改为 com.test 的事实。AndroidManifest 中的MyAppName。这不是有效的 Dart 包名称。您可以通过尝试使用创建新项目来验证这一点
flutter create --org com.test MyAppName
这会导致错误消息:
“MyAppName”不是有效的 Dart 包名称。
DO使用
lowercase_with_underscores的包名。包名应该全部小写,用下划线分隔单词,
just_like_this. 仅使用基本的拉丁字母和阿拉伯数字:[a-z0-9_]。另外,请确保名称是有效的 Dart 标识符——它不以数字开头并且不是保留字。
我的解决方案是通过运行重新创建具有所需值的项目
flutter create --org com.test my_app_name
并复制 lib 文件夹、pubspec 文件、任何资产等。这应该可以解决问题。请注意,这会导致 kotlin 文件夹 (android/app/main/kotlin) 根据您指定的域正确设置子文件夹,例如 kotlin/com/test/ 用于 com.test
| 归档时间: |
|
| 查看次数: |
5820 次 |
| 最近记录: |