2021年8月7日 星期六

for xamarin android :「android string types not allowed (at 'background' with value ' '). 」發生在第2行

 最近應人客的要求,小改界面(layout file),可是build卻出現了「android string types not allowed (at 'background' with value ' ').」而且是在第二行.....





可是明明在xml中第2行也不是background的設定啊...

------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

     android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@android:color/white"

    android:orientation="horizontal">

....

.....

------------------------------------------------------

到底遇到了什麼靈異事件了!? (就算把上述的background行拿掉,re build還是一樣的錯誤訊息)


答案是.....錯誤訊息的「行」是xml reader read 進去時以xml節點去算的,第一行是<?xml versin.....?>

而其他的元素,就算在第二行,如同意大利線條一整條吃進去,,所以在其中任意子節點的錯,都算在第2行裡

所以,就算是把最開頭的LinearLayout裡的background行刪去,只要整個xml檔其他地方有錯,都是出現「第二行出錯」的訊息 (就算是在layout designer看來都對的情況下)

但,好歹知道是background屬性錯了,那就一個一個background屬性去找就對了

好,最有可能是不小心改到的background值.

------------------------------------------

 <ImageButton

            android:id="@+id/xxxxxxxx"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_centerVertical="true"

            android:background=""

             />

----------------------------------

少年仔,background沒咧安呢用的,要嘛就不寫,要不就用"@null"  就是了

(但,如果你有  android:src="@drawable/xxxx" 屬性,卻想設定他去背--支援透明的話,就可以設定「android:background="#00000000"」了)


總之,儘信 IDE不如無IDE啊. Layout designer看到正常的東西,未必就是正確的啊



一起加油囉



2021年8月2日 星期一

for Xamarin IOS:送Apple store審後回報出現「/System/Library/Frameworks/SensorKit.framework/SensorKit' not found」問題

 明明在IDE中用開發模式連iphone測都正常,以往這樣送審都會過,

沒辦法,現在已經規定iphone & ipad都要過才准上架

這次送審時回報app在ipad中掛了,訊息落落長,總歸這句
"/System/Library/Frameworks/SensorKit.framework/SensorKit' not found"

(當然也包括了明明沒用到Health Kit卻說要你移除的「建議」)

好在一堆人也幫你踢了鐵板了

最主要的就是要把link模式設定為「Link Framework SDKs Only」 (預設是Don't Link)

打包測完確定這樣link模式可以跑(而且test flight成員也測了沒事)

如果Link Framework SDKs Only會掛的話,建議降版--改用sdk 14.4

並修改info.plist版本,從14.x降回13.6

(不管你怎麼改,總而言之就是要確定「Link Framework SDKs Only」能work就是了啦)



當然如果還不放心可以在mtouch中加上--weak-framework SensorKit
再打包送審,這樣二進位檔案無法在ipad上執行的問題就會過關了
(而且連帶的healthkit問題也解決了!!!)

參考這位先進的原po

大家加油囉


同場加映:

如果在clear project時,遇到以下錯誤

----------------------------------

Clean started...

The build was cancelled because another Xamarin operation is running. Please try again in a moment.

1>Error: The operation could not be completed. 無法指出的錯誤 

========== Clean: 0 succeeded, 2 failed, 0 skipped ==========

----------------------------------

請把project  unload 再reload回去就可以了