Wie kann ich verschiedene String-Ressource-Dateien während der Android-Anti-Release und Debug-Builds?

Ich möchte verschiedene String-Ressourcen-Dateien während der Android-Anti-Release-und Debug-Builds. Ich brauche dies, um eine separate Konfiguration für Map-API-Schlüssel, Remote-Host etc

  • Machen Sie einen ViewFlipper wie die Home Screen mit MotionEvent.ACTION_MOVE
  • Entwickeln von zwei Android-Apps und Kommunikation zwischen zwei
  • IabHelper Android Bug (NullPointerException) launchPurchaseFlow?
  • Jar-Datei Ausgabe mit ADT r17
  • Android Sdk Manager nicht abholen andere Sdk-Plattform
  • Transparenter Teil des Bildes in ImageView wird schwarz
  • Android Canvas.drawText
  • Floating Action Button Anchor Änderungen an View Creation
  • Beibehaltungsliste im Listenfragment bei Orientierungsänderung
  • Wie greife ich auf Fragments Kind Ansichten in Fragment Elternteil Aktivität?
  • Wie kann ich den Pfad zur Git-Datei in Android Studio konfigurieren?
  • Wo ist der Plugin-Ordner für Android Studio auf MAC
  • 3 Solutions collect form web for “Wie kann ich verschiedene String-Ressource-Dateien während der Android-Anti-Release und Debug-Builds?”

    Ich benutze Eclipse für Tag zu Tag Debug-Builds, dann Ant für Release baut. Ich habe Debug- und Release-Versionen der Datei mit dem Google Maps API Key. Ich habe die build.xml (ich bin auf SDK-Tools R15) geändert, um das Kopieren der entsprechenden Datei vor dem Build und danach zu machen. Ich habe das -pre-build geändert und zertreffende Ziele wie folgt:

    <target name="-pre-build"> <echo message="In pre build-----------------------------------" /> <echo message="build target ${build.target}" /> <if condition="${build.is.packaging.debug}"> <then> <echo>Copying debug api key************************************</echo> <copy file="${layout.dir}/googlemapdebug.xml" tofile="${layout.dir}/googlemap.xml" overwrite="true" /> </then> <else> <echo>Copying RELEASE api key************************************</echo> <copy file="${layout.dir}/googlemaprelease.xml" tofile="${layout.dir}/googlemap.xml" overwrite="true" /> </else> </if> </target> <target name="release" depends="clean, -set-release-mode, -release-obfuscation-check, -package, -release-prompt-for-password, -release-nosign" ............. LINES OMITTED ............. <!-- Zip aligns the APK --> <zipalign-helper in.package="${out.unaligned.file}" out.package="${out.final.file}" /> <echo>Release Package: ${out.final.file}</echo> <echo>Always copy DEBUG MAPS API file back for Eclipse **********************</echo> <copy file="${layout.dir}/googlemapdebug.xml" tofile="${layout.dir}/googlemap.xml" overwrite="true" /> </sequential> </do-only-if-not-library> <record-build-info /> </target> 

    Ich definiere layout.dir in der ant.properties (neuer Name für build.properties nach SDK Tools 14) Datei:

     projectname=MyProject workspace.dir=/dev/projects/EclipseIndigo/AndroidWorkTwo base.dir=${workspace.dir}/${projectname} layout.dir=${base.dir}/res/layout 

    Sie könnten dies an Ihre Bedürfnisse anpassen, vorausgesetzt, Sie haben nicht zu viele Dateien zu tauschen in und aus. Ich vermute, Sie könnten eine Eigenschaft für das Verzeichnis mit Ihrer Strings.xml hinzufügen

    Nick, ich verstehe nicht, warum du auch die Release-Aufgabe umschreibst. Ich habe nur Vorbau hinzugefügt und es funktioniert für mich

     <target name="-pre-build"> <if condition="${build.is.packaging.debug}"> <then> <echo>Copying debug config</echo> <copy file="./config/debug.xml" tofile="./res/values/config.xml" overwrite="true"/> </then> <else> <echo>Copying release config</echo> <copy file="./config/release.xml" tofile="./res/values/config.xml" overwrite="true"/> </else> </if> </target> 

    Die beiden Antworten basieren alle auf Eclipse ADT . Jetzt Android Studio ist die beliebtere IDE, können Sie die Vorteile der gradle Build-System.

    build.gradle in Ihrer build.gradle Datei den folgenden Code in android Tag ein:

     buildTypes { release { buildConfigField "boolean", "LOG_DEBUG", "false" resValue "string", "some_key", "AAAAAAA" } debug { buildConfigField "boolean", "LOG_DEBUG", "true" resValue "string", "some_key", "BBBBBBB" applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk")) } } } } 

    Sie können BuildConfig.LOG_DEBUG als boolean Wert in Ihrem Java-Code verwenden. import your.package.name.BuildConfig; daran, import your.package.name.BuildConfig; zu import your.package.name.BuildConfig;

    Sie können auch some_key als String-Ressource verwenden. Der Java-Code, der es benutzt, ist: R.string.some_key .

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.