Как я могу прикрепить различные файлы строковых ресурсов во время сборки и отладки андроидов ant?

Я хочу приложить различные файлы строковых ресурсов во время сборки и отладки antroid ant. Мне нужно, чтобы у меня была отдельная конфигурация для ключа карты api, удаленного хоста и т. Д.

Solutions Collecting From Web of "Как я могу прикрепить различные файлы строковых ресурсов во время сборки и отладки андроидов ant?"

Я использую Eclipse для ежедневной сборки отладки, а затем Ant для выпуска. У меня есть отладка и выпуск версий файла с ключом API Карт Google. Я изменил build.xml (я на SDK-инструментах R15), чтобы сделать некоторое копирование соответствующего файла перед сборкой и после. Я изменил цели -pre-build и release:

<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> 

Я определяю layout.dir в ant.properties (новое имя для build.properties после SDK Tools 14) file:

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

Вы можете адаптировать это в соответствии с вашими потребностями, предполагая, что у вас нет слишком большого количества файлов для обмена и вывода. Я думаю, вы могли бы добавить свойство для каталога с вашим strings.xml

Ник, я не понимаю, почему вы также переписываете задачу выпуска. Я добавил только предварительную сборку, и она работает для меня

 <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> 

Все два ответа основаны на Eclipse ADT . Теперь Android Studio является более популярной IDE, вы можете воспользоваться gradle построения gradle .

В файле build.gradle добавьте следующий код в тег android :

 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")) } } } } 

Вы можете использовать BuildConfig.LOG_DEBUG как boolean значение в вашем Java-коде. Просто не забудьте import your.package.name.BuildConfig;

Вы также можете использовать some_key как строковый ресурс. Код его использования: R.string.some_key .