对于我们开发的SDK,我们正在寻找解决依赖冲突的正确方法,当SDK项目和客户端应用程序(使用SDK构建)使用相同的第三方库(例如,Otto来自Square,Android Annotations等),可能不一定与第三方库的确切版本相同。
我注意到gradle提供了这样的设置:
dependencies {
compile("org.gradle.test.excludes:api:1.0") {
exclude module: 'shared'
}
}
虽然这种方法很简洁,但我认为缺点是,SDK开发人员需要告知SDK用户他们在项目中使用的所有库,因此库不会被“隐藏”。
另一种方法是使用jarjar之类的工具来重新打包JAR库。虽然我从未使用过这个工具,但看起来很简单,但是每次有新版本的库时都必须这样做,也许不是一个好方法。
任何指针都会非常有用。
答案 0 :(得分:1)
SDK开发人员需要告知SDK用户他们在项目中使用的所有库,因此库中的库是'不被保留"隐藏"
不是真的。集成SDK的开发人员可以use Gradle to determine what the transitive dependencies are进行调整。
另一种选择是使用像jarjar这样的工具来重新打包JAR库。虽然我从未使用过这个工具,但看起来很简单,但是每次有新版本的库时都必须这样做,也许不是一个好方法。
AFAIK,jarjar仅适用于JAR。并非所有Android依赖项都是JAR,正如您在问题标题中所述。对于AAR,AFAIK,您必须创建自己的Sub DataTable()
Dim wsEff As Worksheet
Dim wsShip As Worksheet
''Application.ActiveSheet.Name = Range("A2")
'Need ' Set wsShip = Worksheets(Range("A2"))?
Set wsShip = Worksheets("Shipped")
Set wsEff = Worksheets("Efficiency")
With wsEff
Dim lRow As Long
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("A1:H" & lRow).AutoFilter Field:=2, Criteria1:="Ship"
Dim rngCopy As Range
'All Columns A:H
Set rngCopy = .Columns("A:H")
'filtered rows, not including header row - assumes row 1 is headers
Set rngCopy = Intersect(rngCopy, .Range("A1:H" & lRow), .Range("A1:H" & lRow).Offset(1)).SpecialCells(xlCellTypeVisible)
rngCopy.Copy
End With
wsShip.Range("A4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("Efficiency").ShowAllData
End Sub
工具,该工具可以处理将所有资源,资产等更改为新名称,因此它们不会与原始AAR冲突。这可能很难。