Skip to content

Commit

Permalink
Generate BuildConfig.java only if it's not packaged in the aar See si…
Browse files Browse the repository at this point in the history
  • Loading branch information
Benoit Billington authored and oleggreen committed Apr 26, 2014
1 parent eca4631 commit 9a8ef96
Showing 1 changed file with 32 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

import static com.jayway.maven.plugins.android.common.AndroidExtension.AAR;
import static com.jayway.maven.plugins.android.common.AndroidExtension.APK;
Expand Down Expand Up @@ -916,12 +918,37 @@ private void generateBuildConfig() throws MojoExecutionException
}
generateBuildConfigForPackage( packageName );

// Generate the BuildConfig for APKLIB dependencies.
for ( Artifact artifact : getTransitiveDependencyArtifacts( APKLIB ) )
try
{
// Generate the BuildConfig for any APKLIB and AAR dependencies.
// Need to generate for AAR, because some old AARs like ActionBarSherlock do not have BuildConfig (or R)
for ( Artifact artifact : getTransitiveDependencyArtifacts( APKLIB, AAR ) )
{
final File manifest = new File( getUnpackedLibFolder( artifact ), "AndroidManifest.xml" );
final String depPackageName = extractPackageNameFromAndroidManifest( manifest );

if ( artifact.getType().equals( AAR ) )
{
final JarFile jar = new JarFile( getUnpackedAarClassesJar( artifact ) );
final JarEntry entry = jar.getJarEntry( depPackageName.replace( '.', '/' ) + "/BuildConfig.class" );

getLog().warn( "AAA TEST: "
+ depPackageName.replace( '.', '/' ) + "//" + getUnpackedAarClassesJar( artifact ) );
if ( entry != null )
{
getLog().info( "Skip BuildConfig.java generation for "
+ artifact.getGroupId() + " " + artifact.getArtifactId() );
continue;
}
}

generateBuildConfigForPackage( depPackageName );
}
}
catch ( IOException e )
{
final File manifest = new File( getUnpackedLibFolder( artifact ), "AndroidManifest.xml" );
final String depPackageName = extractPackageNameFromAndroidManifest( manifest );
generateBuildConfigForPackage( depPackageName );
getLog().error( "Error generating BuildConfig ", e );
throw new MojoExecutionException( "Error generating BuildConfig", e );
}
}

Expand Down

0 comments on commit 9a8ef96

Please sign in to comment.