Это указано в файле сборки Gradle, скопируйте файл хранилища ключей в структуру проекта Android Studio, я решил создать новый каталог в приложении под названием keystores: /app/keystores/release.keystore
signingConfigs {
debug {
storeFile file('keystores/debug.keystore')
}
release {
storeFile file('keystores/release.keystore')
keyAlias ...
storePassword ...
keyPassword ...
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
debuggable true
}
release {
signingConfig signingConfigs.release
debuggable false
}
}
Поскольку почти все случаи, в зависимости от библиотеки или метапрограммирования для депрекации являются излишеством. Просто добавьте комментарий к rdoc и звоните Kernel#warn
метод. Например:
class Foo
# <b>DEPRECATED:</b> Please use <tt>useful</tt> instead.
def useless
warn "[DEPRECATION] `useless` is deprecated. Please use `useful` instead."
useful
end
def useful
# ...
end
end
<час> , Если Вы используете Двор вместо rdoc, Ваш комментарий документа должен быть похожим на это:
# @deprecated Please use {#useful} instead
Наконец, если Вы придерживаетесь tomdoc, заставляют Ваш комментарий быть похожим на это:
# Deprecated: Please use `useful` instead
<час>Устаревший: Указывает, что метод удерживается от использования и будет удален в будущей версии. НЕОБХОДИМО использовать это для методов документа, которые были Открыты, но будут удалены в следующей основной версии.
кроме того, не забывают удалять устаревший метод в некотором будущем (и правильно semver 'd) выпуск . Не делайте те же ошибки, которые сделали библиотеки Java.
Вы действительно имеете libdeprecated-ruby
(2010-2012, не доступный больше на rubygem в 2015)
А, небольшая библиотека намеревалась помочь разработчикам, работающим с кодом устаревшим.
идея прибывает из' D
' язык программирования, где разработчики могут отметить определенный код, как удерживается от использования и затем позволить/запретить способности выполнить удержанный от использования код.
require 'lib/deprecated.rb'
require 'test/unit'
# this class is used to test the deprecate functionality
class DummyClass
def monkey
return true
end
deprecate :monkey
end
# we want exceptions for testing here.
Deprecate.set_action(:throw)
class DeprecateTest < Test::Unit::TestCase
def test_set_action
assert_raise(DeprecatedError) { raise StandardError.new unless DummyClass.new.monkey }
Deprecate.set_action(proc { |msg| raise DeprecatedError.new("#{msg} is deprecated.") })
assert_raise(DeprecatedError) { raise StandardError.new unless DummyClass.new.monkey }
# set to warn and make sure our return values are getting through.
Deprecate.set_action(:warn)
assert_nothing_raised(DeprecatedError) { raise StandardError.new unless DummyClass.new.monkey }
end
end
Если вы хотите быть злым (под видом полезности), вы можете распечатать первую строку стека вызовов во время предупреждения, чтобы разработчики знали, где они используют устаревший вызов.
Это подло, потому что я почти уверен, что это удар по производительности.
warn Kernel.caller.first + " whatever deprecation message here"
При правильном использовании это будет включать абсолютный путь к файлу и строку, в которой использовался устаревший вызов. Дополнительная информация о Kernel :: caller доступна здесь
Canivete - это жемчужина, которая позволяет вам отказаться от ваших методов простым и элегантным способом. Немного подробнее об этом здесь .