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類別來呈現出指紋視窗


Google Flutter build winodws app error:Bad UTF-8 encoding...

 最近在研究google flutter這個跨平台的程式語言,已成功建置andriod與web,今天來測試windows的部份。

我已經安裝好vistual studio 2022 Community版,接著執行flutter doctor來檢查,結果出現下列的錯誤:Bad UTF-8 encoding found while decoding string


在這裡有提到解決的方案:
https://github.com/flutter/flutter/issues/102451#issuecomment-1124651845

依說明到 https://github.com/microsoft/vswhere/releases 下載vswhere.exe,並把它取代原本的檔案。
vswhere.exe路徑:C:\Program Files (x86)\Microsoft Visual Studio\Installer

完成後,重新執行flutter doctor檢查,這次檢查就成功了,接著再執行flutter build windows來建置也沒有問題了。



啟動Android Emulator時出現could not detect ADB binary

 我在開啟android Emulator時出現一個訊息如下,主要是說沒有辦法自動發現ADB binary


此時可以在模擬器中手動定ADB的路徑位置,如下圖,先把「Use detected ADB location」的選項取消掉。


取消後就可以手動選擇ADB的路徑如下圖。



Android Emulator在Win10啟動時出現Another emulator is still running

 今天在嘗試學習Fultter時,安裝完Android Studio與設定好emulator後,在命令列執行指令以啟動emulator時出現下列的錯誤:

WARNING | Another emualtor is still running, wait for a sec...

其實訊息明白是說已經有一個emualtor在執行,但是我卻沒有看見任何的emualtor。

在Win 10下,Android是使用qemu_system_x86_64.exe來管理虛擬機,所以開啟工作管理員後,再把qemu_system_x86_64.exe刪掉後就可以了。






D3.js:利用image()函數來加入圖片

下列是程式碼範例,利用image()函數來加入圖片

svg_01 = d3.select("#div01").append("svg")

        .attr("width", "100%")

        .attr("height", "100%")

        .attr("viewBox","0 0 300 80")

        .attr("id", "ID001")

        .append("g")

svg_01.append("svg:image")

    .attr('x', 100) //x座標

    .attr('y', 100) //y座標

    .attr('width', 150) //指定圖片寬度

    .attr('height', 150) //指定圖片長度

    .attr("xlink:href", "img/001.png") //圖片路徑與檔名