Support java_sdk_library as java_libs of apex
When a java_sdk_library module is added, both impl jar and permission xml files are packaged together. For example, when a java_sdk_library "foo" is listed, following two entries will be in an APEX package. /javalibs/foo.jar /etc/permissions/foo.xml Bug: 145474221 Test: m com.android.cronet deapexer list com.android.cronet.apex Change-Id: If5883c02255e9309f20810b1532d3fbe73bf4e95
This commit is contained in:
27
apex/apex.go
27
apex/apex.go
@@ -872,10 +872,16 @@ func apexFileForShBinary(ctx android.BaseModuleContext, sh *android.ShBinary) ap
|
||||
return af
|
||||
}
|
||||
|
||||
func apexFileForJavaLibrary(ctx android.BaseModuleContext, java *java.Library) apexFile {
|
||||
// TODO(b/146586360): replace javaLibrary(in apex/apex.go) with java.Dependency
|
||||
type javaLibrary interface {
|
||||
android.Module
|
||||
java.Dependency
|
||||
}
|
||||
|
||||
func apexFileForJavaLibrary(ctx android.BaseModuleContext, lib javaLibrary) apexFile {
|
||||
dirInApex := "javalib"
|
||||
fileToCopy := java.DexJarFile()
|
||||
return newApexFile(ctx, fileToCopy, java.Name(), dirInApex, javaSharedLib, java)
|
||||
fileToCopy := lib.DexJar()
|
||||
return newApexFile(ctx, fileToCopy, lib.Name(), dirInApex, javaSharedLib, lib)
|
||||
}
|
||||
|
||||
func apexFileForPrebuiltJavaLibrary(ctx android.BaseModuleContext, java *java.Import) apexFile {
|
||||
@@ -1022,6 +1028,21 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
filesInfo = append(filesInfo, af)
|
||||
return true // track transitive dependencies
|
||||
}
|
||||
} else if sdkLib, ok := child.(*java.SdkLibrary); ok {
|
||||
af := apexFileForJavaLibrary(ctx, sdkLib)
|
||||
if !af.Ok() {
|
||||
ctx.PropertyErrorf("java_libs", "%q is not configured to be compiled into dex", depName)
|
||||
return false
|
||||
}
|
||||
filesInfo = append(filesInfo, af)
|
||||
|
||||
pf := sdkLib.PermissionFile()
|
||||
if pf == nil {
|
||||
ctx.PropertyErrorf("java_libs", "%q failed to generate permission XML", depName)
|
||||
return false
|
||||
}
|
||||
filesInfo = append(filesInfo, newApexFile(ctx, pf, pf.Base(), "etc/permissions", etc, nil))
|
||||
return true // track transitive dependencies
|
||||
} else if javaLib, ok := child.(*java.Import); ok {
|
||||
af := apexFileForPrebuiltJavaLibrary(ctx, javaLib)
|
||||
if !af.Ok() {
|
||||
|
Reference in New Issue
Block a user