Правильный способ сохранить и использовать новый ключ Relic API - PullRequest
0 голосов
/ 16 октября 2018

Согласно New Relic docs , я должен сохранить его ключ API в файле с именем newrelic.properties и использовать его при создании основного класса.Как избежать двойного хранения этого ключа (файлы newrelic.properties и Constants)?Как получить API, хранящийся в файле newrelic.properties?

Места, где используется новый ключ Relic API:

MainActivity onCreate:

NewRelic.withApplicationToken("GENERATED_TOKEN").start(this.getApplication());

Файл newrelic.propertiesв имени проекта / пути к приложению

com.newrelic.application_token=GENERATED_TOKEN

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Решение, которое я нашел, основано на следующих темах: Доступ к файлу свойств, расположенному в папке приложения в файле src на android

Android - Как получить идентификатор приложения Flavor

https://discuss.newrelic.com/t/multiple-flavors/12374/15

1 / app / build.gradle

Перед плагином Android {...} добавьте:

// Check if new relic file exists
Properties props = new Properties()
try {
  props.load(file('newrelic.properties').newDataInputStream())
} catch (Exception ex) {
  throw new GradleException("Missing newrelic.properties file on /app path.")
}

2 / app / build.gradle

 productFlavors {
    production {
      dimension = "datatype"
      buildConfigField "String", "NEW_RELIC_API_KEY", "\"${props.getProperty("com.newrelic.application_token")}\""
    }
}

3 / Любой класс в вашем приложении.В моем случае это MainActivity

if(isProductionFlavor()) {
    NewRelic
     .withApplicationToken(BuildConfig.NEW_RELIC_API_KEY)
     .start(this.getApplication())
}
0 голосов
/ 16 октября 2018

Создайте служебный класс AssetsPropertyReader:

public class AssetsPropertyReader {
   private Context context;
   private Properties properties;

   public AssetsPropertyReader(Context context) {
          this.context = context;
          /**
           * Constructs a new Properties object.
           */
          properties = new Properties();
   }

   public Properties getProperties(String FileName) {

          try {
                 /**
                  * getAssets() Return an AssetManager instance for your
                  * application's package. AssetManager Provides access to an
                  * application's raw asset files;
                  */
                 AssetManager assetManager = context.getAssets();
                 /**
                  * Open an asset using ACCESS_STREAMING mode. This
                  */
                 InputStream inputStream = assetManager.open(FileName);
                 /**
                  * Loads properties from the specified InputStream,
                  */
                 properties.load(inputStream);

          } catch (IOException e) {
                 // TODO Auto-generated catch block
                 Log.e("AssetsPropertyReader",e.toString());
          }
          return properties;

   }

}

Затем используйте его следующим образом:

AssetsPropertyReader assetsPropertyReader = new AssetsPropertyReader(context);
Properties p = assetsPropertyReader.getProperties("MyStringsFile.properties"); //here 'MyStringsFile.properties' is the name of the file


Toast.makeText(context, p.getProperty("MyBlog"), 1).show(); //'MyBlog' is the key we want value for

Взято отсюда: http://khurramitdeveloper.blogspot.com/2013/07/properties-file-in-android.html

...