<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="format-detection" content="telephone=no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
    <meta name="description" content=" ">

    <title>
        
            
                Page Not Found - Apache Cordova
            
        
    </title>

    <link rel="SHORTCUT ICON" href="/favicon.ico"/>

    

    
    

    <link rel="canonical" href="https://cordova.apache.org/404.html">

    <!-- CSS -->
    <link rel="stylesheet" type="text/css" href="/static/css/main.css">
    <link rel="stylesheet" type="text/css" href="/static/css/lib/syntax.css">

    <!-- Fonts -->
    <!-- For attribution information, see www/attributions.html -->
    <link href='https://fonts.googleapis.com/css?family=Raleway:700,400,300,700italic,400italic,300italic' rel='stylesheet' type='text/css'>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <script type="text/javascript">
        var disqus_developer = 1; // this would set it to developer mode
    </script>

    <!-- JS -->
    <script defer type="text/javascript" src="/static/js/lib/jquery-2.1.1.min.js"></script>
    <script defer type="text/javascript" src="/static/js/lib/bootstrap.min.js"></script>

    <!-- Matomo -->
<script>
    var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
      var u="https://analytics.apache.org/";
      _paq.push(['setTrackerUrl', u+'matomo.php']);
      _paq.push(['setSiteId', '16']);
      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    })();
  </script>
  <!-- End Matomo Code -->
  

</head>

<body>
    <header>
    <a class="scroll-point pt-top" name="top"></a>
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container-fluid">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="/"><img id="logo_top" src="/static/img/cordova-logo-newbrand.svg"/></a>
            </div>
            <div id="navbar" class="navbar-collapse collapse">
                <div class="nav_bar_center">
                    <ul class="nav navbar-nav">
                        <li >
                            <a href="/docs/en/latest/">Documentation</a>
                        </li>
                        <li >
                            <a href="/plugins">Plugins</a>
                        </li>
                        <li >
                            <a href="/blog" id="blog_button">Blog<span class="badge" id="new_blog_count"></span></a>
                        </li>
                        <li >
                            <a href="/contribute">Contribute</a>
                        </li>
                        <li >
                            <a href="/contribute/team.html">Team</a>
                        </li>
                        <li>
                            <a href="/#getstarted">Get Started</a>
                        </li>
                        <li>
                            <form class="navbar-form navbar-right" id="header-search-form" role="search">
                                <div class="input-group">
                                    
                                </div>
                            </form>
                        </li>
                    </ul>
                </div>
            </div><!--/.navbar-collapse -->
        </div>
    </nav>
    <div id="_fixed_navbar_spacer" style="padding-top:50px"></div>
</header>

<div class="page container">
    <div class="whole-page-content vertical-center-parent not-found">
    <div class="vertical-center-child">
        <h1 class="not-found-header">
            404: Not Found
        </h1>
        <div id="not-found-redirect-alert" class="not-found-redirect">
            <div class="alert alert-warning" role="alert">It looks like the content has <em>moved</em> <a id="new-redirect-link">here</a>.</div>
        </div>
        <div id="no-version-redirect-alert" class="not-found-redirect">
            <div class="alert alert-warning" role="alert">It looks like this version <em>isn't translated</em>. The in-development version is <a id="dev-redirect-link">here</a>.</div>
        </div>
        <div id="no-page-redirect-alert" class="not-found-redirect">
            <div class="alert alert-warning" role="alert">It looks like this page <em>doesn't exist in this version</em> of the docs. The main page for this version is <a id="root-redirect-link">here</a>.</div>
        </div>
    </div>
</div>
<script type="text/javascript" src="/static/js/404.js" defer></script>

</div>

<div class="blue-divider"></div>
<footer>
    <div class="container">
        <div class="row">
    <div class="col-sm-9">
        <h1>More Resources</h1>
        <div class="row">
            <div class="col-sm-4">
                <h2>General</h2>
                <ul class="nav">
                    <li>
                        <a target="_blank" href="https://projects.apache.org/project.html?cordova">Apache Project Page</a>
                    </li>
                    <li>
                        <a href="https://www.apache.org/dyn/closer.cgi/cordova">Source Distribution</a>
                    </li>
                    <li>
                        <a target="_blank" href="https://www.apache.org/licenses">License</a>
                    </li>
                    <li>
                        <a href="/artwork">Artwork</a>
                    </li>
                </ul>
            </div>
            <div class="col-sm-4">
                <h2>Development</h2>
                <ul class="nav">
                    <li><a target="_blank" href="https://github.com/apache?utf8=%E2%9C%93&amp;q=cordova-">Source Code</a></li>
                    <li><a target="_blank" href="https://github.com/apache/cordova#filing-a-bug">Issue Tracker</a></li>
                    <li><a target="_blank" href="https://stackoverflow.com/questions/tagged/cordova">Stack Overflow</a></li>
                    <li><a href="/contact">Mailing List</a></li>
                    <li><a href="/contribute/nightly_builds.html">Nightly builds</a></li>
                </ul>
            </div>
            <div class="col-sm-4">
                <h2>Apache Software Foundation</h2>
                <ul class="nav">
                    <li>
                        <a target="_blank" href="https://www.apache.org/">About ASF</a>
                    </li>
                    <li>
                        <a target="_blank" href="https://www.apache.org/events/current-event">Events</a>
                    </li>
                    <li>
                        <a target="_blank" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a>
                    </li>
                    <li>
                        <a target="_blank" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                    </li>
                    <li>
                        <a target="_blank" href="https://www.apache.org/security/">Security</a>
                    </li>
                    <li>
                        <a target="_blank" href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy policy</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <div class="col-sm-3">
        <h1>Contribute</h1>
        <p style="padding-top:20px"><strong>Help Cordova move forward!</strong></p>
        <p>Report bugs, improve the docs, or contribute to the code.</p>
        <a href="/contribute" class="btn btn-lg btn-primary">
            Learn More
        </a>
        <p style="padding-top:20px"> <a href="https://twitter.com/apachecordova" class="twitter-follow-button" data-show-count="false">Follow @apachecordova</a></p>
    </div>
</div>
<p class="copyright_text">
    Copyright &copy; 2024 <a href="https://apache.org">The Apache Software Foundation</a>, Licensed under the <a target="_blank" href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.<br/>
    Apache and the Apache feather logos are <a target="_blank" href="https://www.apache.org/foundation/marks/list/">trademarks</a> of The Apache Software Foundation.
    <br/>
    <p>See the <a href="/attributions/">attributions page</a> for other copyright & trademark notices.</p>
</p>

    </div>
</footer>


    <script defer type="text/javascript" src="/static/js/index.js"></script>
    <script defer type="text/javascript" src="/static/js/twitter.js"></script>
</body>
</html>
