2013-09-30 18 views
6

AndroidライブラリのリリースビルドでProGuardを実行したいと思います。以下は私のプロジェクト内にある私のbuild.gradleファイルです。 gradlew cleanまたはgradlew buildを実行android-library Gradle PluginのrunProguardを動作させる方法は?

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 

apply plugin: 'android-library' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.1" 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 18 
    } 

    sourceSets { 
     main { 
      java { 
       srcDir 'src/main/java' 
      } 
      resources { 
       srcDir 'src/../lib' 
      } 
     } 
    } 

    buildTypes { 
     release { 
      runProguard true 
      proguardFile getDefaultProguardFile('proguard-android.txt') 
     } 
    } 
} 

次のエラーが返されます。

> Could not find method buildTypes() for arguments [[email protected]d] on project

プラグインandroid-librarybuildTypes方法が欠けているようです。 apply pluginandroidに変更すると、gradlewが正常に実行されます。しかし、これは図書館プロジェクトであり、私はそれを維持したいと考えています。私のgradle.build(ここでは言及していません)の他の部分は、プロジェクトのライブラリに依存しています。

android-libraryプラグインでProGuardをビルドする方法はありますか?

+0

私は、最終的なアプリケーションを構成するすべてのコードに対してProGuardを一度実行し、個々のライブラリごとに個別に実行するのではないと思います。 –

+0

配布用のSDK jarを作成しています。私は公共の機能を目に見えるようにしたいが、私的な変数や機能は見えないようにする。 – BVB

答えて

2

はそうのようなbuildTypesのうち、releaseを取ることによって、私の問題を解決:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 

apply plugin: 'android-library' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.1" 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 18 
    } 

    sourceSets { 
     main { 
      java { 
       srcDir 'src/main/java' 
      } 
      resources { 
       srcDir 'src/../lib' 
      } 
     } 
    } 

    release { 
     runProguard true 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
     proguardFile 'proguard-android.txt' 
    } 
} 

はまた、私はreleaseの下に別のproguardFileを追加したことに注意してください。これは、私が最初のbuildTypes問題を解決した後に抱えていた別の問題を修正しました。

+0

他のproguardFileをどこに追加したのか、なぜそうする必要があるのか​​を具体的に説明できますか? – davidgyoung

+0

私はそれを 'build.gradle'ファイルのあるプロジェクトディレクトリのルートに直接追加しました。このファイルは、さまざまなオプションを設定するために使用できます(例えば、どの関数/クラス/変数を" guarded "してはならない)。マニュアルは次のサイトから入手できます:http://proguard.sourceforge.net/index.html – BVB

+0

ああ、私には分かりませんでした。欠けていた点は、releaseTypesが使用していたのと同じレベルになるようにreleaseブロックを移動したことですbuild.gradle – davidgyoung

関連する問題