網頁

2020年11月19日 星期四

解決Gradle DSL method not found: 'implementation()' 及 更換Android Studio Project的Android Gradle plugin version及Gradle Version

在想要加入新版billing library到舊專案時,一直遇到"Gradle DSL method not found: 'implementation()'"的問題,查了下看起來是Project中Gradle的版本問題, 更換方式如下:

對著app按右鍵選Open Module Settings


再點Project就可以選Android Gradle plugin version及Gradle Version


參考網址:

Gradle DSL method not found: 'implementation()'


2020年11月13日 星期五

解決Service Intent must be explicit

更改舊android專案升到api 28時,一直跳出Service Intent must be explicit,找半天解答,如:Service Intent must be explicit的解决方案【完美解决系列】Service Intent must be explicit,都太複雜,後來看到Google In-App billing, IllegalArgumentException: Service Intent must be explicit, after upgrading to Android L Dev Preview,才了解重點在Intent要設定Package字串,如,我在用的是"com.android.vending.billing.MarketBillingService.BIND",就設定intent.setPackage("com.android.vending"),這樣就OK了


參考網址:

Google In-App billing, IllegalArgumentException: Service Intent must be explicit, after upgrading to Android L Dev Preview

2020年11月6日 星期五

HttpClient won't import in Android Studio

在舊專案中在build.gradle中將compileSdkVersion及targetSdkVersion改成28後,突然出現import org.apache.http.HttpResponse有error,整個都沒了,google了下發現是因為sdk 23就不再包進去了,要另外加入底下的設定

android {
    useLibrary 'org.apache.http.legacy'
}

這樣就OK囉~

參考網址:

HttpClient won't import in Android Studio

2020年10月27日 星期二

解決CI框加的Disallowed Key Characters Error

客戶發生"Disallowed Key Characters"的錯誤回覆,找了朋友及自己的,都看起來正常,本以為請客戶清cache就好,但查了下google才發現是CI本身可能有的狀況,跟cookie有關,但看起來原因實在不是太明白。

一開始找到如何解決CI框架的Disallowed Key Characters錯誤提示的寫法,但發現沒用後來找到如何解決CI框架的Disallowed Key Characters錯誤提示_PHP教程才解決,看起來差在+,有點版本上的問題,總之將

if ( ! preg_match("/^[a-z0-9:_/-]+$/i", $str))

換成

$config = &get_config('config');
if ( ! preg_match("/^[".$config['permitted_uri_chars']."]+$/i", rawurlencode($str))) 

這樣就OK了

參考網址:

如何解決CI框架的Disallowed Key Characters錯誤提示_PHP教程

2020年9月15日 星期二

解決〞Design editor is unavailable until after a successful project sync〞

將舊案從Eclipse匯入到Android studio,點選MainActivity.xml想改畫面卻一直出現底下的訊息
查了下資料,看到這篇android studio 新建一個專案,卻出現Design editor is unavailable until after a successful project sync,看起來點選File -> sync project with Gradle Files,出現Erorr:“The minSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file.〞

找半天找到AndroidManifes.xml,查看發現有底下這句
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17"/>

將它mark掉後,再點選File -> sync project with Gradle Files,就build成功可以使用了

參考網址:

xquery用for loop取得json array的值

上傳json array,卻發現用底下的code一直變成存成單一字串

for $item in params?array
	let $new := <item>{$item}</item>
	return update insert $new into $file

查半天覺得怪,參考JSON改成

let $size := array:size($params?array)
for $index in (1 to size)
	let $new := <item>{$params?array($index)}</item>
	return update insert $new into $file

這樣就OK了,看起來似乎是無法直接使用、要再查看看


參考網址:

JSON

2020年9月6日 星期日

解決UITableView的Grouped型態的Section間會有空隙

為了讓Section不會一直停留在最上方,將UITableView的style改成UITableViewStyleGrouped。但卻發現第二個section和第一個seciont的最後一個元素隔一大段空白,查半天看到的StackOver都沒有但打勾確認,不過實際測了下Space Between Sections in UITableview的解決,如下面程式碼就能解決了,其實不能回傳0是要注意的,就直接給個比0大的值就好

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return 0.00001f;
}


參考網址:

Space Between Sections in UITableview

2020年9月4日 星期五

iOS上架遇到出口合資訊這怪問題

上傳iOS app後,點選建置版本後,跳出回應"出口合規資訊"這樣的問題,查半天看半天大家都選否,也不是很清楚,APP TestFlight缺少出口合規資訊是寫了這是很久前的規定"很久很久之前美國政府不允許採用高強度加密的套件,必須改成弱強度的加密方式",蘋果提交版本後顯示”缺少出口合規證明“的解決辦法這邊倒是有特別寫個解法,最後選了否......再看看狀況吧


參考網址:

https://www.ptt.cc/bbs/MacDev/M.1513654588.A.92C.html

APP TestFlight缺少出口合規資訊

蘋果提交版本後顯示”缺少出口合規證明“的解決辦法

解決"ERROR ITMS-90339: "This bundle is invalid. The Info.plist contains an invalid key 'UIApplicationExitsOnSuspend' in bundle"

 上架上傳app時遇到個Error,"ERROR ITMS-90339: "This bundle is invalid. The Info.plist contains an invalid key 'UIApplicationExitsOnSuspend' in bundle XXX [XXX.app]""


看半天,看到UIApplicationExitsOnSuspend key issue. How do I fix it?有寫,對著info.plist按右鍵,點選"Show Raw Keys/Values",倒是真的出現UIApplicationExitsOnSuspend,將它拿掉就可以過了

參考網址:

UIApplicationExitsOnSuspend key issue. How do I fix it?


2020年8月14日 星期五

Xcode舊專案改用Automatic Sign發生〞Set the provisioning profile value to "Automatic" in the build settings editor, or switch to manual signing in the Signing & Capabilities editor.〞 Error

平時都是用手動指定憑證發布app,但剛好有舊案可以使用自動的,就改成自動,結果一直發生"Set the provisioning profile value to "Automatic" in the build settings editor, or switch to manual signing in the Signing & Capabilities editor.",查半天,看到升级Xcode 10后遇到的问题提到清空User defined中的PROVISIONING_PROFILE,Target及Project設定都要改。

改完後,最好是Automatically manage signing的勾選取消再勾回,選Team,重開XCode。

參考網址:

升级Xcode 10后遇到的问题

2020年8月3日 星期一

nginx設定轉址

有個網站跟客戶希望能直接轉址到別處,基本上有好幾種做法
  1. 直接php轉
  2. .htaccess寫方式轉
  3. web server(我是用nginx)轉
查了下,最後選了第三個做,直接在nginx.conf或site-enabled/default中的server內最後面加底下這行,oldpage及http://www.domain.com/newpage自行更換
rewrite ^/oldpage$ http://www.domain.com/newpage redirect;

重開機就OK了
#service nginx reload

參考網址:

2020年7月13日 星期一

IE11中使用flex + min-height做垂直置中的問題

前端的人使用bootstrap4切版,套版後覺得不好看,臨時改成有有最小高度,結果發現在IE無法垂直置中,查半天跟flex有關的資料,看到internet-explorer - 在 IE 中,css Flexbox不是垂直居中提到height要設定因為ie的bug,實際設定height設個比min-height小的值,就真的垂直置中了,真的太神奇了 @@

PS. 不確定是否全部ie版本都能用,但ie11可行。

--- 7/16 更新
傻傻的以為能用,這做法不適合高度會變動的版面

參考網址:
internet-explorer - 在 IE 中,css Flexbox不是垂直居中

2020年3月15日 星期日

Xcode 10.1編譯舊專案出現了'sqlite3_key' is invalid in C99的Error

依然是舊專案的問題,出現了'sqlite3_key' is invalid in C99的Error,查了下看到這篇sqlite3_key is invalid in C99 iOS11,看起來在iOS10是正常的,仔細想了下猜測是compiler版本問題,我的Xcode是10.1,就回到Xcode -> Preferences,點擊Locations,找到Command Line Tools,選Xcode 8.3.1,重開再compiler就OK了

參考網址:
sqlite3_key is invalid in C99 iOS11

升級到Xcode 9.3後出現Expected method to read dictionary element not found on object of type 'id'

開啟多年未開的專案想要compile時一直出現Expected method to read dictionary element not found on object of type 'id<NSFastEnumeration,NSObject>'的錯誤訊息,仔細查看,是PromiseKit這個library在xcode 9.3後會有的問題,查半天都是講用cocoapods升級PromiseKit到1.7.2就OK了,打下pod update後,又出現其他專案的Error,仔細一看發現一個根本不能update的Library,問題最後只能是直接解決這error,反過來想,只好去查看這Framework針對這issue的commit,最後找到Fix build on Xcode 9.3,修改如下



有種怎沒想到這樣改的蠢想法,不過又有種這像是workaround的感覺!!

參考網址:
Objective C- Xcode 9.3 - Expected method to read dictionary element not found on object of type
Fix build on Xcode 9.3

2020年1月30日 星期四

Laravel指定版本建立專案

Laravel的版本更新蠻快的,但主機的PHP常都在舊些的版本,例如沒指定版本都用到Laravel framework 6.X及PHP 7.2,但我還在用PHP 7.1,最新支援版本是5.8.35,所以在建立是要用以下的指令,demo是專案名,這樣即可。這邊做個筆記。

composer create-project laravel/laravel=5.8.* demo

參考網址:
Installing specific laravel version with composer create-project

2020年1月14日 星期二

ScrollView內設定自動計算出高度的Content

參考:http://adad184.com/2014/09/28/use-masonry-to-quick-solve-autolayout/
4. [中级] 在UIScrollView顺序排列一些view并自动计算contentSize

參考網址:
http://adad184.com/2014/09/28/use-masonry-to-quick-solve-autolayout/

2020年1月3日 星期五

NSDate在2019年12月30日發生年度變成2020年的一年誤差問題

這幾天發生個怪問題,上傳的資料時間居然從2019-12-30變成2020-12-30,每筆資料都一樣,用的是NSDateFormatter這些內建的函式庫,怎麼看都沒問題著實奇怪,Google了下發現iOS NSDate转成时间戳出现一年的误差提到,仔細一看才發現全都是用YYYY這寫法,在ISO週日曆有解釋計算方式,大概可以簡單的去想成1/1那週從週一開始的都會是新的一年,所以還是都用yyyy小寫,除非您是要算成此週為哪一年的會計年度這種需求

參考網址:
iOS NSDate转成时间戳出现一年的误差
ISO週日曆

安裝Tunnelblick後使用時、一直發生/Applications/Tunnelblick.app/Contents/Resources/tap-notarized.kext failed to load的問題

今天在Mac上安裝Tunnelblick後,設好設定一直發生"/Applications/Tunnelblick.app/Contents/Resources/tap-notarized.kext failed to load",查半天看不出來,後來看了How To Fix "Cannot Allocate TUN/TAP Dev Dynamically" Error On MAC OS X中再找到Unable to load kext on High Sierra才突然想到會不會是因為Tunnelblick非官方程式要在程式安全性按允許才行,進設定的安全性與隱私權就發現有需要按允許的要求,按下後就OK了


參考網址:
How To Fix "Cannot Allocate TUN/TAP Dev Dynamically" Error On MAC OS X
Unable to load kext on High Sierra