2015-09-29 24 views
11

私は最近、EclipseからAndroid Studioに切り替えました。Android Studio公開ローカルライブラリ

しかし、今では後で再利用するライブラリを作成したいと思っています。私はモジュールについて知っていますが、各プロジェクトで重複をコピーしているようです(Eclipseのようにlibを参照したいと思うので)。

私はMaven/Gradleソリューションに注目しました。理想的には、自分のlibをローカルリポジトリやmavenリポジトリにエクスポートして、それをgradle経由で参照できるようにしたいと考えています。私はかなり長い間探してきましたが、それぞれの答えは異なり、どれも私のために働いていませんでした。 Thisが私が探しているものに最も近いが、javadocの作成にはエラーがある。

これらのサイト(linkおよびlink)には、ライブラリをグローバルに公開するためにBintrayまたはSonatypeアカウントが必要です。ライブラリを公開することは最終的な目標ですので、可能であればそのオプションを開いたままにしておきたいと思いますが、今は自分のライブラリをプライベートにしたいだけです。

エクスポートするメイベックレポを指定できるプラグインがあればかなりいいですが、まだ有望なものは見つけられません。

私の質問は次のとおりです。Androidスタジオでライブラリをエクスポートするための推奨される「シンプルな」方法はありますか?Gradleから参照できますか?

ボーナスマーク:一度発行されたプロガードでライブラリを難読化することはできますか?現在、私のlibにminifyEnabled=trueと設定すると、ビルド時に.aarファイルが生成されません。

+0

は "実行タスクに失敗しました ':アプリ:compileReleaseJavaWithJavac' を>のtools.jarを見つけることができませんでしたか。"? – Shine

答えて

11

maven-publishプラグインを使用して、アクセス可能なリポジトリにアーティファクトを公開することができます。 I am using it combined with Amazon S3。リポジトリは、ローカルMavenリポジトリ(.m2ディレクトリ)、ローカルArtifactory、Archiva、またはその他のMavenリポジトリサーバまたはホストされたソリューションにすることができます。 S3はうまく動作し、Artifactoriesなどがホストされていると確信しています。

外部リポジトリを使用している場合は、リポジトリセクションに追加しますが、プラグインを使用するだけでローカルMavenへの公開を選択できるようになります。 gradleタスクはpublishToMavenLocalと呼ばれます。 刊行物を定義する必要があります。パブリケーションは、ビルドによって作成された単なるアーティファクトのセットです。あなたのケースではおそらくジャーですが、それは何でもかまいません。簡単な例S3でどのように使用するのですか?

apply plugin: 'maven' 
apply plugin: 'java' 
apply plugin: 'maven-publish' 

repositories { 
    maven { 
     name "s3Repo" 
     url "your S3 URL" 
     credentials(AwsCredentials) { 
      accessKey awsAccessKey 
      secretKey awsSecretKey 
     } 
    } 
    maven { 
     ... any other repo here 
    } 
} 

publishing { 
    publications { 
     maven(MavenPublication) { 
      artifactId 'artifact that you want' 
      from components.java 
      artifact distZip { 
       ... example artifact created from zip distribution 
      } 
     } 
    } 
    repositories { 
     add "s3Repo" 
    } 
} 

出版 - >リポジトリ - >を追加するには、あなたがあなたのアーカイブをアップロードしたいすべてのリポジトリを指定する場所です。

repositories { 
... 
    mavenLocal() 
... 
} 

をそして、グループID、アーティファクトIDとバージョンを持つ他の依存性としてあなたのlibを参照してください:あなたは、あなたの地元のmavenからライブラリを使用したい場合は

、単純に追加します。


私が知る限り、難読化されたライブラリは難読化されていないライブラリと同じですが、識別子の名前が変更されただけです。要件が難読化されたライブラリを公開することであれば、それはうまくいくはずです。 APIインターフェイスとクラス(エントリポイント)を難読化しないでください。難読化されていないライブラリを公開した場合、最終的なアーカイブで難読化されるかどうかはわかりません。あなたが得た

関連する問題