Plugin cloud_firestore yêu cầu ứng dụng của bạn được di chuyển sang Android nhúng v2

最近学flutter,网上下载别人的flutter工程尝试运行flutter pub get,报错如下:提示我需要将flutter从V1项目升级V2

Your Flutter application is created using an older version of the Android
embedding. It's being deprecated in favor of Android embedding v2. Follow the
steps at

//flutter.dev/go/android-project-migration

to migrate your project.

根据官方提供的地址以及参考提供的方法,最终只需要改动\android\app\src\main目录下的AndroidManifest. xml文件。增加如下内容:


    
        
    

Kể từ ngày 1. Bản phát hành ngày 12 tháng 12, API plugin mới có sẵn cho nền tảng Android. API cũ dựa trên

  
         
         
             
             
         
     
4 sẽ không bị phản đối ngay lập tức, nhưng chúng tôi khuyến khích bạn chuyển sang API mới dựa trên
  
         
         
             
             
         
     
5

API mới có lợi thế là cung cấp một bộ trình truy cập sạch hơn cho các thành phần phụ thuộc vào vòng đời so với các API cũ. Chẳng hạn, có thể trả về null nếu Flutter không được đính kèm với bất kỳ hoạt động nào

Nói cách khác, các plugin sử dụng API cũ có thể tạo ra các hành vi không xác định khi nhúng Flutter vào ứng dụng Android. Hầu hết các plugin Flutter được cung cấp bởi rung. nhóm nhà phát triển đã được di chuyển. [Tìm hiểu cách trở thành nhà xuất bản được xác minh trên pub. nhà phát triển. ] Để biết ví dụ về plugin sử dụng API mới, hãy xem gói pin plus

Các bước nâng cấp

Các hướng dẫn sau đây phác thảo các bước để hỗ trợ API mới

  1. Cập nhật lớp plugin chính [

      
             
             
                 
                 
             
         
    
    7] để triển khai giao diện
      
             
             
                 
                 
             
         
    
    5. Đối với các plugin phức tạp hơn, bạn có thể tách
      
             
             
                 
                 
             
         
    
    5 và
     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    0 thành hai lớp. Xem phần tiếp theo, , để biết thêm chi tiết về cách truy cập tài nguyên ứng dụng bằng phiên bản nhúng mới nhất [v2]

    Ngoài ra, hãy lưu ý rằng plugin vẫn phải chứa phương thức tĩnh

     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    1 để duy trì khả năng tương thích với các ứng dụng không sử dụng tính năng nhúng Android v2. [Xem Nâng cấp trước 1. 12 dự án Android để biết chi tiết. ] Điều dễ làm nhất [nếu có thể] là chuyển logic từ
     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    1 sang một phương thức riêng tư mà cả
     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    1 và
     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    4 đều có thể gọi.
     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    1 hoặc
     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    4 sẽ được gọi, không phải cả hai

    Ngoài ra, bạn nên ghi lại tất cả các thành viên công khai không bị ghi đè trong plugin. Trong kịch bản bổ sung vào ứng dụng, các lớp này có thể truy cập được đối với nhà phát triển và yêu cầu tài liệu

  2. [Tùy chọn] Nếu plugin của bạn cần tham chiếu

     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    7, hãy triển khai cả giao diện
     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    8

  3. [Tùy chọn] Nếu plugin của bạn dự kiến ​​sẽ được giữ trong Dịch vụ nền tại bất kỳ thời điểm nào, hãy triển khai giao diện

     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    
    9

  4. Cập nhật ứng dụng mẫu của

     
     
    
    0 để sử dụng tính năng nhúng v2
     
     
    
    1. Để biết chi tiết, xem Nâng cấp trước 1. 12 dự án Android. Bạn có thể phải tạo một hàm tạo công khai cho lớp plugin của mình nếu một hàm chưa tồn tại. Ví dụ

     package io.flutter.plugins.firebasecoreexample;
    
     import io.flutter.embedding.android.FlutterActivity;
     import io.flutter.embedding.engine.FlutterEngine;
     import io.flutter.plugins.firebase.core.FirebaseCorePlugin;
    
     public class MainActivity extends FlutterActivity {
       // You can keep this empty class or remove it. Plugins on the new embedding
       // now automatically registers plugins.
     }
    

  5. [Tùy chọn] Nếu bạn đã xóa

     
     
    
    0, hãy cập nhật
     
     
    
    3 để sử dụng
     
     
    
    4. Ví dụ

      
             
             
                 
                 
             
         
    

  6. [Tùy chọn] Tạo tệp

     
     
    
    5] sử dụng nhúng v1 cho dự án mẫu trong cùng thư mục với
     
     
    
    6 để tiếp tục kiểm tra khả năng tương thích của nhúng v1 với plugin của bạn. Lưu ý rằng bạn phải đăng ký thủ công tất cả các plugin thay vì sử dụng
     
     
    
    7. Ví dụ

     package io.flutter.plugins.batteryexample;
    
     import android.os.Bundle;
     import io.flutter.app.FlutterActivity;
     import io.flutter.plugins.battery.BatteryPlugin;
    
     public class EmbeddingV1Activity extends FlutterActivity {
       @Override
       protected void onCreate[Bundle savedInstanceState] {
         super.onCreate[savedInstanceState];
         BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
       }
     }
    

  7. Thêm

     
     
    
    8 vào
     
     
    
    3. Điều này đặt ứng dụng mẫu để sử dụng tính năng nhúng v2

  8. [Tùy chọn] Nếu bạn đã tạo một

     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    0 ở bước trước, hãy thêm
     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    0 vào tệp
     
     
    
    3. Ví dụ

     
     
    

Kiểm tra plugin của bạn

Các bước còn lại giải quyết việc kiểm tra plugin của bạn, chúng tôi khuyến khích nhưng không bắt buộc

  1. Cập nhật

     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    3 để thay thế các tham chiếu tới
     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    4 bằng
     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    5

     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    

     dependencies {
     ...
     androidTestImplementation 'androidx.test:runner:1.2.0'
     androidTestImplementation 'androidx.test:rules:1.2.0'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     ...
     }
    

  2. Thêm tệp kiểm tra cho

     
     
    
    6 và
     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    0 trong
     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    8. Bạn sẽ cần tạo các thư mục này. Ví dụ

     package io.flutter.plugins.firebase.core;
    
     import androidx.test.rule.ActivityTestRule;
     import io.flutter.plugins.firebasecoreexample.MainActivity;
     import org.junit.Rule;
     import org.junit.runner.RunWith;
    
     @RunWith[FlutterRunner.class]
     public class MainActivityTest {
       // Replace `MainActivity` with `io.flutter.embedding.android.FlutterActivity` if you removed `MainActivity`.
       @Rule public ActivityTestRule rule = new ActivityTestRule[MainActivity.class];
     }
    

     package io.flutter.plugins.firebase.core;
    
     import androidx.test.rule.ActivityTestRule;
     import io.flutter.plugins.firebasecoreexample.EmbeddingV1Activity;
     import org.junit.Rule;
     import org.junit.runner.RunWith;
    
     @RunWith[FlutterRunner.class]
     public class EmbeddingV1ActivityTest {
       @Rule
       public ActivityTestRule rule =
           new ActivityTestRule[EmbeddingV1Activity.class];
     }
    

  3. Thêm

     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    9 và
     dependencies {
     ...
     androidTestImplementation 'androidx.test:runner:1.2.0'
     androidTestImplementation 'androidx.test:rules:1.2.0'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     ...
     }
    
    0 dev_dependencies vào
     dependencies {
     ...
     androidTestImplementation 'androidx.test:runner:1.2.0'
     androidTestImplementation 'androidx.test:rules:1.2.0'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     ...
     }
    
    1 và
     dependencies {
     ...
     androidTestImplementation 'androidx.test:runner:1.2.0'
     androidTestImplementation 'androidx.test:rules:1.2.0'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     ...
     }
    
    2

     integration_test:
       sdk: flutter
     flutter_driver:
       sdk: flutter
    

  4. Cập nhật phiên bản môi trường Flutter tối thiểu trong

     dependencies {
     ...
     androidTestImplementation 'androidx.test:runner:1.2.0'
     androidTestImplementation 'androidx.test:rules:1.2.0'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     ...
     }
    
    1. Tất cả các plugin trong tương lai sẽ đặt phiên bản tối thiểu thành 1. 12. 13+bản sửa lỗi. 6, đây là phiên bản tối thiểu mà chúng tôi có thể đảm bảo hỗ trợ. Ví dụ

     environment:
       sdk: ">=2.16.1 =1.17.0"
    

  5. Tạo một bài kiểm tra đơn giản trong

     dependencies {
     ...
     androidTestImplementation 'androidx.test:runner:1.2.0'
     androidTestImplementation 'androidx.test:rules:1.2.0'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     ...
     }
    
    4. Với mục đích kiểm tra PR bổ sung hỗ trợ nhúng v2, chúng tôi đang thử kiểm tra một số chức năng rất cơ bản của plugin. Đây là thử nghiệm khói để đảm bảo rằng plugin đăng ký đúng cách với trình nhúng mới. Ví dụ

      
             
             
                 
                 
             
         
    
    0

  6. Chạy thử

     defaultConfig {
       ...
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
       ...
     }
    
    9 thử nghiệm tại địa phương. Trong một thiết bị đầu cuối, làm như sau

      
             
             
                 
                 
             
         
    
    1

plugin cơ bản

Để bắt đầu với plugin Flutter Android trong mã, hãy bắt đầu bằng cách triển khai

  
         
         
             
             
         
     
5

  
         
         
             
             
         
     
2

Như được hiển thị ở trên, plugin của bạn có thể [hoặc có thể không] được liên kết với trải nghiệm Flutter nhất định tại bất kỳ thời điểm nào. Bạn nên cẩn thận khởi tạo hành vi của phần bổ trợ của mình trong

 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
4, sau đó dọn sạch các tham chiếu của phần bổ trợ trong
 dependencies {
 ...
 androidTestImplementation 'androidx.test:runner:1.2.0'
 androidTestImplementation 'androidx.test:rules:1.2.0'
 androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
 ...
 }
8

FlutterPluginBinding cung cấp cho plugin của bạn một số tài liệu tham khảo quan trọng

ràng buộc. getFlutterEngine[] Trả về
 dependencies {
 ...
 androidTestImplementation 'androidx.test:runner:1.2.0'
 androidTestImplementation 'androidx.test:rules:1.2.0'
 androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
 ...
 }
9 mà plugin của bạn được đính kèm, cung cấp quyền truy cập vào các thành phần như
 package io.flutter.plugins.firebase.core;

 import androidx.test.rule.ActivityTestRule;
 import io.flutter.plugins.firebasecoreexample.MainActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;

 @RunWith[FlutterRunner.class]
 public class MainActivityTest {
   // Replace `MainActivity` with `io.flutter.embedding.android.FlutterActivity` if you removed `MainActivity`.
   @Rule public ActivityTestRule rule = new ActivityTestRule[MainActivity.class];
 }
0,
 package io.flutter.plugins.firebase.core;

 import androidx.test.rule.ActivityTestRule;
 import io.flutter.plugins.firebasecoreexample.MainActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;

 @RunWith[FlutterRunner.class]
 public class MainActivityTest {
   // Replace `MainActivity` with `io.flutter.embedding.android.FlutterActivity` if you removed `MainActivity`.
   @Rule public ActivityTestRule rule = new ActivityTestRule[MainActivity.class];
 }
1, v.v. ràng buộc. getApplicationContext[] Trả về
 package io.flutter.plugins.firebase.core;

 import androidx.test.rule.ActivityTestRule;
 import io.flutter.plugins.firebasecoreexample.MainActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;

 @RunWith[FlutterRunner.class]
 public class MainActivityTest {
   // Replace `MainActivity` with `io.flutter.embedding.android.FlutterActivity` if you removed `MainActivity`.
   @Rule public ActivityTestRule rule = new ActivityTestRule[MainActivity.class];
 }
2 của ứng dụng Android cho ứng dụng đang chạy

Plugin UI/Hoạt động

Nếu plugin của bạn cần tương tác với giao diện người dùng, chẳng hạn như yêu cầu quyền hoặc thay đổi giao diện người dùng Android chrome, thì bạn cần thực hiện các bước bổ sung để xác định plugin của mình. Bạn phải triển khai giao diện

 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
8

  
         
         
             
             
         
     
3

Để tương tác với một

 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
7, plugin
 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
8 của bạn phải thực hiện hành vi phù hợp ở 4 giai đoạn. Đầu tiên, plugin của bạn được gắn vào một
 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
7. Bạn có thể truy cập vào
 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
7 đó và một số cuộc gọi lại của nó thông qua
 package io.flutter.plugins.firebase.core;

 import androidx.test.rule.ActivityTestRule;
 import io.flutter.plugins.firebasecoreexample.MainActivity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;

 @RunWith[FlutterRunner.class]
 public class MainActivityTest {
   // Replace `MainActivity` with `io.flutter.embedding.android.FlutterActivity` if you removed `MainActivity`.
   @Rule public ActivityTestRule rule = new ActivityTestRule[MainActivity.class];
 }
8 được cung cấp

Vì các

 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
7 có thể bị hủy trong quá trình thay đổi cấu hình, bạn phải dọn sạch mọi tham chiếu đến
 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
7 đã cho trong
 package io.flutter.plugins.firebase.core;

 import androidx.test.rule.ActivityTestRule;
 import io.flutter.plugins.firebasecoreexample.EmbeddingV1Activity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;

 @RunWith[FlutterRunner.class]
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule rule =
       new ActivityTestRule[EmbeddingV1Activity.class];
 }
1, sau đó thiết lập lại các tham chiếu đó trong
 package io.flutter.plugins.firebase.core;

 import androidx.test.rule.ActivityTestRule;
 import io.flutter.plugins.firebasecoreexample.EmbeddingV1Activity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;

 @RunWith[FlutterRunner.class]
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule rule =
       new ActivityTestRule[EmbeddingV1Activity.class];
 }
2

Cuối cùng, trong

 package io.flutter.plugins.firebase.core;

 import androidx.test.rule.ActivityTestRule;
 import io.flutter.plugins.firebasecoreexample.EmbeddingV1Activity;
 import org.junit.Rule;
 import org.junit.runner.RunWith;

 @RunWith[FlutterRunner.class]
 public class EmbeddingV1ActivityTest {
   @Rule
   public ActivityTestRule rule =
       new ActivityTestRule[EmbeddingV1Activity.class];
 }
3 plugin của bạn sẽ dọn sạch tất cả các tham chiếu liên quan đến hành vi của
 package io.flutter.plugins.batteryexample;

 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
 import io.flutter.plugins.battery.BatteryPlugin;

 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate[Bundle savedInstanceState] {
     super.onCreate[savedInstanceState];
     BatteryPlugin.registerWith[registrarFor["io.flutter.plugins.battery.BatteryPlugin"]];
   }
 }
7 và quay lại cấu hình không phải giao diện người dùng

Làm cách nào để di chuyển sang Android Embedding V2 Flutter?

Trường hợp thứ hai. .
Để nâng cấp ứng dụng Flutter hiện tại của bạn lên Flutter 2. 0, tất cả những gì bạn phải làm là
Chạy nâng cấp rung trong môi trường mã để nâng cấp ứng dụng Flutter của bạn
Chạy phi tiêu di chuyển để thực thi công cụ di chuyển phi tiêu
Giải quyết tất cả các lỗi mà công cụ di chuyển hiển thị

Làm cách nào để sửa plugin tflite sử dụng phiên bản nhúng Android không dùng nữa?

Plugin tflite sử dụng phiên bản nhúng Android không dùng nữa. Để tránh lỗi thời gian chạy không mong muốn hoặc lỗi xây dựng trong tương lai, hãy thử xem plugin này có hỗ trợ nhúng Android V2 không . Mặt khác, hãy cân nhắc xóa nó vì bản phát hành Flutter trong tương lai sẽ xóa các API không dùng nữa này.

Làm cách nào để sử dụng plugin Android trong Flutter?

Cách viết plugin Flutter .
Giới thiệu
Thiết lập môi trường Flutter của bạn
Tạo mẫu plugin
Xây dựng và chạy ví dụ
Thêm mã dành riêng cho nền tảng
Thiết kế plugin API
Triển khai mã nền tảng plugin
Triển khai giao diện người dùng mẫu

Chủ Đề