July 28, 2015

Google Maps Android APIで開発時には地図が表示されるのに本番時に表示されない

メモです。

Android Studioで所定の手順を踏むと、Google Maps Android APIのAPIキーを設定する"google_maps_api.xml"というファイルが生成されます。

Developers Console側で発行されたAPIキーを設定すれば、アプリ内で地図を表示できるようになるはずなのですが、本番用のapkに限って地図が表示されませんでした。

原因ですが、実は"google_maps_api.xml"は2つ生成されていました。

app/src/debug/res/values/google_maps_api.xml
app/src/release/res/values/google_maps_api.xml

Android Studio上のツリーで表示されているのは前者で、開発用です。本番用のファイルがどういうわけか表示されていないので、見落としていました。(表示する方法はあるんですかね?)

後者が本番用で、このファイルを正しく編集すると、本番用のapkでも地図が表示されました。

AndroidManifest.xmlに直書きはなんかかっこ悪いなーと思っていたので、解決できて良かったです。


July 18, 2015

AndroidのActionBarでアイコンだけを表示するメモ

久々にAndroidアプリを触っていて、ActionBarのタイトルを消しつつアイコンだけ表示させたいなーと思い少しハマりました。

いろいろ調べたのですが上手くいかず、以下の方法でとりあえずシンプルに実現できました。

-- AndroidManifest.xml --
<application>のandroid:labelを空にして、起動Activity(?)のandroid:labelにアプリ名をセットしています。これで、起動Activityとアプリ一覧でのみタイトルが表示されるようになりました。
<application
    ... 略
    android:label="">
    <activity android:name=".MainActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity> 
-- MainActivity --
setTitle("")してタイトルを消しています。これで、アプリ一覧でのみタイトルが表示されるようになりました。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setTitle("");
    ... 略
もっとスマート(標準的)な方法があれば教えて下さい。。。

--
追記: この方法だと起動時に一瞬表示されてしまいますね。。。

というわけで改善策が以下です。

編集するのは AndroidManifest.xml だけでよく、<application>のandroid:labelを空にする。起動Activityの<intent-filter>にandroid:labelを指定する。でした。
<application
    ... 略
    android:label="">
    <activity android:name=".MainActivity">
        <intent-filter android:label="@string/app_name">
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
参考(というかそのまんま): http://stackoverflow.com/questions/3488664/android-launcher-label-vs-activity-title