2017-12-13 12 views
0

Androidビルドを作成するときに出力ファイル名を変更しようとしています。ここで私はそれが正常に動作します。このがエスケープします。 (ドット)をグラデーション文字列

applicationVariants.all { variant -> 
    variant.outputs.all { 
     def buildDate = getDate() 
     outputFileName = "$variant.applicationId-$buildDate-$variant.buildType.name" 
    } 
} 

のために使用していたコードですが、出力ファイルは.apk拡張子を持っていません。そこで最後に.apkを追加して追加しようとしました。

outputFileName ="$variant.applicationId-$buildDate-$variant.buildType.name.apk" 

これは明らかにうまくいかなかったものです。これは、次のエラーが発生した -

No such property: apk for class: java.lang.String 

その後、私は働いている.apk\\を追加しようとしましたが、.apkの前に余分な\を生成しました。 \$と同じです。 .apkの前に空白を追加することはできますが、ファイル名にスペースが入ります。だから私の質問はどのように私はドット文字をエスケープし、ちょうどそれがあるとして、それを印刷することができている

classpath 'com.android.tools.build:gradle:3.0.1' 
classpath 'com.google.gms:google-services:3.1.0' 

-

私のクラスパスは、次のように設定されています。

+1

あなたは{}であなたの変数をラップしようとしたんでした:

一つの解決策はそうのように、中括弧内のあなたの変数をラップするだろうか? –

+0

@SarthakMittalあなたは答えとして投稿できますか?ラッピングは機能します。 – noob

答えて

2

何、そのgradleですあなたの変数の完全な名前であるのか、それとも普通のStringなのか混乱しています。

"${variant.buildType.name}.apk" 
1

だから、私の同僚の1だけで歩いて、私はこの方法を示唆した(彼もAndroidやJavaで動作しません)

outputFileName = "$variant.applicationId-$buildDate-$variant.buildType.name"+".apk" 

そしてそれは働きました。だから、私の愚かな: -/

代替アプローチ:
最後に、私は、以下の方法(Sarthak Mittalのおかげで)使用している:私は何が起こっていると思います

outputFileName = "${variant.applicationId}-${buildDate}-${variant.buildType.name}.apk" 
+1

同僚が30秒で私を打ち負かした:-) – donfuxx

+0

@donfuxx笑、ここであなたのコメントに私のupvoteをかける;-) – noob

+0

LOL ok thx。私はこれが最もエレガントな方法であるかどうかはわかりませんが、私は同じことをやったでしょう;-) – donfuxx

関連する問題