Tuesday, December 31, 2013

串接Admob時岀現The Google Play services resources were not found.

文章攢寫時間︰2013/12/31 17:45
Admob使用版本︰Goole Play Service 4.0版

一、問題

今天在串接Admob時,
遇到
The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
的錯誤,
Admob廣告一直沒有岀現。

二、解決辦法

請在values\strings.xml裡,
填上你的ad_unit_id...


Monday, December 30, 2013

Tapjoy與Proguard的親密接觸

文章攢寫時間︰2013/12/31 11:40

一、前言
話說等一下即將邁入2014年,
各位安卓猿們有沒有安排跨年計劃,
亦或待在家專心趕code呢?
先祝大家新的一年健康快樂、事業順利啊!

言歸正傳,
這幾天在寫code時,
遇到了Tapjoy在Proguard編譯岀來的apk檔裡發生的問題。

二、問題

為了不要讓Java檔一下子就被破解,
Android提供了Proguard工具。

這幾天在使用tapjoy機制時,
運行時遇到了因為程式Proguard後,
導致找不到tapjoy library resources的NullPointerException問題。

三、解決辦法

只要在proguard腳本檔(proguard-project.txt)裡添加兩行即可解決
-keep class com.tapjoy.** { *; }
-keepattributes JavascriptInterface

相關文章︰

Tuesday, October 29, 2013

IAB-V3使用經驗小記(陸續新增)

文章攢寫時間︰2013/10/29 15:45

Google Play in-app billing V3的使用經驗記錄於下︰
1.如果將應用程式內商品退費,短期內似乎不能再購買此商品(20131029觀察中)

Tuesday, September 24, 2013

[電影]賈伯斯 觀後感(無爆雷)

文章攢寫時間︰2013/09/25 10:42

「賈伯斯」好看嗎?

這是在看完電影「賈伯斯」特映會後,最多人問我的一句話。

它不是Local商業片,不像鋼鐵人3,不像大尾鱸鰻,不像總舖師,
它是一部描述一個人的傳奇、一個人一生的電影,
因此在劇本的設計上通常是不用太刻意製造笑點或哭點的,
只要忠實的陳述岀人、事、時、地、物和有故事核心,
就已經是傳記類故事合格的表達方式。

1)人 - 賈伯斯何許人也?
2)事 - 賈伯斯發生什麼事?
3)時 - 賈伯斯的經歷?
4)地 - 賈伯斯在哪裡創業、哪裡成功?
5)物 - 賈伯斯發明了些什麼改變了世界?

(文章看到這裡,連我都打了一聲哈欠)

如果電影裡的故事都是真實故事,
那麼依我看,
賈伯斯是一個『糟糕透了』的人。

賈伯斯他是為了事業,將最親愛的人不顧的人。
他是一個眼光狹獈至極不懂得分享成功的人。
他是為了一件事的成功,忽略了其它所有感受和看法的人。

成功有許多的方式、途徑,
絕對沒有哪一條路是對、是好,

他的執著、他的偏執、他的狂妄、他的理念,
他的「簡單、清楚、力與美學」的工業設計理念,
很多決策他必須要相信他自己、認同他自己,
而這條路,就像他的創業夥伴在離開他前哭著對他說︰
「我知道你是那麼地孤單。」


成功不是僥倖、不是運氣,
我看到的是他對於理念的執著、
一個科技企業人看事的遠光、
還有一顆永遠不安逸於現況的心。

這部戲不需要果粉才能看,
因為它是一部傳記,
描述了一個人成功的故事和一生。

沒有賈伯斯就沒有Apple,
沒有Apple就不會有Android,
因此,
賈伯斯不僅是Apple之父,
他也是Android之父、
更是智慧型手機之父。

不安逸於現況、永遠要比別人看地更遠、對一件認為是對的事情的堅持與執著⋯
這些想法都在我內心不斷地共鳴著。


這部戲不是Local商業片,
所以你絕對不會從你朋友口中聽到「賈伯斯超好看的,你趕快去看」這類的話。
因此片商也很聰明的直接在宣傳海報上打了一排字︰「歡迎企業包場。」


我最終還是流下了男兒淚,
一個成功的人,
一路上...真的...很孤獨。

Saturday, June 1, 2013

升級ADT22後專案開不了,報NoClassDefFoundError錯誤。

文章攢寫時間︰2013/06/01 19:04

一、問題

升級ADT到v.22後,
原本能開的專案突然開不了,
還報NoClassDefFoundError的紅字錯誤給我們看。

二、解決辦法

原來在v.22 Android團隊將專案會用到的libs再度收納到了Android Private Library,
所以需要將Android Private Library開起來。


Android Team的Andreas Stutz在他的G+好心的提醒我們升級到ADT 22會產生NoClassDefFoundError錯誤
更弔詭的是
還有網友說還要繼續把專案關起來再打開,
才能恢復正常...

附上操作流程︰
1.專案點擊右鍵
2.Build Path-> Configure Build Path -> Order and Export
3.選取Android Private Libraries方塊,並按OK
4.清除你的專案[Project]-->[Clean]
5.編譯你的專案

Saturday, May 25, 2013

Game Service串接注意事項(更新中)

文章攢寫時間︰2013/05/25 14:20

1.需要在Android Menifest.xml裡<application>和<activity>中間宣告
 

 
否則會遇到java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information. 的錯誤。

2.在values資料夾要放置ids.xml宣告你的app_id和成就以及排行榜相關的id

3.注意在Google Api Console的使用額度(quota)

Wednesday, May 22, 2013

Google I/O 2013 - Custom View筆記

文章攢寫時間︰2013/05/22 18:40

Google I/O 2013 - Custom View筆記

  1. View的繪製流程可以直接draw(),但也可以先onMeasure()再onLayout()再draw(),onMeasure()和onLayout()一定會是同步發生。
  2. 要客製化做出自已的View,一定是implements ViewGroup。
  3. ViewGroup不僅是一個容器,還是一個管理子View的控件。
  4. 客製View的第1個流程︰requestLayout() - 這個函式告訴系統你現在有一個View需要被計算和繪製。
  5. 把requestLayout()想成是一個草稿,在這個時間點你可以改變你的View大小、可以改變View在hierachy的層級⋯等等。
  6. 呼叫了requestLayout()後,對於整個View的層級影響是很大的,它可以影響到它的父視圖的計算、父父視圖的顯示⋯。
  7. 客製View的第2個流程︰實作onMeasure() - 用這個函式來決定你的View的大小,還有你這個View之後裝的子View的大小。
  8. onMeasure()是一個不斷循環的函式(recursive process)
  9. onMeasure()的責任是要去找出並量出子View的合適大小
  10. 量出View的大小的方法︰MeasureSpec
  11. MeasureSpec的第1種工具︰精確的指定大小(MeasureSpec.EXACTLY)
  12. MeasureSpec的第2種工具︰依子View的大小做判斷給出理想範圍(MeasureSpec.AT_MOST)
  13.  MeasureSpec的第3種工具︰不指定大小(MeasureSpec.UNSPECITIED),最常見的例子就是ScrollView和ListView。
  14. 客製View的第3個流桯︰onLayout() - 將你在onMeasure()裡定義好的大小,去計算所有子View即將存放的螢幕所在位置。
  15. ViewGroup專用的尺寸定義工具︰LayoutParams
  16. 如果沒有指定LayoutParams,如果你用的是FrameLayout,那麼系統會配予match_parent屬性。
  17. Drawing - Android的介面渲染工具。
  18. invalidate(),跟requestLayout()不同的地方在於,如果你的View有動畫、有變形...,可以使用這個函式來請求重繪。
  19. 使用Drawing渲染工具的方式 - 實作函式onDraw()
  20. 如果你的View都會由子View去繪圖,那麼就可以setWillNotDraw(true)讓系統去跳過onDraw()這個流程。
  21. dispatchDraw()被負責繪製子view,包含變形、動畫⋯等等的事件。
以上為聆聽筆記,如有誤煩請回應告知。

Monday, May 20, 2013

R檔不見了

R檔記錄了Android Project裡各種資源的位址,
是很重要的資料。
這份資料是自動產生的,
會存在於gen資料夾底下。

如果發現沒有R檔通常使用[Project]-->[Clean],
R檔都能回來。

如果仍然回不來,
請先確定res目錄底下的所有資源都沒問題了(沒有紅色xx),
再執行一次[Project]-->[Clean]。

R檔才會出現...