{namespace buck.prebuilt_native_library}

/***/
{template .soyweb}
  {call buck.page}
    {param title: 'prebuilt_native_library()' /}
    {param prettify: true /}
    {param content}

{call buck.rule}
{param overview}
A <code>prebuilt_native_library()</code> rule is used to bundle native libraries
(i.e., <code>.so</code> files) for Android.
{/param}

{param args}

{call buck.arg}
  {param name: 'name' /}
  {param desc}
  The name of the rule.
  {/param}
{/call}

{call buck.arg}
  {param name: 'native_libs' /}
  {param default : 'None' /}
  {param desc}
  Path to a directory containing native libraries.
  This directory has subdirectories for different architectures,
  such as <code>armeabi</code> and <code>armeabi-v7a</code>.
  {/param}
{/call}

{call buck.arg}
  {param name: 'is_asset' /}
  {param default: 'False' /}
  {param desc}
  Normally native shared objects end up into a directory in the root of the APK
  named <code>lib/</code>. If this paratemer is set to <code>True</code>, then
  these objects are placed in <code>assets/lib/</code>. Placing shared objects in
  a non-standard location prevents Android from extracting them to the device's
  internal storage.
  {/param}
{/call}

{call buck.visibility_arg /}

{/param} // args

{param examples}

Most of the time, a <code>prebuilt_native_library</code> is private to the{sp}
{call buck.android_library /} that uses it:

{literal}<pre class="prettyprint lang-py">
prebuilt_native_library(
  name = 'native_libs',
  native_libs = 'libs',
)

android_library(
  name = 'my_lib',
  srcs = glob(['*.java']),
  deps = [
    ':native_libs',
  ],
)
</pre>{/literal}

{/param} // examples
{/call} // buck.rule


    {/param}
  {/call}
{/template}
