2016年3月23日 星期三

整合 Android In-app Billing 的注意事項

提醒,您必須擁有 Google Play 開發者帳戶以及 Google Payments 商家帳戶。

整合流程:
1. 將 App 加上以下權限。(程式內其他 Billing 相關的部分可暫時先不實作)
<uses-permission android:name="com.android.vending.BILLING" />
2. 將 Apk Sign 好,上傳到 Google Play 的 Alpha 測試階段。(需要一段時間生效)
3. 開始在 Developer Console 中建立應用程式內商品,並記得啟用。
4. 開發者不能購買自己的程式內商品,所以請準備另一個 Google 帳戶作為測試用。
5. 將測試帳號加入 Alpha 測試群組。
6. 將測試帳號加入授權測試帳戶(Developer Console -> 設定 -> 帳戶詳細資料 -> 測試用 Gmail 帳戶),這樣測試交易才不被真的扣款。
7. 參考範例開始實作 In-app Billing 的程式碼。
8. 將實作好的 Apk 傳到實機測試(不能使用模擬器)。請務必確認實機上已有測試帳號,且 Version Code & 簽章跟之前上傳到 Google Play 上的相同。

注意事項:
1. 測試交易會在 14 天後自動取消。所以若要重複測試的話,請至 Google Payments 商家帳戶取消交易。
2. 若您沒有自己的Server處理交易紀錄,而是靠 Google Play Client 來記錄的話。因為他有 Local Caching 的機制,有時不會立即反映交易狀態的改變。比如說您從 Google Payments 商家帳戶取消了交易,但 App 透過 In-app Billing API 去查詢卻還是"已購買"的狀態。此時可以試著重啟裝置讓 Google Play Client 去同步交易狀態。

參考資料:
http://developer.android.com/intl/zh-tw/google/play/billing/index.html
http://developer.android.com/intl/zh-tw/training/in-app-billing/index.html

2015年12月14日 星期一

避免 Android Studio 輸出 APK 時出現 [MissingTranslation] 的問題

最近在用 Android Studio 輸出 Signed APK 時遇到了以下錯誤:
Error: "xxx" is not translated in ... [MissingTranslation]

原因是 Lint 檢查到某些字串沒有被翻譯所導致。但有些字串就是不需、不想或懶得翻譯時該怎麼辦呢?

方法有以下幾種:
1.對不需翻譯的字串加上 translatable="false"
<string name="xxx" translatable="false">"XXX"</string>
2.在 strings.xml 的 resources 加上以下屬性
<resources 
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="MissingTranslation" >
3.在 app/build.gradle 中加上以下設定
android {
    ...
    lintOptions {
        disable 'MissingTranslation'
    }
    ...
}

android {
    ...
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
    ...
}

參考資料:
http://blog.csdn.net/KjunChen/article/details/50043487

2014年3月13日 星期四

升級 SDK Tools & ADT 22.6 後 ProGuard 錯誤的問題

升級 SDK Tools & ADT 22.6 後,從 Eclipse 輸出 Signed APK 可能出現以下錯誤:
Error: Unable to access jarfile ..\lib\proguard.jar

看起來是路徑有問題找不到 proguard.jar,解決方法如下:
到 SDK 中修改 proguard.bat 檔內容,proguard.bat 檔的位置如下:
yourSDK\tools\proguard\bin\proguard.bat

將 proguard.bat 裡面的這行
java -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
修改成 proguard.jar 的絕對路徑 (SDK 路徑請依您安裝而定)
java -jar C:\yourSDK\tools\proguard\lib\proguard.jar %*
改好後再嘗試輸出 Signed APK 應該就會正常了~

參考資料:
https://code.google.com/p/android/issues/detail?id=66733