5

私のアプリケーションは多数の MapView 画面を使用しており、デバッグ環境と本番の間で API キーを管理する方法を見つけようとしています。どうやら、Eclipse でデバッグ アプリケーション キーを変更する方法がないため、その環境でデバッグ マップ API キーを使用する必要があります。逆に、本番アプリケーション キーなしでベータ テスト用のパッケージをエクスポートする方法はないため、作業パッケージを作成するには、すべてのビューでマップ API キーを変更する必要があります。

私の最初のアイデアはこれを行うことでした:

すべての MapView.xml ファイルには次のものがあります。

android:apiKey="@string/googleMapsAPIKey"

そして、strings.xml に次のように記述します。

<string name="googleMapsPIKey">@string/debugGoogleMapsAPIKey</string>
<string name="debugGoogleMapsAPIKey">TheMagicKeyString</string>

これが機能する場合、strings.xml の 1 行を変更するだけで、すべての MapView が再構築で更新されます。しかし、うまくいきませんでした。私は、strings.xml がそれ自体を参照できないと思います。他のアイデアはありますか?

ありがとう

4

8 に答える 8

9

可能性は低いものの、より具体的なアセット フォルダーを利用してデバッグ キーを格納する、より単純なアプローチをお勧めします。これを設定するには、次の内容でファイル res/values/maps-apikey.xml を作成します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="maps_apikey">[productionApiKey]</string>
</resources>

次に、各開発者は、デバッグ API キーが提供されている res/values-v1/maps-apikey.xml に、このファイルから派生したファイルをローカルに追加します。実行時に、Android システムは、Android のすべてのバージョンに対してより具体的なバージョン res/values-v1/maps-apikey.xml を優先します (すべてが少なくとも API レベル 1 以上であるため)。

git や svn などのソース管理システムでは、各開発者が誤ってリポジトリにコミットしないように、この res/values-v1/maps-apikey.xml ファイルを無視するようにツールに指示する「無視」ファイルを追加できます。git でこれを行うには、values-v1 行のみを含むファイル res/.gitignore を追加し、このファイルをコミットします。

ソフトウェアをリリースするには、リリースをエクスポートする前に res/values-v1/maps-apikey.xml ファイルを削除するだけです。生成された APK は、正しいプロダクション キーである res/values/maps-apikey.xml のバージョンを参照します。

于 2011-11-11T09:17:44.883 に答える
3

あなたは正しいことをしていますが、私が思う正しい方法ではありません。次のように、strings.xml で文字列を宣言します。

<string name="googleMapsAPIKey">TheMagicKeyString</string>
<!-- You can add this at the end as comment to keep a copy of another key for instance, to exchange it between debug and production-->

2 つの文字列で同じ名前を付けていないことに注意してください... 1 つはデバッグと呼ばれ、もう 1 つは呼び出されません。

于 2010-08-09T17:55:38.783 に答える
2

私は maven とmaven-android-pluginを使用しており、リリース構成でのみ使用される res-overlay ディレクトリを使用しています。

その結果、res/values/google_api_key.xmlデバッグ キーを含むres-overlay-production/values/google_api_key.xmlファイルと製品キーを含むファイルがあり、後者は製品リリースで前者を上書きします。

私も Eclipse ADT を使用していますが、これはリリース構成を認識していないため、デバッグ キーが表示され、Android XML エディターを使用してマップ ビューをセットアップできます。

于 2011-02-22T10:03:14.323 に答える
1

私は maven-android-plugin を使用しており、これを行うために卑劣なトークン置換メカニズムを使用しています。

「morseflash」サンプルを使用しており、これを maven-resources プラグイン構成に追加しました。

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>resources</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
      <delimiters>
        <delimiter>${*}</delimiter>
        <delimiter>&gt;08*&lt;</delimiter>
      </delimiters>
    </configuration>
</plugin>

リソース プラグインを使用すると、検索/置換用の奇妙な区切り文字を定義できます。デフォルトの区切り文字は ですが、 XML 要素の内容と一致するよう${*}に追加しました。>*<(実際に を使用>08*<しました。その理由については後で説明します。)

次に、strings.xml に次のように書きました。

<string name="googleMapsAPIKey">08DEBUGKEYABCDEFBLAHBLAHBLAH</string>

次のように、リリース プロファイルで Maven プロパティを定義します。

<profile>
    <id>release</id>
    <!-- via this activation the profile is automatically used when the release is done with the maven release
    plugin -->
    <activation>
        <property>
            <name>performRelease</name>
            <value>true</value>
        </property>
    </activation>
    <properties>
        <DEBUGKEYABCDEFBLAHBLAHBLAH>&gt;08RELEASEKEYABCDEFBLAHBLAHBLAH&lt;</DEBUGKEYABCDEFBLAHBLAHBLAH>
    </properties>
    <-- ... -->
</profile>

これにより、デバッグ Maps キーにちなんで名付けられた Maven プロパティが作成され、その値はリリース デバッグ キーになります。

残念ながら、Maven プロパティは数字で始めることはできません。デバッグ キーとリリース キーはどちらも で始まっていた08Wfj...ので、区切り文字を使用し、置換文字列>08*<に含めるようにしました。>08

于 2011-05-12T23:25:30.993 に答える
1

次のようなことを試してください:

String debugMapKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
String releaseMapKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

String mapKey = BuildConfig.DEBUG ? debugMapKey : releaseMapKey;

MapView mv = new MapView(this, mapKey);
于 2012-11-15T10:08:13.333 に答える
1

これは良い方法だと思います!セフィの修正で完璧に動作するはずです。

それに加えて、デバッグ ビルドとリリース ビルドの間でキーを自動的に切り替えたい場合は、私が書いたばかりのこの投稿を見ることができます: http://blog.cuttleworks.com/2011/02/android-dev-prod -ビルド/ . さまざまな環境向けにビルドするときに、構成について心配する必要がなくなりました。

于 2011-02-01T03:04:17.410 に答える
0

Google 開発者コンソールでは、複数の sha1 コードに対して 1 つのキーを作成できます https://stackoverflow.com/a/13881624/1433372

于 2014-04-21T20:24:25.420 に答える
0

Prefs ウィンドウ -> Android -> Build でカスタム デバッグ キーストアを設定できます。

于 2010-08-09T18:32:24.683 に答える