Google IO 2014公式アプリのビルドと署名

Google IO 2014公式アプリのソースコードが公開されたのでビルドと署名までやってみました。

以下のブログでは既に同様のことをやられています。
さっくり終わったようですね。私のところはトラブル続きでした><
tomoima525's blog
http://tomoima525.hatenablog.com/entry/2014/08/03/165152

1、ソースコードのクローン
https://github.com/google/iosched
に公開されています。

私はSourceTreeを使っているので
https://github.com/google/iosched.git
でクローンを作成しておしまい。

2、Android Studioを起動してインポート
Gradleでビルドするのが前提なのでAndroid Studioをします。
バージョンは0.8.2です。

File→Import Projectでクローンした場所を指定します。
ビルド自体は終了

3、APKに署名
ビルドでは問題ないのに書名すると色々出てくる

(1)android\src\main\java\com\google\samples\apps\ioshed\util\WiFiUtils.java

Error:Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]

setArguments(Bundle)を代わりに使えと出てくるので検索すると
Y.A.M の 雑記帳
http://y-anz-m.blogspot.jp/2012/04/androidfragment-setarguments.html
自転車で通勤しましょ ブログ
http://319ring.net/blog/archives/1703

どうもFragmentのコンストラクタには値は渡せないので、デフォルトコンストラクタを使って、後でsetArguments(Bundle)を使ってパラメータを渡しなさいってことのようです。

確かにWiFiDialogで思いっきりパラメータ渡してます。
public WiFiDialog(boolean wifiEnabled) {
super();
mWiFiEnabled = wifiEnabled;
}

こいつを使ってるのは同じソースの

public static void showWiFiDialog(Activity activity) {
new WiFiDialog(isWiFiEnabled(activity)).show(ft, "dialog_wifi");
}

なのでパラメータ付きのコンストラクタはさっくり削除
呼び出し側を以下のように変えます。
//WiFiDialog Class Create with Default Constructor
WiFiDialog wifiDialogFragment = new WiFiDialog();
//Pass parameters to the WiFiDialog
boolean boolWifiEnable = isWiFiEnabled(activity);
Bundle bundle = new Bundle();
bundle.putBoolean("WifiEnable", boolWifiEnable);
wifiDialogFragment.show(ft, "dialog_wifi");

WiFiDialog側でパラメータを受け取ります。
onCreateDialogの実際に使う前で受け取って代入します。

//Receive the parameters
mWiFiEnabled = getArguments().getBoolean("WifiEnable");

(2)Lint系のエラー
MissingTranslation
ExtraTranslation
が山のようにでます。

http://dev.classmethod.jp/smartphone/android-tips-8-android-lint-1/
によると
ExtraTranslation
ある特定の言語のリソースファイルにある文字列のリソースが、デフォルトのリソースファイルにあるかどうかをチェックします。

MissingTranslation
それぞれの言語ごとの文字列リソースファイル(strings.xml)の各要素をチェックし、翻訳されるかどうかをチェックします。
上記「ExtraTranslation」と反対に、デフォルトのリソースファイルに定義されている要素が、
いずれかの言語のリソースファイルに定義されていない場合にエラーとなります。
だそうです。めんどくさい

android\src\main\res\values\fonts.xml
Error:(19) Error: "font_fontFamily_medium" is not translated in "de" (German), "es" (Spanish), "fr" (French), "it" (Italian), "ja" (Japanese), "ko" (Korean), "pt" (Portuguese), "ru" (Russian), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]

android\src\main\res\values\legal_text.xml
Error:(19) Error: "eula_legal_text" is not translated in "pt" (Portuguese) [MissingTranslation]

android\src\release\res\values\placeholder_strings.xml
Error:(19) Error: "placeholder_session_day" is not translated in "de" (German), "es" (Spanish), "fr" (French), "it" (Italian), "ja" (Japanese), "ko" (Korean), "pt" (Portuguese), "ru" (Russian), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]

android\src\main\res\values\strings.xml
Error:(309) Error: "lorem_ipsum" is not translated in "de" (German), "es" (Spanish), "fr" (French), "it" (Italian), "ja" (Japanese), "ko" (Korean), "pt" (Portuguese), "ru" (Russian), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]

android\src\main\res\values-de\strings.xml
Error:(301) Error: "navdrawer_description_a11y" is translated here but not found in default locale [ExtraTranslation]

EclipseだとLintのオプションをWarningにすれば良いとあるのでAndroid Studioでもやってみましたが効果なし
File→Settings
Inspections→Android Lint→Extra translation(available for Analyze|Inspcet Code)

Smartphone-Zine
http://smartphone-zine.com/mobile/1084.html
ここの方法にしたがって無視するようにXMLファイルに書いていきます。



sans-serif

xmlns:tools="http://schemas.android.com/tools">
tools:ignore="MissingTranslation">sans-serif
あるいは
tools:ignore="ExtraTranslation">Stream

(3)Proguardのエラー
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
:android:proguardClassicRelease FAILED
Error:Execution failed for task ':android:proguardClassicRelease'.
> java.io.IOException: Please correct the above warnings first.

うーん意味不明、Proguardのサイトでも特に情報はし
android:proguardClassicReleaseは.idea\workspace.xmlで以下のように定義

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック