

最近ではaarやjarをjcenterやmaven centralなどで公開することがよくあると思いますが、google play
servicesのようにライブラリを部分的に公開する方法を探しています。

分割で公開するだけならばモジュールを切り分けてそれぞれアップすれば良いのですが、やりたいこととしてはgoogle play
servicesのようにproguardをかけつつ分割して公開という感じです。

Google play
servicesのようにコアになるクラス群があって、それぞれのモジュールでそれを参照して処理を書いている場合、単にそれぞれのモジュールでproguardをかけてしまうとコアライブラリの難読化とずれてしまったり、各モジュール間で名前が衝突してしまうのでmappingファイルをみるなりして、全てで同じ名前に難読化されるようにして上げる必要があるかと思います。

もちろん各モジュールでルートになるパッケージを変えて、そのパッケージ名さえ難読化されないようにしてしまえば、依存関係にあるコードとの整合性さえ取ればいいのですが、Google
play servicesでは各モジュールで同一のパッケージにそれぞれでクラスを追加していたりします。  
そうなってくると各モジュールで難読化後に名前の衝突が発生する可能性が出てしまいます。

こういうGooogle play
servicesのようなライブラリはどういうふうにプロジェクトを管理していたり、成果物を生成しているのか(1つのモジュールに全てのコードを書いて成果物を分割できるようにしているのか、複数モジュールで切り分けて難読化をうまいこと整合性とっているのかなど)、ご存知の方いらっしゃいましたらご教授いただけると幸いです。

よろしくお願いいたします。


CC BY-SA 3.0
2017-09-05T12:52:10.597
37735
2018-08-21T00:54:33.370
22734
question
android java gradle
ライブラリの分割提供


google play servicesがどうなのか、正確なところは私にはわかりませんが：

proguardでpublicな部分だけ難読化しないように設定(keep,
public)した上で、ライブラリ間で依存関係にあるメソッド・クラスのみpublic修飾すれば良いです。（いや、それがしたくないんだ、ということでしたら済みません）


CC BY-SA 4.0
2018-08-21T00:54:33.370
47681
2018-08-21T00:54:33.370
7572
37735
answer