2016-09-23 11 views
4

私はScalaコードを難読化しましたが、sbt assemblyステップで構築されたjarファイルに対して難読化を実行する方法を理解できません。または少なくともproguardのステップの間に脂肪瓶を作る方法。私はproguardのための引数がinjarであることが判明しましたが、私はそれをbuild.sbtにどのように適用するのか手がかりがありません。誰かが私がこれをどうやってできるかを教えてください。ProguardとSBTでfat Scala Jarを難読化する方法

UPD実際にProguardによって構築されたJARには、難読化されたクラスのみが含まれており、Proguardによって無視されるクラスは1つではありません。これは、ProGuardのための単一の入力として、あなたの脂肪のjarファイルを指定することになり

ProguardKeys.inputs in Proguard := Seq(baseDirectory.value/"target"/s"scala-${scalaVersion.value.dropRight(2)}"/s"${name.value}-assembly-${version.value}.jar") 

:以前あなたはbuild.sbtでinputs設定を無効にする必要がありassemblyタスクによって構築されたjarファイルに対してProGuardの難読化を実行するには

答えて

5

。また、難読化に使用される入力ライブラリを変更したいと思うかもしれません。ここではすべてのライブラリを除外する方法の一例です:ProGuardのはMETA-INF/MANIFEST.MFファイルを除外しますので

ProguardKeys.inputFilter in Proguard := { file => None } 

上記の設定が必要です:あなたはクラスの唯一のソースは持っているので

ProguardKeys.libraries in Proguard := Seq() 

は、最後に入力フィルタを無効にしますデフォルトでは

ProguardKeys.merge in Proguard := false 

そして最後に、あなたのProGuardのタスクにassembly依存関係を追加します:

(ProguardKeys.proguard in Proguard) <<= (ProguardKeys.proguard in Proguard).dependsOn(assembly) 
+0

こんにちは@Zyoma、私はSBTを使用することができませんよ。また、マージステップは、もはやassemblyタスクは既にこのステップを行っているので必要ありません-proguardプラグイン。 Sbtは依存関係を解決することができないと不満を続けています。 Proguardを動作させるには、resolverをbuild.sbtファイルに追加する必要がありましたか?ありがとう。 – jithinpt

+0

こんにちは@Zyoma、難読瓶を作るためにあなたが走ったsbtコマンドは何ですか? – jithinpt

関連する問題