diff --git a/tools/gen_android_bp b/tools/gen_android_bp
index 87c6a55..3b4be0c 100755
--- a/tools/gen_android_bp
+++ b/tools/gen_android_bp
@@ -178,7 +178,7 @@
         self.modules[module.name] = module
 
     def to_string(self, output):
-        for m in self.modules.itervalues():
+        for m in sorted(self.modules.itervalues(), key=lambda m: m.name):
             m.to_string(output)
 
 
@@ -237,11 +237,6 @@
         module: Module to which dependencies should be added.
         dep_name: GN target of the dependency.
     """
-    # Don't try to inject library/source dependencies into genrules because they
-    # are not compiled in the traditional sense.
-    if module.type == 'genrule':
-        return
-
     # If the dependency refers to a library which we can replace with an Android
     # equivalent, stop recursing and patch the dependency in.
     if label_without_toolchain(dep_name) in builtin_deps:
@@ -264,7 +259,12 @@
         module.srcs.append(':' + label_to_module_name(dep_name))
         module.generated_headers.append(
             label_to_module_name(dep_name) + '_headers')
-    elif type in ['group', 'source_set', 'executable'] and 'sources' in target:
+    elif type == 'static_library' and label_to_module_name(
+            dep_name) != module.name:
+        create_modules_from_target(blueprint, desc, dep_name)
+        module.static_libs.append(label_to_module_name(dep_name))
+    elif type in ['group', 'source_set', 'executable', 'static_library'
+                  ] and 'sources' in target:
         # Ignore source files that are generated by actions since they will be
         # implicitly added by the genrule dependencies.
         module.srcs.extend(
@@ -397,17 +397,22 @@
         modules = [Module(module_type, label_to_module_name(target_name))]
     elif target['type'] == 'action':
         modules = make_genrules_for_action(blueprint, desc, target_name)
+    elif target['type'] == 'static_library':
+        modules = [
+            Module('cc_library_static', label_to_module_name(target_name))
+        ]
     else:
         raise Error('Unknown target type: %s' % target['type'])
 
     for module in modules:
         module.comment = 'GN target: %s' % target_name
+        # Don't try to inject library/source dependencies into genrules because
+        # they are not compiled in the traditional sense.
         if module.type != 'genrule':
             module.defaults = [defaults_module]
-
-        apply_module_dependency(blueprint, desc, module, target_name)
-        for dep in resolve_dependencies(desc, target_name):
-            apply_module_dependency(blueprint, desc, module, dep)
+            apply_module_dependency(blueprint, desc, module, target_name)
+            for dep in resolve_dependencies(desc, target_name):
+                apply_module_dependency(blueprint, desc, module, dep)
 
         blueprint.add_module(module)
 
