Sunday, May 27, 2012

設定Eclipse編輯區的字體大小


Thursday, May 24, 2012

Google Play Subcription(auto renew)訂閱型服務上線!

Google Play訂閱型服務於美國時間2012/5/24發出了技術公報,
底下簡單列出幾項重點︰

  • 一定要先將APP上線(published)才能使用subscription服務
  • 一個APP內可含多種資費,售價一定要高於0.00
  • subcription的沙箱模式幾週後才會在開發者控制臺上線
  • 價格一旦訂了,就無法更改(更改的功能也要等幾週後開發者控制臺改版才提供)
  • 如果舊資費已上線,使用者也在使用了,後期如果調整資費,subcription仍會以舊資費向使用者扣款。
  • subcription的訂閱期間分2種-月租型年繳型
  • 透過Google Wallet跟使用者扣款
  • 每期的扣款都會寄一封e-mail通知使用者
  • Google會持續地跟同一張信用卡扣款
  • 關於退費,必須從Google Play-->[我的應用程式]裡去解約,不提供直接從APP做解約的動作
  • 當使用者按了退款,會算到週期結束才結束subcription服務(30或31天,視大小月而定)
  • 特殊狀況下,萬一使用者直接找廠商解約,還是可以透過自己的server並使用server-side API去跟Google做API方式的直接解約
  • subcription只支援有支援in-app-billing的國家
  • (台灣也算在內,請見官方in-app-billing支援國家列表)
  • Google Play app版本號必須在3.5以上,Android版號必須在2.2以上
  • 當使用者移除app時,Google會發出警告通知︰這隻APP仍在subcription服務下,並會詢問是否要解除該訂閱
  • subcription的退費模式遵照in-app-billing,需直接找廠商處理。
  • 即使退費了,服務仍會在使用者手機上維持1個月的cycle。
  • subcription一樣有30%的抽成

Friday, May 18, 2012

果合中介的廣告無法貼齊APP邊緣

就是這個xx
剛才發現果合的中介廣告,
陸出的廣告無法貼齊APP的邊緣,
多了5mm。

找很久才發現原因是因為果合後臺有提供一個close button,
那個button用了版面5pixel。

Saturday, May 12, 2012

NDK的相關知識

一、前言
JAVA在程式語言中,
算是高階語言(人類能理解的語言)。
由於JAVA的主要用途用在商業領域,
因此底層的架構是一層又一層的,
執行的效能可想而知就不如C(中階語言)的快速。

因此才有人會說︰
如果你寫的語言越接近組合語言(低階語言,也是電腦的語言),
執行起來當然就會是最快的。

Android因為提供了NDK,
因此可以將很多C語言的專案收納進來。
當然,
Google提供了NDK的支持,
主要也是因為其自由開放的特性,
更希望大量遊戲之類的專案,
能用進來Android領域被其推廣。

在遊戲畫面裡,
每個物件的處理都需要高度的演算,
這些演算如果使用JAVA來處理,
效能很差。
因此,
如果Android想要有遊戲的支持,
NDK的支持就變成了很重要的重點。

最有名用NDK的例子,
非Angry Bird莫屬。
Angry Bird在Android裡並非使用JAVA寫的,
而是C轉過來在Android上執行的。

二、文章開始
這裡先提及幾個可能需要了解的概念。

首先,
C語言會被放在Android Project的JNI目錄底下。

JNI目錄底下的.mk檔
告訴NDK建構系統(NDK build system)你的Native Code的相關資訊。

JNI目錄底下的.c檔
C語言檔。就好像JAVA檔的副檔名叫.java一樣

JNI目錄底下的.so檔
Android若要執行Native code,
並需先將C語言編譯且封裝成Library。
這個概念就好像我們在JAVA底下,
習慣將程式碼封裝成.jar給別的專案使用一樣。

要將Native code編譯成.so檔,
就要使用make.exe。

make.exe
這個檔案是GNU Make的檔,
功能是將Native code轉成library,
讓其它的程式可以使用。
make出來的檔案,
在Windows環境底下副檔名會是.dll,
而在Linux底下,副檔名就是.so了。

Wiki對於make的解釋
軟體開發中,make是一個工具程式(Utility software),經由讀取叫做「makefile」的文件,自動化建構軟體。它是一種轉化文件形式的工具,轉換的目標稱為「target」;與此同時,它也檢查文件的依賴關係,如果需要的話,它會調用一些外部軟體來完成任務。它的依賴關係檢查系統非常簡單,主要根據依賴文件的修改時間進行判斷。大多數情況下,它被用來編譯原始碼,生成結果代碼,然後把結果代碼連接起來生成可執行文件或者庫文件

在make前,
Android的Project需要有build.xml檔方可編譯,
要在命令提示字元底下、該專案目錄裡,打上指令︰
android update project -p . -s -t android-8
此時,
專案目錄底下就會產生build.xml檔,
這時候,再去對C語言做編譯。

Android也提供了一個快捷的方式make,
就是在專案目錄裡JNI目錄裡,下指令︰
ndk-build

Android一收到ndk-build指令,
便去找系統的make.exe,
幫你把這個C語言打包成Library,
並放進專案目錄底下的libs目錄裡,
副檔名為.so。

ndk-build這個檔案放在NDK目錄底下,
一打開目錄就可以看到了。
要在JNI目錄裡執行ndk-build,
你需要先設定好環境變數。

找不到make.exe
make是在安裝Cygwin的時候,
順便安裝下來的套件,
不要到剛才的GNU make網站去抓安裝包,
因為如果是用這種方式安裝,
屆時在Cygwin裡執行make時,
Cygwin會不認識你自己安裝的make指令哦!

安裝make也蠻簡單的
只要Cygwin在安裝套件包時,
輸入make關鍵字就可以找到了。




文章未完哩....

Thursday, May 3, 2012

百萬大學堂 開發日記

 一、前言
百萬大學堂在上線的2個星期內,
下載量正式破5萬人
也持續了1個星期台灣區APP下載前10名。

在這個部落格裡,
將這隻APP開發過程的三兩事記錄下來,
跟玩家們分享。

二、文章開始
[百萬大學堂]誕生

話說,
本來在餐飲業的我,
這樣子傻傻、不怕死的轉進資訊產業,
而且也因為愛死了那隻小綠人,
所以完全都沒有想的就踏入了Android領域。

這樣子奮鬥也快2年了,
我很想問我自己︰
我的程度到哪裡了?
我的作品能被市場認同嗎?
如果沒有公司要我了,我有自己活下去的能力嗎?

在參與了一次台北GTUG(台灣Android開發者討論社群)的聚會後,
得知三星即將舉辦一場App大賽,
廣邀全台灣Android開發者進來這場比賽,
凡事獲得晉級者,
皆可拿到免費的Samsung Note和Samsung Tablet。
這是一個證明我自己的絕佳機會。
後來,
百萬大學堂沒有得到三星App競賽初評的青睞。

我︰
「可惡,本來看上了SamsungAPP大賽只要APP有晉級,
便可以拿到免費的Note和Tablet,
但是卻沒入圍。
Note那臺規格那麼奇怪,
如果有一臺Note,
至少之後的開發,
還能稍微照顧一下Note的使用者。
現在算了啦,
我們也沒錢再買Note了。
海倫,我們轉向,
把這隻APP趕快做成可運行版本,
在Google Play上架吧!」


版本更新歷史
v1.0.0 - 大學堂上架

海倫是[百萬大學堂]的視覺美編,
我(小鰻)是程式設計 + 企劃發想。

我︰
「海倫,天啊,
真的會瘋掉,
你知道嗎?
我剛才拿我剛做好的程式,
去西門町三星通路實測,
在Note上完全跑版耶!
在平板上更慘!」

海倫︰
「驚!」

我︰
「一定要想一個辦法解決Android解析度不同的問題,
不然海倫妳圖會畫死,
我程式介面也會醜爆!」

v1.0.1 - 改進調成靜音後進不了程式的BUG
在v1.0.0版上架Google Play了以後…
我︰
「啊!我是豬頭嗎?
當我在設定裡,將音量調成靜音後,
遊戲進不去了!
凌晨3點,
快點修BUG!」

v1.0.2 - 能夠調整遊戲時間
海倫︰
「小鰻,網友在幹譙不能調時間啦!
一直在我們的評論裡面罵髒話!」

我︰「發生什麼事?」

海倫︰
「剛才我看了一下,上線到現在2天了,
目前差不多有500人下載了,
但是網友都狂幹譙耶…」

我︰
「500了哦?那有機會追過劉子千哦!(心裡暗爽中)」

我︰
「哦,好啦,那我趕快追加一個能調整遊戲時間的版本。」




v1.0.3 - 防小白篇
海倫︰
「小鰻,下載量破1000了,
但是網友現在都在罵我們,
說遊戲超爛的啦!
而且都給我們1顆星,
還跟我們說題目很少…!」

我︰
「這樣不行,
大學堂是我們的孩子,
我們做爸媽的,
有義務保護好孩子。
海倫,
你趕快上去,留一篇中肯一點的評論,
至少能稍微阻止玩家一直負評下去。
我也會添加"開學典禮",
藉由開學典禮告訴玩家可以設遊戲時間、我們有意見回報的功能。
才2個人是能想出多少題目,
你至少幫我上去止血一下。」

海倫︰
「嗯。」

v1.0.4 - 添加成績單回饋
我︰
「海倫喔~
我從第1版就跟你說,
玩家應該不會只想要看到成績,
畫面應該要有多一點的回饋才對,
上次跟你說的如果玩家得到100分,
小綠人會扭屁股,
如果得0分會3條線,
什麼時候才會畫給我啦!」

海倫︰
「哈哈,我選擇性忘記…」

我︰
「…」
「對了,記得喔,小綠人扭屁股的時候,
屁股要加上小叮噹的尾巴。」

海倫︰
「為什麼?那樣不會很奇怪嗎?」

我︰
「我也不知道,但做就對了。」

海倫︰
「哦…」

為什麼小綠人扭屁股會有小叮噹的尾巴
其實我到現在都還是不知道。
但是海倫畫的那個扭屁股,
我第1次看到動畫時,
連笑了5分鐘,
愛死你了,海倫~


v1.0.5 - 藍牙對戰版上線
海倫︰
「小鰻,嚇到我了啦,
網友開始激增,
而且還是負評不斷!」

我︰
「有什麼辦法,
看到他們一直說題目很少,
我現在就卡在藍牙連線對戰開發,
根本就沒時間找題目啊,
你知道藍牙層一直讓我原本的遊戲當掉
超麻煩的!
厚~
為什麼每次我都要挖洞給自己跳啦!
現在也只能趕趕趕,
快點把藍牙連線版釋出,
才有時間去找題目啦!」

海倫︰
「嗯…」

我︰
「在藍牙連線畫面,
海倫我希望用最簡單的流程,
讓玩家能夠完成藍牙連線的動作,
所以我會希望風格是簡單的,
玩家幾乎不用學習,
就能夠操作。」

海倫︰
「哦…(深思中...,其實是放空中。她自己說的)」

我︰
 「等等!海倫!
這2隻對抗的小綠人,
不應該只是對看,
他們中間應該要有火花!」

海倫︰
「厚~對看就有感覺了!幹嘛還要畫火花啦!」


我︰
不行!要有火花!

後來我把程式畫面實作出來後,
海倫她根本就超愛的,
她說電波有"死光"的感覺。

v1.0.8 - 張君亞傳奇(之所以打"張君亞",是因為"張君雅"侵權。)
我︰
「海倫,
當初我們一次把主題都擺上去書架上,
玩家好像都只玩前面一、兩個單元就不玩了,
這感覺不太對哦!
是不是有什麼方法可以鼓勵他們往後玩,
而不要都只玩前面1、2個單元就跟我們說遊戲很爛、沒深度啊?」

海倫︰
「(思考中)其實是再度放空中…」

我︰
「啊!
我想到了,
尋找張君雅
我們做一個單元,
內容是問玩家有關台灣的泡麵文化的相關問題,
主題取名為尋找張君雅。」

海倫︰
「好像還不錯唷!」

我︰
「可以把張君雅的名牌藏在其它主題的黑板或哪裡,
讓玩家去找它,
收集完後就可以開啟張君雅單元了。」

海倫︰
「不然我可以畫張君雅的笛子、書包…」

我︰
「嗯,先這樣吧…」

隔了一天,
早上6點,
睡夢中驚醒,
傳了WhatsApp給海倫︰
「海倫,
張君雅這件事情我們有一個地方不對,
我們要玩家收集的,
不應該是笛子、書包…,
應該要是筷子、湯匙和泡麵!
因為,
張君雅只吃泡麵!
這是上天賦予她的使命!」

海倫︰
「哦~。」

我︰
「筷子任務題藏進我是萬事通單元裡
問筷子的歷史。
湯匙則藏在另一個單元中,
玩家如果回答到任務題且答對,
就會獲得湯匙和筷子!」

玩家們,準備收集「筷子、湯匙和泡麵」吧!

希望這個創意,你們會喜歡哦!

 張君雅一夕爆肥!!!!
話說,
海倫畫給我的張君雅小妹,
本來是一個瘦子,
睡了一天醒來後︰
「海倫,那個張君亞有問題!
張君亞應該是個胖子!」

後來,海倫畫了胖子張君亞給我。
我︰
「哈哈哈,海倫你昨晚是讓張君雅吃了什麼,才一個晚上,胖那麼多!!」

三、總結
百萬大學堂,
仍在陸續改版中,
海倫也持續被我逼瘋中。

未完,待續。

四、後記
聯成電腦專訪百萬大學堂和我的求學經過


給我靈感