| {namespace apk_genrule} |
| |
| /***/ |
| {template .soyweb} |
| {call buck.page} |
| {param title: 'apk_genrule()' /} |
| {param prettify: true /} |
| {param content} |
| |
| {call buck.rule} |
| {param overview} |
| An <code>apk_genrule()</code> rule is used to post-process an APK. What |
| separates an apk_genrule from a genrule is apk_genrules are known by BUCK to |
| produce APKs, so commands like <code>buck install</code> or |
| {sp}<code>buck uninstall</code> still work. Additionally, |
| {sp}<code>apk_genrule()</code> rules can be inputs to other |
| {sp}<code>apk_genrule()</code> rules. |
| {/param} |
| |
| {param args} |
| |
| {call buck.arg} |
| {param name: 'name' /} |
| {param desc} |
| The name of the rule. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'apk' /} |
| {param desc} |
| The input <code>android_binary()</code> rule. The path to the APK can be |
| accessed with the <code>$APK</code> shell variable. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'srcs' /} |
| {param desc} |
| Same as <code>genrule()</code>. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'deps' /} |
| {param desc} |
| Same as <code>genrule()</code>. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'cmd' /} |
| {param default: 'None' /} |
| {param desc} |
| Same as <code>genrule()</code>. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'bash' /} |
| {param default: 'None' /} |
| {param desc} |
| Same as <code>genrule()</code>. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'cmd_exe' /} |
| {param default: 'None' /} |
| {param desc} |
| Same as <code>genrule()</code>. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'out' /} |
| {param desc} |
| Same as <code>genrule()</code>. |
| {/param} |
| {/call} |
| |
| {call buck.visibility_arg /} |
| |
| {/param} // close args |
| |
| {param examples} |
| Here is an example of a couple <code>apk_genrule()</code> open up an APK, do |
| some super signing, and then zipalign that APK again. |
| |
| {literal}<pre class="prettyprint lang-py"> |
| |
| # Building this rule will produce a file named messenger.apk. |
| android_binary( |
| name = 'messenger', |
| manifest = 'AndroidManifest.xml', |
| target = 'Google Inc.:Google APIs:16', |
| keystore = '//keystores:prod', |
| package_type = 'release', |
| proguard_config = 'proguard.cfg', |
| deps = [ |
| ':res', |
| ':src', |
| ], |
| ) |
| |
| apk_genrule( |
| name = 'messenger_super_sign_unalign', |
| apk = ':messenger', |
| deps = [ |
| '//java/com/facebook/sign:super_sign', |
| ], |
| bash = '$(exe //java/com/facebook/sign:super_sign) --input $APK --output $OUT', |
| cmd_exe = '$(exe //java/com/facebook/sign:super_sign) --input %APK% --output %OUT%', |
| out = 'messenger_super_sign_unalign.apk', |
| ) |
| |
| apk_genrule( |
| name = 'messenger_super_sign', |
| apk = ':messenger_super_sign_unalign', |
| deps = [], |
| bash = '$ANDROID_HOME/tools/zipalign -f 4 $APK $OUT', |
| cmd_exe = '%ANDROID_HOME%\\tools\\zipalign -f 4 %APK% %OUT%', |
| out = 'messenger_super_sign.apk', |
| ) |
| |
| </pre>{/literal} |
| {/param} |
| |
| {/call} // close buck.rule |
| |
| {/param} |
| {/call} |
| {/template} |