跳到主要內容

文章

升級新版android studio 4.1後Plugin Error問題

升級新版android studio 4.1後會出現一些問題:  一直出現error但又關不掉: Plugin Error                         Plugin "GsonFormat" is incompatible (supported only in IntelliJ IDEA).                         Plugin "Lifecycle Sorter" is incompatible (supported only in IntelliJ IDEA).                         Plugin "Gps Emulator" is incompatible (supported only in IntelliJ IDEA).                         Plugin "Android Parcelable code generator" is incompatible (supported only in IntelliJ IDEA).    solution: 須自行手動移除.刪除.jar後重開android studio. ps: 下面的路徑須改成 users 資料夾下,自己的使用者名稱 C:\Users\ mark \AppData\Roaming\Google\AndroidStudio4.1\plugins  GsonFormat.jar LifecycleSorter.jar android-parcelable-intellij-plugin.jar LifecycleSorter.jar

Android 10 open failed: EACCES (Permission denied)

 android targetSdkVersion 29 29後開始save data to download資料夾會有問題喔~ 快速解法: out of scoped storage If your app is not ready for the changes that are coming in for Android 10 then you can 「opt-out」 by setting the flag requestLegacyExternalStorage to true in your manifest. <manifest ... >   <application android:requestLegacyExternalStorage="true" ... > ... </application>   </manifest>   設定完之後: 就解了!  以上是快速解法,若想使用完整正確android 10的方法, 請參考: https://medium.com/@sriramaripirala/android-10-open-failed-eacces-permission-denied-da8b630a89df    

app bundle and bundletool. 關於aab安裝問題

google 有說明年開始強制使用app bundle. 不然不准更新app. 但是產出的apk不再是apk了,而是aab. C:\release>adb install 6.aab Performing Streamed Install adb.exe: filename doesn't end .apk or .apex: 6.aab   不能透過adb install.... so, google 發表一個新tool: 去download bundletool...因為是java跨平台都可執行. https://github.com/google/bundletool/releases   You can extract the apks files from the aab file using the bundletool command. https://developer.android.com/studio/command-line/bundletool To generate an APK set for all device configurations (signed with a debug key) you can use:  bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks To deploy your app from an APK set, use the install-apks  bundletool install-apks --apks=/MyApp/my_app.apks test:   C:\release>java -jar bundletool.jar build-apks --bundle=6.aab --output=out_6.apks INFO: The APKs will be signed with the debug keystore found at 'C:\Users\mark\.android\debug.keystore'.   還是失敗,還要指定key才可以...  For Release apk command, example 1: bundle

app DAU

What is DAU?  Daily Active Users (DAU) measures the number of active users who visit your app in a single day.  每日啟動並使用APP的不重複USER數量. 很重要. 在Firebase 控制台可看到.   像上圖,就是這3個app總數DAU=1013人.     What is MAU?  Monthly Active Users (MAU) measures the number of unique users to your app over a 30-day period.   每月啟動且不重複user, 這個我就不知在哪裡看了...     但是DAU非常重要, 台灣2300萬人,如果DAU只是不到10000人,那真的很難看.  

寫APP是孤獨的事情,跟AdMob violation: Site Behavior: Navigation的解法

1.最近又被google admob發警告函,無奈.. 還是一樣重點是admob說如果太多違規就會被停帳號,真是把我嚇死了. 但是他們判違規卻不跟我說app那裡違規了? 要我自己去找...於是就變成我要在眾多app頁面中自己判斷哪裡違規? 這真是勞民傷財,於是我就不能專心開發app,要花很多時間去找錯誤在哪裡?   有個違規是這樣,找附近功能因為有用google map place api,而他們最近改了json spec設定 "id"--> "place_id" 於是我的app就出問題了. 然後admob就發違規給我了. 無奈. 一個人慢慢地修,孤獨的修app.... 總之,google admob好像跟我有仇似的,一直找我麻煩. 現在我一收到admob開頭的信,我就會害怕. 簡單講: AdMob violation: "Site Behavior: Navigation" Policy Violation - solution  就是如果你收到這個違規: 那就要檢查你app所有button/menu item與連結,不能有忽然地引導user跳出App 動作. 必須要提醒user.才能跳出去app. 因為你app內可能的錯誤太多,所以admob不跟你講那裡違規,因為Admob審查人員無法為你一一檢查. 所以發這違規. 像下圖: 按下這transfer會跳到google translate... 但是沒有提示使用者.就是違規. 因為有些人的手機沒裝google translate.會有錯誤訊息出現.     2.google play 審核的擔心與害怕 上次因為一個app有用到一個library. APK還要符合x86, X64, ARM64, 32Bit.. 導致app就被退回. 現在  x86 很少用在手機平台了,但還是一樣不能忽略. 不得已X86版本Library只好移除,剩下ARM 32, 64 即是 arm7, arm8. 總之,就是寫一個app在上傳apk後不是就沒事了,還是要擔心害怕被Google play駁回. 當然除了GOOGLE play會駁回的風險外, apple app store也是有同樣風險,而且更嚴格. ------ 3.再來看看下圖: 多出一片空白,很明顯是廣告位置錯誤

(台灣)中華郵政新制郵件 3+3郵遞區號(6碼郵遞區號) app

android: https://play.google.com/store/apps/details?id=com.mark.taiwanpostmailbox ios: https://apps.apple.com/tw/app/id1524433635 android平台: IOS App: 中華郵政公司日前表示,現行郵遞區號編碼「3+2」不敷使用,為讓郵件投遞更順暢,預定今年三月起,採用「3+3」新制,未來信件地址就算有缺漏,也能增加找到正確收件地的機會,加快準確投遞。 為提升郵件處理效率,中華郵政公司自109年3月3日起實施新制「3+3郵遞區號」, 前3碼「行政區編碼」維持不變,後3碼「投遞區段碼」由原來之2碼增為3碼, 詳盡規劃投遞區段,簡化處理作業,並增進郵件分揀效率,提高投遞準確率。 郵遞區號為配合機器分揀郵件及便利收件的一種地址編碼制度, 中華郵政公司自80年2月1日實施「3+2郵遞區號」,迄今已多年。 中華郵政呼籲社會大眾配合此項新措施,未來交寄郵件請書寫「3+3郵遞區號」,便捷郵件分揀處理,迅速送達。

2020.07.設計app感想

1.App: 目前遇到很多問題,即使我目前app每天的使用者還蠻多的,大約全球有安裝我的app且活躍用戶有5萬人,但因為我都是設計免費app服務大眾,但admob給我的廣告收益實在太低了,連吃飯錢都不夠.生活無以為繼. 然後google admob policy team又一直找我麻煩,ios上我有個寵物認養的app,明明沒有違規,但他一直判我違規,申訴多少次都沒用,我實在找不到哪裡有問題,寫信給他們希望能澄清一下問題在哪?但admob都不願回覆,這真是非常差的服務,怪不得很多app開發者都建議轉到其他家,admob實在是太大家獨佔了大部分市場了,所以一直不斷的霸凌開發者。只能嘆一口氣,無奈。 2.app廣告放置問題: 其實我很感謝大家使用我的app,所以我一直不願像其他app開發者一樣,頻繁使用全螢幕插頁廣告,這實在是干擾使用者,我只用banner,希望在不影響使用者體驗下放置廣告,但這banner收益實在有夠低,且user其實都不太願意點擊,很常時候都是誤按,目前誤按在google強大的偵測機制下,都會被算作無效流量,是不會算錢的。我又不願意把app變成都是全螢幕廣告,點一下就跳出廣告那樣討人厭,所以可想而知~我的處境會有多慘,非常慘!!!! 3.apple mac book pro越來約貴: 設計app需要好的電腦設備,但目前因為沒錢,無力更新開發設備,看著舊電腦,設計app時已經感覺他慢慢跑得很吃力,cpu always 100%...我實在感到無助,買不起新電腦。 4.安東青創基地欺負創業者事件: 最近遇到這件事實在很生氣,只能說中原大學實在有夠爛, 派出這種經營團隊,不僅欺負創業者,羞辱新創,一段日子後還毫無改進的意思。 我建議桃園市政府以後千萬不要再與中原大學合作。 市民使用公有設施乃市民的權益, 就跟圖書館允許大眾使用一樣。 但目前中原大學在管理安東基地時,對創業家態度有夠差, 還把這當他們家私產,隨個人喜好任意驅逐新創。 鄭文燦又不管,小蝦米無法對抗惡霸,我只好無奈嘆一口氣。 最後, 這世上也沒有錢人願意資助我創作app.實在無法再繼續設計app下去。 我也不知道下一步怎麼辦。 只能說獨立設計app不是一條好走的路。

Android studio gradle error: Duplicate class com.google.protobuf...

FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. > 1 exception was raised by workers:   java.lang.RuntimeException: Duplicate class com.google.protobuf.AbstractMessageLite found in modules jetified-protobuf-javalite-3.11.0.jar (com.google.protobuf:protobuf-javalite:3.11.0) and jetified-protobuf-lite-3.0.1.jar (com.google.protobuf:protobuf-lite:3.0.1) ...   Duplicate class com.google.protobuf.LazyStringArrayList$ByteArrayListView found in modules jetified-protobuf-javalite-3.11.0.jar (com.google.protobuf:protobuf-javalite:3.11.0) and jetified-protobuf-lite-3.0.1.jar (com.google.protobuf:protobuf-lite:3.0.1)   Duplicate class com.google.protobuf.LazyStringArrayList$ByteStringListView found in modules jetified-protobuf-javalite-3.11.0.jar (com.google.protobuf:protobuf-javalite:3.11.0) and jetified-protobuf-lite-3.0.1.jar (com.google.protobuf:protobuf-lite:3.0.1)   Duplicate class com.google.protobuf.LazyStr

寫app真的是好選擇嗎?

最近因為admob收入大減,加上covid-19影響,百業蕭條,大家都縮減廣告行銷預算, 自己又沒其他正職工作,專心設計app.(設計app超級累的) 但自己連房租都繳不出來, 感覺自己超可憐的。 今天為了省錢,只好去7-11搶快過期的7折便當來吃, 我都不好意思跟其他人講, 默默地難受著, 也不敢回家見爸媽,不敢打電話,把自己完全消失,因為沒錢給他們,只能叫他們自己想辦法,唉呀! 怎麼這麼慘啊,我也不知道為何會搞成這個樣子,明明努力的寫app,使用者人數也蠻多的,每天全世界都有約5萬人在用我設計的app,但廣告收入還是那麼一丁點,無法維持生活,怨恨google抽那麼多抽成,怨恨使用者都不喜歡廣告,其實我也不喜歡廣告,我自己設計的app都會儘量不使用那種突然彈出的全螢幕廣告,會騷擾到使用者,但相比其他app都是全螢幕插頁廣告不斷跳出,自己這種善意做法卻讓自己沒收入,苦哈哈。 辛苦設計app,日以繼夜不斷努力,但是收入卻是如此低,仔細比較,去7-11當臨時工不用甚麼技術賺的時薪都比這高很多。 好難過,培養了幾年的Android ,ios app設計能力,卻是如此無用。有時感覺自己真的撐不下去,很想放棄,不禁落淚。 新朋友千萬不要以為獨立研發寫app是好工作,錯,大錯特錯。

美國郵政ZIP Postal Code app

昨天有一個app上架啦! 美國的郵遞區號查詢app. 目前先設計android版的,看受歡迎程度再開發ios版本. https://play.google.com/store/apps/details?id=xyz.markapp.usa_postal_zip 設計了一週的時間,非常久. 為甚麼會設計這App,主因是上次設計了台灣的郵遞區號app,但沒幾個人下載. 於是何不如設計人口較多的國家呢? 美國當然是第一首選. 但是設計完美國Zip後,又發現其實世界上第一大國是中國. 為何不設計中國的postal code/zip code查詢app? 於是今天又要開始設計中國的郵遞區號查詢app. 中國那麼大,為甚麼不設計? 接下來,來談談我們設計app要首選幾個國家? 上圖是世界上人口密集的都市,紅點是密集處. 設計app往人多的地方就對了啦. 只設計台灣的app的話實在是眼界不夠大啊. 台灣人口2358萬人(2020.6.)只佔世界人口0.3%,排名第56名. 實在非常少. 看下表人口排名: 有幾個國家我們完全不熟:很少注意到. 例如: 巴基斯坦 Pakistan (官方語言: 烏爾都語,英語), 奈及利亞 Nigeria (官方語言:英語), 孟加拉 Bengal(官方語言:孟加拉語).但他們加起來人口也有5億人啊!!!!! 印度也是用英語的,也有13億人, 設計app要設計英語的就是這樣,會觸及到這些英語的人口. 我們不要只從台灣看自己這個小地方,太過關注自己週遭,反而應該要多看看世界其他地方.

好可怕,現在共產黨已經入侵台灣了

打開小米官網, 點了一個產品,出現下列畫面,一個頭上有共產黨黨徽的小米兔子, 但這是小米台灣站喔 所以別人說買小米的手機會很危險, 資料都會被傳到....某地 然後如果你是名人,你的隱私都會被掌控. 萬一你那天登大位為大官,這些都將會變成是你的把柄. 這些疑慮都是可能的.

Google也發消費券了,因為Covid-19, Google ads發送了安撫Coupon,不知你收到了嗎?

在這世上的人都很冷漠,世態炎涼. 美國,香港還發生抗議活動,世界疫情大流行時,大家生活都很難過. 全球app開發者都歷經ecpm大幅下滑的慘劇,都快活不下去時, 而google佛心的對大家發送ads消費券了. 真的很感動, 雖然只是一點小小的金額,但是不無小補. 可以用來發送廣告.app 開發者可以用來刊登app廣告.推廣app. 其他人可以發送關鍵字廣告,推廣其他業務. 很好用啦!!! 還沒收到的人趕快去檢查喔. 每個人額度不一樣喔. 換言之,最近大家的admob revenue 可能會慢慢增加囉,因為Google ads發送coupon, 最後這些錢會有大部分都流到各種app中, 所以大家的admob收益在這之後個月都會增加喔.

short-circuit at OR (java)

在設計台灣郵遞區號app時,遇到一個問題: if ( datasave_zip. arr_save != null || datasave_zip. arr_save .size() > 0 ) { Log. e ( TAG , "bypass! zip array save != null." ); return ; } 上面這段code 有沒有錯呢? 大家猜猜看.... .. 沒錯,一執行就當機了.  java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference         at com.mark.taiwanpostmailbox.zip.datasave_zip.parpare_zip_data(datasave_zip.java:58) 我一開始寫的時候,考慮到OR short-circuit. 所以當 datasave_zip. arr_save = null 時, 理論上第一個條件成立, 就不會判斷到第二個條件才對??!! ??? 所以問題到底在哪裡呢? 為甚麼會當機呢? 答案在這啦: There is only one case of short-circuiting for each operator, and they are: false && ... - it is not necessary to know what the right-hand side is because the result can only be false regardless of the value there true || ... - it is not necessary to know what the right-hand side is because the result can only be true regardless of the value there 所以說: || OR 只在true時才會short-circuit, 而在false時,不會short-

談談我對郭董的了解

對,今天我又來聊聊郭董了, 接下來就發表一個獨家照片.這張照片只有我有(因為不就是....) 箭頭處就是郭董 你問我為什麼要聊他? 這不是廢話嗎? 他是台灣首富阿~不聊他聊誰啊.等你變有錢再請我去你身邊當你專屬顧問. 我當然希望他本人能看到這篇文章,不過他是不會回應的啦. 如果他記憶力不錯的話,應還是記得我. 我覺得台灣一百年來能出個郭董,張忠謀,王永慶,張榮發這幾位企業家真的不容易. (政治上出了李登輝) 讓我們身為台灣人真是驕傲. 你看看中國大陸,除了鄧小平之外,有哪個總書記真正為民著想. 而中國企業家也出了馬雲!!!!小米雷軍(打趴HTC). 當然我說這幾位不是為了要拍馬屁,是要大家去看他們的自傳,看看他們怎麼經營企業的. 記住我這一句話: "別人怎麼有錢,都不甘你的事!!". 你又不是他兒子,遺產又不會給你. 我們要學的是他們的理念,思考方法. 成功是可以被複製的. 這個照片中的場景有個故事, 就是郭董座位在最前面,下面有800人(鴻海股東會都在這開),他都會在前面批公文,台上就是員工在演講. 希望演講後能被公司提拔. 有次有個人在台上演講了三個小時,郭董都在下面聽. 儘管很多後面的人在打pass要他結束演講,但台上的人為了陞官,不願停止. 讓全場800多人都在聽台上那員工唬爛!!! 我一直在想郭董應該會生氣吧. 結果他不但沒生氣,還全場聽完! 神奇吧!! 看到這事我就覺得,如果是我的話就會馬上要求員工講重點,15min結束,這員工連講了3小時,中間還不給休息. 最後郭董不僅沒發飆還聽完,還給他評語. 所以那天我才知道.為何大家都會叫郭董"鐵人". 我們要學習一下這精神,有時候做一件事,不管是工作上,讀書上我們撐不下去時,累的時候,要想一想這郭董這精神. 不要一下就喊累,這員工連三小時的演講,就好像一個百般刁難的客戶,當你面對這種客戶時,還能忍下去,以得到訂單為主. 其他人可能就馬上開罵或終止了,但你撐到最後,成功就屬於你,郭董可以,你也可以成功的. ps:我寫這篇就是跟app開發者有什麼關係呢? 有的,當你寫app時,實在太累,遇到瓶頸,debug太久? 沒資金時,撐不下去時. 想想這篇文章,可以幫助到您.

admob真是最爛的服務

今天又收到了三個admob發給我的警告 Site Behavior: Navigation 重點是這三個違規有兩個不能歸咎於我,有一個根本就是不知道那裡有錯... admob真是一直找app開發者麻煩. 如果有機會呼籲大家換到別家用. 1.其中一個是使用台鐵的opendata app,來查詢火車時刻表,這個opendata最近台鐵改版了,就不能用了,所以我被判違規,這合情合理,我沒意見. 2.第二個中國地鐵這個app,admob根本就不告訴我那裡有錯,讓我自己猜,真是爛的admob.這樣整開發者. 這個app有三個功能,我怎知那一個有問題,我一個一個測試都沒發現有問題,寫信給admob也不回信,真的這樣亂搞app開發者.害大家焦慮做白工???! 我真的不知道那裡有問題??? 3.第三個這個更是不滿意,這今天內政部整個opendata都當了.你下面看到的所有opendata都當機了,無法連上. 時好時壞.這admob也判我違規,問題是這個我只能寫信給內政部叫他們穩定一點,錯誤不在我這.我要修也沒辦法修. 過了幾天,內政部opendata比較穩定了,我又更新確認app ok.. 請求審查,但admob還是給我判違規,我就很疑惑... 試問到底是因為下圖app截圖中"紅框連到電話"是不允許的,還是因為在他測試時台灣內政部的opendata又短暫當機所造成的, 但是admob policy violation都不會告訴你, 他讓app開發者自己去猜違規判定者的心思? 我們不知道修改那裡才是對的. 現在google play app審核要花很久,且一直重新上架會讓app審核者很煩,等會他就找你的app開刀. 然後admob又如此不友善的對待app開發者. 真的是很生氣又無奈. 是這個autolink導致連至不存在電話?所以判違規?還是其他原因??? 還是是因為內政部opendatan伺服器又當機了?所以判違規?我不得而知. 內政部opendata server經常不穩定,實在是造成大家困擾. 整個政府中,內政部是opendata做的最差的,看看別人交通部,都有PTX,中央氣象局,觀光局都做得很好. 內政部的整天三不五時斷線,害我每天都收到一堆人評一顆星. 種種事情一直來,讓我覺得admob是在找我麻煩,不應該讓app開發者瞎子摸象,像無頭蒼蠅一樣亂竄. a

Android Distribution dashboard

update date: 2020/05/21

關於APP使用者人數為0的問題.

今天來寫這篇,關於APP使用者人數為0的問題. 心情沉重,我有些APP使用者人數為0!!! (基本上, 少於500就近似於0了) 當初花了很多心血設計的APP,經過一段時間後,安裝人數不如預期.             這些app可能都要放棄了,不更新了. 即便有新想法,想更新或加新功能看看,但是一個一個app更新,時間可能也會花上3個多月. 在沒有收入的情況下,是很危險的一件事. 該麼辦呢?有沒有人可以給我建議?我困擾好久了,一直找不到辦法... APP不是設計出來就沒事了 當我們的APP從發想開始,到雛形出現,上架後, 除了研發經費,投入的心力人力物力,都是非常多的. 此外,還需要大筆的宣傳經費.每個月不停地投廣告. 如果沒有花錢去行銷,那可能都是這樣.....app安裝數非常少. 我們不可能像Google一樣,他有品牌優勢,消費者認Google,所以他的app至少都有幾千萬安裝數或上億安裝數. 也不可能像facebook一樣是殺手級應用,不用宣傳,就有使用者使用. 一開始誰會知道...這是沒人用的APP? 是的,這問題大家都說,誰知道阿.千金難買早知道...如果事先知道,就把時間放在其他事上面了. 幸運的是有些人花費的精力不多, 不幸運的是有些公司花了幾百萬卻做出一個不到500人使用的app,比比皆是. 所以,快速試錯是很重要的事. 這跟創業一樣,當你有一個事業想法,常常一股腦就投入幾百萬,但過沒多久才發現最後沒幾個人用. 你看Google+就是這樣,做不贏Twitter, Facebook...及時懸崖勒馬,及時停止,省下大筆開支.並專注在自己擅長領域. (下圖:殺手級應用已佔據大多數使用者時間,一般人想再開發相同應用已不可能成功) 90% app開發者命運都掌握在google,apple, Facebook 手上. 因為只要Google or apple app store的演算法變動,都會影響你的app排名,當app排名下降,app就慢慢變沒人用了 facebook更不用說了, 優先貼文,決定你的app曝光率. 所以我才說, 90%的開發者都是窮的,而且被人掐著脖子走. 各位新進有想要開發APP的人,要投入金錢前要先想好一件事? 是安安穩穩上班領年薪好? 還是要過這種膽顫心驚的日子? 如果只是寫寫APP過過癮,分享,不以營利為目的,是可以試試. 但如果要