1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gradle.propertiesの使い方が正しくなくてCircleCI導入にハマった

1
Last updated at Posted at 2016-07-31

この記事について

  • 今更ですがCircleCIを個人プロジェクトに導入してみようかと始めてみました
  • が、全然buildが通らなくて途方に暮れかかったものの
  • BuildConfig の作り方 (build.gradleの記述方法) が良くなかったのが原因でした、という話
  • メモ程度のものなので雑ですがとりあえず残しておく

起きたこと

  • 今回CircleCIを導入したプロジェクトは、TwitterなどのAPIキーを gradle.properties に書くようにしてました
  • この記事 を参考にし、app/gradle.properties を 設定値から作成するbashスクリプトを作成
  • ところが下記のエラーが起きてbuildが通らず
> Building 75% > :app:compileDebugJavaWithJavac/home/ubuntu/bbbbbb-android/app/build/generated/source/buildConfig/debug/pj/aaaa/bbbbb/BuildConfig.java:15: error: cannot find symbol
> Building 75% > :app:compileDebugJavaWithJavac  public static final String TWITTER_CONSUMER_KEY = xxxxxxxxxxxxxxxxxxx;
> Building 75% > :app:compileDebugJavaWithJavac                                                    ^
> Building 75% > :app:compileDebugJavaWithJavac  symbol:   variable xxxxxxxxxxxxxxxxx
> Building 75% > :app:compileDebugJavaWithJavac  location: class BuildConfig
> Building 75% > :app:compileDebugJavaWithJavac/home/ubuntu/bbbbbb-android/app/build/generated/source/buildConfig/debug/pj/aaaa/bbbbb/BuildConfig.java:16: error: cannot find symbol
> Building 75% > :app:compileDebugJavaWithJavac  public static final String TWITTER_CONSUMER_SECRET = xxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
> Building 75% > :app:compileDebugJavaWithJavac  

そこで

  • testのコマンドに、下記を追加してBuildConfigを表示
cat app/build/generated/source/buildConfig/debug/pj/aaaa/bbbbb/BuildConfig.java
  • そしたら、Stringのフィールドに "" が無い
public static final String TWITTER_CONSUMER_KEY = xxxxxxxxxxxxxxxx;
public static final String TWITTER_CONSUMER_SECRET = xxxxxxxxxxxxxx;

なぜ?

  • build.gradleでは下記のようにbuildConfigFieldを書いていた
buildConfigField "String", "TWITTER_CONSUMER_KEY",  TWITTER_CONSUMER_KEY_DEBUG
buildConfigField "String", "TWITTER_CONSUMER_SECRET",  TWITTER_CONSUMER_SECRET_DEBUG
buildConfigField "int", "LOG_LEVEL", "3" // DEBUG
  • そして、gradle.properties を下記のように書いていた
  • 上記で触れた自動生成のscriptでも "" で挟むようにしてた
TWITTER_CONSUMER_KEY_DEBUG="xxxxxxxxxxxxxxxxx"
TWITTER_CONSUMER_SECRET_DEBUG="xxxxxxxxxxxxxxxxxx"
  • どうやらlocal環境では、build.gradleの TWITTER_CONSUMER_KEY_DEBUG が "" 込みで置き換わるらしい
  • ところが、CircleCIの上では、""が入らない (何が原因かは分からないが)

そこで

  • build.gradleを下記のように書き換えた ("" で挟むようにした)
buildConfigField "String", "TWITTER_CONSUMER_KEY", "\"" + TWITTER_CONSUMER_KEY_DEBUG + "\""
buildConfigField "String", "TWITTER_CONSUMER_SECRET", "\"" + TWITTER_CONSUMER_SECRET_DEBUG + "\""
buildConfigField "int", "LOG_LEVEL", "3" // DEBUG
  • gradle.properties から ""を取った
  • 上記で触れた自動生成のscriptでも "" で挟むのをやめた
TWITTER_CONSUMER_KEY_DEBUG=xxxxxxxxxxxxxxxxx
TWITTER_CONSUMER_SECRET_DEBUG=xxxxxxxxxxxxxxxxxx

一応これで

  • うごきました。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?