Google Flutter 編譯時出現Warning: Mapping new ns to old ns

 在一次Android Studio更新完成後,重新執行指令:flutter run時,出現下列的訊息:

Warning: Mapping new ns ... to old ns ...

在網路找了好久,才找到是Android Studio是以Gradle來建置系統,而出現的Mapping訊息是指版本不一致。

因為我是用Visual Studio Code,所以要開啟Android Studio,在File -> Project Structure內可以找到版本訊息。



接著開啟/projcet/android/build.gradle,並修改dependencies內容,將版本更改,如下改為7.2.1:

classpath 'com.android.tools.build:gradle:7.2.1'

再來開啟/project/android/gradle/wrapper/gradle-wrapper.properties,並修改內容,將版本改為為7.3.3,如下:

distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip

最後執行flutter clean後,再重新執行flutter run,此時就沒有出現Mapping的訊息了。


在Android模擬器中設定指紋

 在測試Flutter的程式時,需要用到指紋的功能,這在實機上是沒有問題的。但是模擬器中要如何設定呢?

因為我們的電腦沒有指紋讀取機,所以沒有辦法設定真實的指紋,但是利用adb可以設定虛擬的指紋資料。

首先執行adb來檢查是否可以連結到模擬機

c:\> adb devices

接著在android模擬器中依照設定指紋的方式來準備設定,如下圖


要按下指紋的這一步,直接輸入語法:adb emu finger touch 自訂ID,如下:
c:\> adb emu finger touch 123

換句話說,就是用指令來取代指紋,之後如果要用指紋解鎖時,如下圖螢幕要解鎖時,
一樣輸入語法:adb emu finger touch 設定ID
例如:adb emu finger touch 123,就可以模擬指紋來解鎖了。



Google Flutter local_auth Error: no_fragment_activity

 最近在學習Google Flutter時,使用了local_auth的指紋認證package,在執行時出現下列的警告:

PlatformException(no_fragment_activity, local_auth plugin requires activity to be a FragmentActivity.,null,null)

到專案目錄底下,開啟MainActivity.kt,例如我的目錄如下:F:\Project\test01\android\app\src\main\kotlin\com\example\test01\

增加下列:
import io.flutter.embedding.android.FlutterFragmentActivity

將FlutterActivity改為FlutterFragmentActivity:

class MainActivity: FlutterActivity() {}
改成
class MainActivity: FlutterFragmentActivity() { }

重新執行即可解決。發生此原因是因為local_auth需要使用FlutterFragmentActivity類別來呈現出指紋視窗