[PDF Download] Building hybrid android apps with java and javascript applying native device apis jap

Page 1


Building

Hybrid Android Apps with Java and JavaScript Applying Native Device APIs Japplying Native Device Apis 1st Edition Gok Nizamettin Khanna Nitin

Visit to download the full and correct content document: https://textbookfull.com/product/building-hybrid-android-apps-with-java-and-javascriptapplying-native-device-apis-japplying-native-device-apis-1st-edition-gok-nizamettin-kh anna-nitin/

More products digital (pdf, epub, mobi) instant download maybe you interests ...

Learning React Native Building Native Mobile Apps with JavaScript 2nd Edition Bonnie Eisenman

https://textbookfull.com/product/learning-react-native-buildingnative-mobile-apps-with-javascript-2nd-edition-bonnie-eisenman/

React Native in Action Developing iOS and Android apps with JavaScript 1st Edition Nader Dabit

https://textbookfull.com/product/react-native-in-actiondeveloping-ios-and-android-apps-with-javascript-1st-editionnader-dabit/

React Native in Action Developing iOS and Android apps with JavaScript 1st Edition Nader Dabit

https://textbookfull.com/product/react-native-in-actiondeveloping-ios-and-android-apps-with-javascript-1st-editionnader-dabit-2/

Fullstack React Native Create beautiful mobile apps with JavaScript and React Native 5th Edition Devin Abbott

https://textbookfull.com/product/fullstack-react-native-createbeautiful-mobile-apps-with-javascript-and-react-native-5thedition-devin-abbott/

Introducing Mechanisms and APIs for Memory Management Using Windows OS Native Runtime APIs 1st Edition Roger Villela

https://textbookfull.com/product/introducing-mechanisms-and-apisfor-memory-management-using-windows-os-native-runtime-apis-1stedition-roger-villela/

Designing Web APIs Building APIs That Developers Love First Edition Jin

https://textbookfull.com/product/designing-web-apis-buildingapis-that-developers-love-first-edition-jin/

Server Side Swift with Vapor Building Web APIs and Web Apps in Swift 3rd Edition Raywenderlich.Com Tutorial Team

https://textbookfull.com/product/server-side-swift-with-vaporbuilding-web-apis-and-web-apps-in-swift-3rd-editionraywenderlich-com-tutorial-team/

Java APIs, Extensions and Libraries Kishori Sharan

https://textbookfull.com/product/java-apis-extensions-andlibraries-kishori-sharan/

RESTful Java Web Services A pragmatic guide to designing and building RESTful APIs using Java 3rd Edition Balachandar

https://textbookfull.com/product/restful-java-web-services-apragmatic-guide-to-designing-and-building-restful-apis-usingjava-3rd-edition-balachandar/

Building Hybrid Android Apps with Java and JavaScript

Nizamettin Gok and Nitin Khanna

Building Hybrid Android Apps with Java and JavaScript

Copyright © 2013 Nizamettin Gok and Nitin Khanna. All rights reserved.

Printed in the United States of America.

Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.

O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are alsoavailableformosttitles(http://my.safaribooksonline.com).Formoreinformation,contactourcorporate/ institutional sales department: 800-998-9938 or corporate@oreilly.com

Editors: Simon St. Laurent and Meghan Blanchette

ProductionEditor: Melanie Yarbrough

Proofreader: Linley Dolby

July 2013: First Edition

RevisionHistoryfortheFirstEdition:

2013-07-19: First release

CoverDesigner: Randy Comer

InteriorDesigner: David Futato

Illustrator: Rebecca Demarest

See http://oreilly.com/catalog/errata.csp?isbn=9781449361914 for release details.

NutshellHandbook,theNutshellHandbooklogo,andtheO’ReillylogoareregisteredtrademarksofO’Reilly Media, Inc. Building Hybrid Android Apps with Java and JavaScript, the image of a pacuma toadfish, and related trade dress are trademarks of O’Reilly Media, Inc.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc., was aware of a trade‐mark claim, the designations have been printed in caps or initial caps.

While every precaution has been taken in the preparation of this book, the publisher and author assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein.

ISBN: 978-1-449-36191-4

[LSI]

Iwouldliketodedicatethispublicationtomysons,AkiraandHiroki,andmywife,Yukiyo, for their support. I wouldn’t be able to complete this without all of you.

Gok

I would like to dedicate this book to my wife and parents; without their support, this book would not have been possible.

Preface

This book is intended for an audience interested in building powerful HTML applica‐tions by bridging the gap between JavaScript and the device’s native APIs. This book lays down a solid foundation for the architectural aspects of hybrid applications on Android,coveringinternalsofWebKitandAndroidasneeded.Aspartofthisbook,we have not only introduced some of the key web technologies used for building hybrid applications, but we have also focused on how they can be integrated into the Android build system. We will also be discussing some important aspects of hybrid applications from a security perspective.

To tie it all together, we are also introducing the Karura Framework. The purpose of this framework is two pronged. First, we want to simplify the overall process of inte‐grating native components in hybrid applications. Second, we want to present a lean frameworkthatiseasytoreadandwritefor.Theframeworkitselfisplug-in–basedand can be extended and cut down based on the requirements of individual applications. We have released the framework under a dual license scheme. You can easily import Karura Framework into your project using Eclipse or the command line and start de‐veloping for it.

To reiterate, this book has been written with the purpose of allowing our readers to understand the following:

•What is a hybrid application?

•What goes under the hood in Android in the case of hybrid applications?

•What does the architecture of a hybrid application look like?

• Whataresomekeytoolsandtechnologiesforbuildingnextgenerationhybridapps?

•What are the security considerations for hybrid applications?

•How do I publish an application in Google Play and Amazon App Store?

Conventions Used in This Book

The following typographical conventions are used in this book: Italic

Indicates new terms, URLs, email addresses, filenames, and file extensions.

Constant width

Usedforprogramlistings,aswellaswithinparagraphstorefertoprogramelements such as variable or function names, databases, data types, environment variables, statements, and keywords.

Constant width bold

Shows commands or other text that should be typed literally by the user.

Constant width italic

Shows text that should be replaced with user-supplied values or by values deter‐mined by context.

This icon signifies a tip, suggestion, or general note. This icon indicates a warning or caution.

Using Code Examples

This book’s accompanying files, libraries, and required frameworks (such as Karura) are hosted on GitHub. You can view them online or download them from http:// github.com/karuradev.

WewillcontinuetomaintaintheKaruraFrameworkandwillprovidevariousexamples of Hybrid Apps on GitHub as well. Should you have any questions or inquires about Karura Framework, please contact us at karuradev@gmail.com

This book is here to help you get your job done. In general, if this book includes code examples,youmayusethecodeinthisbookinyourprogramsanddocumentation.You donotneedtocontactusforpermissionunlessyou’rereproducingasignificantportion of the code. For example, writing a program that uses several chunks of code from this bookdoesnotrequirepermission.SellingordistributingaCD-ROMofexamplesfrom O’Reilly books does require permission. Answering a question by citing this book and quotingexamplecodedoesnotrequirepermission.Incorporatingasignificantamount

x | Preface

of example code from this book into your product’s documentation does require per‐mission.

We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “Building Hybrid Android Apps with Java and JavaScript by Nizamettin Gok and Nitin Khanna (O’Reilly). Copyright 2013 Niza‐mettin Gok and Nitin Khanna, 978-1-449-36191-4.”

Ifyoufeelyouruseofcodeexamplesfallsoutsidefairuseorthepermissiongivenabove, feel free to contact us at permissions@oreilly.com.

Safari® Books Online

Safari Books Online isanon-demanddigitallibrarythatdeliversexpertcontentinboth book and video form from the world’s leading authors in technology and business.

Technology professionals, software developers, web designers, and business and crea‐tiveprofessionalsuseSafariBooksOnlineastheirprimaryresourceforresearch,prob‐lem solving, learning, and certification training.

Safari Books Online offers a range of product mixes and pricing programs for organi‐zations,governmentagencies,andindividuals.Subscribershaveaccesstothousandsof books,trainingvideos,andprepublicationmanuscriptsinonefullysearchabledatabase from publishers like O’Reilly Media, Prentice Hall Professional, Addison-Wesley Pro‐fessional, Microsoft Press, Sams, Que, Peachpit Press, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, Course Technol‐ogy,anddozensmore.FormoreinformationaboutSafariBooksOnline,pleasevisitus online.

How to Contact Us

Please address comments and questions concerning this book to the publisher:

O’Reilly Media, Inc.

1005 Gravenstein Highway North Sebastopol, CA 95472

800-998-9938 (in the United States or Canada)

707-829-0515 (international or local)

707-829-0104 (fax)

We have a web page for this book, where we list errata, examples, and any additional information. You can access this page at http://oreil.ly/hybrid-android-apps-javajavascript.

Preface | xi

To comment or ask technical questions about this book, send email to bookques tions@oreilly.com.

Formoreinformationaboutourbooks,courses,conferences,andnews,seeourwebsite at http://www.oreilly.com.

Find us on Facebook: http://facebook.com/oreilly

Follow us on Twitter: http://twitter.com/oreillymedia

Watch us on YouTube: http://www.youtube.com/oreillymedia

Acknowledgments

Nizamettin Gok

I would like to thank my colleague Sriraman Krishnamoorthy for his valuable input in thisbook.Heisanexcellentarchitectinthemobilespace.Ialsowouldliketothankthe passionateandtalentedtechnicalreviewerMauvisLedfordwhohelpedreviewandcor‐rect this book.

It has been an amazing journey for me to complete this book. During this journey, I quickly realized that writing a book is not only a way of teaching someone, but also learningthecorrectnessofwhatIhavelearned.Forthisreason,itismyultimatepleasure to give back to the developer community.

Nitin Khanna

We would like to thank Mavious Ledford for reviewing the book. We would also like to thank our families, without their support and patience this book would not have been possible.

About the Technical Reviewer

Mauvis Ledford is a full-stack developer, speaker, and technical lead specializing in front-end technologies (CSS3, JavaScript, and HTML5) and cloud computing. He has workedandconsultedforstart-upsandcompanieslargeandsmallfromDisneyMobile to Skype. He currently runs his own software company Brainswap focused on produc‐tivity applications.

xii | Preface

CHAPTER 1

What Is Android?

Android is many things, and the answer depends on who you ask. While for some it is an operating system optimized for mobile devices, others talk of it as an open source middleware and an application framework that allows developers to build applications primarily using the Java programming language.

What is Android? As a software stack, Android is an operating system from Google. Android is free and open source. Android is based on a mobile-centric version of the Linux operation system, at its core. As an application framework, Android packs a comprehensive set of advanced features for developers to build applications with rich user experiences and complex logic. As a middleware, Android offers a number of li‐braries to help developers build their next big ideas with ease. The Android Software Development Kit from Google contains all necessary tools to allow developers to code, develop, and test their applications on Android devices.

Because Android is open, there are a number of off-standard distributions of Android from OEMs like Amazon, Samsung, Motorola, and HTC to name a few. These distri‐butions of Android have been heavily customized to support device profiles or brandspecific user experiences. For good or bad, this has led to huge fragmentation among Androiddevices.Hence,ifyouasktheITdepartmentofanyorganization,Androidand devices running Android pose a huge challenge when trying to provide users with uni‐form access to enterprise assets.

Android has been quite popular since its launch, and the fact that it is open source and enjoys a low entry barrier has led to its usage on platforms beyond mobile devices, including music players, ebook readers, televisions, wearable gadgets such as Google Glass or Android Watches, and so on. Because Android development is based around use of Java as a primary development environment, a huge pool of open source/COTS librariesareavailabletohelpyouaccelerateyourapplicationdevelopmentprocess.This hasalsoledtoahugesurgeintheneedforAndroiddevelopers.Insummary,itisagood platform to learn in the short and long run.

Android Applications

An Android application is a mobile application developed using the Android SDK and targeted toward devices running the Android operating system or runtime (in case of Blackberry devices).

So now that we have some idea about Android and the fact that we are all motivated to build our next killer application for Android, one obvious question looms: In what language should you develop your application? What technologies would you have to learnandmasterforyoutorealizeyournextbigidea:Javaorsomethingelse?Contrary to popular belief, Java is not the only language you can use to develop software for Android. There are a number of tools available today to develop Android apps in C/C ++, Python, Ruby, and HTML/JavaScript.

Inthisbook,wewillfocusonaspecialcategoryofapps,knownasthehybridapplications using a mix of native Java and HTML/JavaScript.

In the rest of this chapter, we will lay down the definition of a hybrid application, and discuss the key architecture and runtime. We will also discuss at a very high level the APIs available in Android that can be used for building these applications.

What Is a Hybrid Application?

“Hybrid” applications are a special category of web applications that extend the webbased application environment through their use of native platform APIs available on agivendevice.Thehybridapplicationdesignpatternisequallyapplicabletobothmobile and desktop environments. For the scope of this book, we will focus on hybrid appli‐cationstargetedtowardtheAndroidplatform,however,mostofthedesignpatternsare also applicable to other platforms, including iOS and Windows Phone.

Categories of Applications

In general, applications can be broadly classified into four distinct categories: native apps, generic mobile apps, dedicated web apps, and hybrid apps. Let’s look at each of these categories.

Native apps are the most common applications that you can find in app stores (appli‐cationmarketplaces)today.Nativeapplicationsareusuallydevelopedusinghigherlevel programminglanguages,suchasJavaforAndroid,Objective-CforiOS,orC#forWin‐dowsPhone.ThenativeAPIsareprovidedtothedeveloperaspartoftheplatformSDK. The platform APIs are usually designed to provide native apps optimal access to hard‐ware capabilities, such as the device’s camera and Bluetooth stack. In addition, users may be able use these apps without an Internet connection. On the downside, since platform SDKs are based around different programming languages, developers need

2 | Chapter1:WhatIsAndroid?

multiple implementations of the same application for them to be able to achieve any reasonable market reach. The development cycle is often tedious, costly, and involves a lot duplicate effort. Native apps are useful when performance optimization is very critical—forexample,insimulationsandhigh-endinteractivegraphics.Buildingnative apps requires highly targeted platform-specific skills and a steeper learning curve, as developers have to deal with the nitty-gritty of the platform.

Generic mobile web apps are websites designed for web-enabled mobile phones. They usually look alike on all platforms and do not leverage platform APIs to customize the user experience for users. Visit Wikipedia mobile app for this example.

Dedicated web apps are web applications that have been tailored for a specific platform like Android, iOS, or Blackberry. A good example for this is LinkedIn web app.

Mobile web apps can be built using common server-side technologies such as NodeJS, PHP, and Ruby on Rails. Access to the app is usually gained by typing the URL address inthemobilebrowser.Theassetsandresources,includingbutnotrestrictedtoimages, audio, video, CSS, and so on, for these apps reside on the web server. One potential downside of this approach is that downloading these assets onto the device may not onlyincreasethecostassociatedwithdatausagebutmayalsoaffectuserexperiencedue to latencies involved in such networks.

HTML5 does offer an application cache mechanism that allows apps to cache the assets to device storage for the future use.

Hybrid apps, like native apps, run within a native process environment on the device. TheseappstypicallywraptheHTMLcontentwithinawebbrowsercontrolinfullscreen mode, without a visible address bar or other browser chrome controls. Hybrid apps leverage the device’s browser engine (the most common being WebKit) to render web content and process JavaScript code. Hybrid apps use a web-to-native abstraction layer (also known as bridge layer) that allows JavaScript to access many device-specific ca‐pabilitiesandnativeAPIsthatarenotgenerallyaccessiblefromthemobilewebbrowser alone.

Key Characteristics of Hybrid Apps

Unlike web applications or mobile websites, which the user can access by browsing to the URL, hybrid apps are typically installed through an app store and are available through the platform application launcher. This means users have to follow the same procedure to install hybrid application, as they would have for native applications. The platform will ask users to grant device access permission upon installation.

At this point, we would like to cite a clear differentiation between a category of apps that we refer to as bookmark web apps, which are like hybrid apps in the sense that they are also downloaded from an app store, but are distinct in the sense that these apps are nothing more than a redirector or a shortcut for a website on the device. These apps usually terminate upon launching a browser session that redirects the user to the website for which this app was created.

Hybrid apps play a critical role in bridging the gap between the capabilities of the web browser and the that of the device, allowing developers to build applications that can benefit from the best of both worlds.

HybridappsareprimarilywrittenusingacombinationofHTML5,CSS,JavaScript,and platform-specific SDKs, such as Java for Android, Objective-C for iOS, or C# for Win‐dows Phone.

A hybrid app package generally includes a bundled copy of all necessary web resources (i.e., HTML, JavaScript, CSS, and images) so that the app instantly loads like a native app, without waiting for a web server to deliver everything. Depending upon the com‐plexity and size of the resources, some variants of hybrid apps may download devicespecific content upon first launch. This allows developers to customize the application user experience on a per-device basis.

With the advancement in mobile operating systems and JavaScript processing engines, ahybridapprunningonreasonablymodernmobiledevicescandeliverhighlyefficient user experiences using bare HTML, CSS, and JavaScript for the UI layer instead of the devices’ native platform programming language.

The hybrid approach provides developers with multiple advantages:

• Developers can update/rollback content and/or the application itself without re‐quiring users to upgrade their application via a native app store. This is a huge advantage for content-oriented mobile apps.

• Developers can target generic UIs across multiple platforms, concentrating on the business logic and not the intricacies of each individual platforms’ UI SDK. This is a huge win because in our experience, this saves developers close to 50% of devel‐opment time through the lifetime of an application.

There is a lot value in developing platform-specific UIs, and you may eventually want to do it once your application usage crosses a certain threshold. Having said that, it should be relatively straightforward in the case of hybrid applications using CSS.

4 | Chapter1:WhatIsAndroid?

Why Developing Hybrid Apps Makes Sense

Hybrid apps have the unique ability of reaping all the benefits of traditional web appli‐cations without many of its limitations.

The benefits of hybrid apps compared to native include:

Faster time to market

Building a hybrid application is typically faster and requires highly reusable stand‐ards skills. It does not involve a tedious learning curve when compared to native programming languages.

Inexpensive cross-platform development cycle

Hybrid apps have cross-platform compatibility, reducing the footprint of native code needed, resulting in more reusable HTML5, CSS, and JavaScript that can be shared and deployed across platforms with minimal adjustment. This is primarily becauseWebKitistheplatformofchoiceacrossallmajormobilephoneOSestoday. Cross-platform development cycles also help keep the cost associated with devel‐opmentandtestingundercontrol.ThereusabilityofHTMLcodeallowsdevelopers to achieve a “develop once, deploy many” architecture. Native apps on the other handwouldrequiredeveloperstoperformfull-featuretestroundsforplatformson which the application is being developed.

Abundant human resources

Hybridappsarebuiltwithwebtechnologies,whichmeansthattherearemanyweb developers who have the base skill set to build mobile apps.

Cost of maintenance

Maintenance costs are usually lower because one does not need to rewrite (port) all application code to the native language of each device platform. Further, since the skill set to develop hybrid apps is readily available, scaling of a development team is also a nonissue.

Approval process

Mostoftheappstoresdohaveanapprovalprocessforwhicheachapphastoqualify beforeitcanbemadeavailablethroughthesaleschannelsofthatappstore.Because hybrid apps can be updated outside the bounds of an app store, you can typically get away with one submission to the app store. Once you are approved, you can pushsubsequentupdatesindependentlythroughyourserverifyoulike.Akeypoint to note however, is that a fresh submission of the application would be required every time you make changes in the native code associated with the hybrid app.

Hybrid apps are the future

LookingtowardthefutureandupcomingadvancementsinmobileOStechnologies, one can easily argue that hybrid apps are the future of development. Windows Phone8,GoogleannouncementstoeventuallymergeChromiumOSandAndroid,

Tizen OS, and Firefox all hint toward a hybrid future, not too far away, and hence, building and deploying hybrid apps is strategically a right thing to do.

The benefits of the hybrid apps compared to mobile web include:

Access to device capabilities

As mentioned in the introduction paragraph, hybrid apps offer the unique oppor‐tunity to reap all the benefits of traditional web applications without many of their limitations.HybridappscanextendtheJavaScriptenvironmenttoaccessthenative APIsandcapabilitiesoftheplatformthatarenotavailablethroughthegenericweb browser environment otherwise, for example, true offline storage, as well as access to contacts and other media on the device.

Unavailable new platform features

Hybrid apps can take advantage of the new features that are available in the new SDKs. However, you will have to develop and expose that native layer using plugins or a framework, which is usually the boilerplate code in most cases.

Distribution through app stores

Hybridappsaredistributedthroughappstoresjustasnativeappsare.Youdiscover, download, and install them, as you would a native application. Therefore as a de‐veloper, you can leverage an existing well-established channel for content, app dis‐covery, and monetization.

Offline access and execution

Hybrid apps, like native apps, can be run locally on the device when the device is offline—i.e., it is not connected to any network.

The possible drawbacks of hybrid apps as compared to native apps include:

Performance

YoumayexperiencepotentialperformanceissuesbecauseJavaScriptisfundamen‐tally single-threaded, which means that only one operation can be performed at a time. However, if done right, you can come up with a solution wherein you can offload background tasks to a native thread, which would execute in parallel while your app is busy performing UI operations. The native thread would then notify the JavaScript of the events and task completions/failures.

Differences in cross-platforms

WebKit is not equally maintained in all mobile platforms, which means that there might be indistinct differences between renderings and platform-specific features towatchoutfor,thoughonecouldarguablysayitisabetterscenariothanrewriting all code from scratch. Further, this is such a well-understood topic that often you would find material describing ways to identify and mitigate these UI experience risks.

6 | Chapter1:WhatIsAndroid?

Unavailable advanced features

Theremightbeadvancedfeaturesthatcannotalwaysbeeasilyimplementedonthe hybridlayer—forexample,OpenGL-basedrendering—however,thesetoffeatures is rapidly shrinking with companies like Microsoft, Google, and Mozilla introduc‐ing a bunch of new standards aimed at bridging this gap.

Inconsistent user interfaces

Platform-specific UIs’ look and feel might be seriously difficult to mimic using HTML, CSS, and JavaScript.

The possible drawbacks to the hybrid apps compared to mobile web include:

Not accessible via website

A user is required to find your application in a native app store and cannot access it via a traditional web browser unless you’ve made one available.

We believe that each of the solution strategies discussed in this chap‐ter have both advantages and disadvantages respectively. Choosing the right technology for building a mobile app can be challenging. One should consider the implementation choices within the purview of the targetedmobileecosystemandtheapplicationspecificationsandcom‐plexity.

Hybrid Application Architecture

Hybrid application architecture, shown in Figure 1-1, is a very high level view and will be described in a more detail later in this book. In addition, we will be covering a new hybrid application framework, which we have developed to substantiate your under‐standing of the concepts described in this book.

Figure 1-1. Hybrid application architecture

Key highlights of the architecture include:

• ApplicationUIandbusinesslogicresidewithinacontextofaheadlesswebbrowser that is fully contained within your application.

• For features that are available within the web browser, the user interacts with the browser and the browser interacts with the native platform environment.

•Resources and assets are available locally or can be downloaded from the Web.

• Fortheplatformfeaturesthatarenotnativelyavailabletoappsthroughthestandard JavaScript environment; custom extensions and plug-ins can be developed. These plug-ins act as a bridge, if you will, diminishing the gaps between the native and web environments.

8 | Chapter1:WhatIsAndroid?

In Chapters 5 and 6, we will address this topic in more detail.

How Do Hybrid Apps Work on the Android Platform?

Android’s implementation of a WebBrowser Control is called a WebView. WebView usestheopensourceWebKitrenderingenginetodisplayandexecutewebcontent.The native Java APIs feature a number of convenience functions that can allow developers to take control of the user experience from native code. For example, they allow devel‐opers to navigate forward and backward through a history, zoom in and out, perform text searches, and more.

One of the functions exposed as part of the native WebView API is WebView.addJavas criptInterface(Object object, String name). This method injects the supplied JavaobjectintotheWebView.TheinjectedJavaobjectcanbeaccessedviatheJavaScript asaglobalvariablewiththesamenamesuppliedintheJavafunction.Thisbridgefunc‐tionalityopensacommunicationchannelbetweentheJavaandJavaScriptlayers.Hybrid apps take advantage of this abstraction layer that exposes the device capabilities to the UI layer.

Thisunderusedandpowerfultechniquecancomeinhandywhenbuildinghybridapps, and we will show you how to take advantage of this feature in later chapters.

While we are on this topic, it is important to understand that the WebView model for extending Java into JavaScript is sort of nonlinear in nature. While JavaScript can call Java methods directly, the reverse is not true—i.e., functional callbacks are not possible fromJavatotheJavaScriptenvironment.ForcallingmethodsintoJavaScriptfromJava, WebView.loadData() and WebView.loadUrl() methods can be used.

OneofthereasonsforthisskewedarchitectureistosupportthefactthatJavaScriptruns in a single-threaded environment. Direct callbacks into the JavaScript environment could expose the JavaScript engine to multiple threads, which would be quite difficult to manage. Hence, by following a model wherein the native environment requests the WebViewtoloadaURLordata,wheneveritwantstocallafunctionintotheJavaScript, we emulate a message queue dispatcher, wherein each request to load data or a URL dispatches a new request to be executed in the order it was received.

CHAPTER 2

Setting Up Your Android Development Environment

Hybrid applications involve a number of complementary technologies that are not na‐tive to the Android development environment and SDK. In this chapter, we will intro‐duceyoutosomeofthekeytechnologiesthatwillplayacrucialroleinhelpingusbuild our first hybrid Android app.

Most of the concepts described in this chapter are utilitarian in nature. These concepts will be used throughout the remainder of the book, so please go over them in detail.

The topics in this chapter range from setting up your development environment to the useofthevariousHTML,CSS,andJavaScripttoolsneededforanefficientdevelopment workflow. We will also cover some key design and implementation strategies related to mobilewebapplicationdevelopment.Inadditiontothis,wewillshowcasesomeutility scripts that augment the Android build system to simplify day-to-day tasks.

In this section, we will describe how to set up the development environment for your hybrid Android application. For the scope of this book, we will use Eclipse as our pri‐mary development environment. Eclipse is a popular open source IDE that supports multiplelanguagesandanextensibleplug-inbasedarchitecture.TheAndroidtoolchain availablefromGooglefeaturesplug-insthatcanbeintegratedintotheEclipseworkspace to streamline your Android application development experience.

Eclipse is not required for Android development but is a handy tool with a lot of features, as we’ll describe later.

For installation, we will use an OS X based workstation, but any Unix-based system shouldworksimilarly.IfyouareonaWindowsplatform,werecommendusingCygwin so that you have an Unix-like shell.

Details about setting up the development environment can be found at the Android developer website along with many other online tutorials. Although there are many resources and tutorials available on this topic, we recommend Android Apps with Eclipse by Onur Cinar (Apress) for some nifty tips about Eclipse.

As of this writing, Google has introduced a new IntelliJ IDEA based IDE and tools for Android development. This IDE is still in its early beta stage and not very stable. We will update the chapters of the book and provide supplementary material on the website for using An‐droid Studio for hybrid application development. Android Studio can be downloaded from the Android Studio website.

Beforeanythingelse,youwillneedtheAndroidSDKfromGoogle’sAndroidSDKweb‐site. Download the latest Android SDK and unpack the ZIP file into a desired location.

Installing Eclipse on Mac OS X

Eclipse for Mac is available as a GZIP package. Once you download Eclipse, it will be availableinyourDownloadsfolder.DependingupontheversionofOSXyouareusing, you may have to double-click on the downloaded file to extract Eclipse. On newer OS X versions, Eclipse might already be extracted in the Downloads folder.

Installing Android Development Tools

Android Development Tools (ADT) comprise a set of open source development tools, available from Google. ADT is packaged as a set of Eclipse plug-ins, which extend the capabilities of the development environment, allowing developers to do the following:

• Create new projects

• Visually design UI

• Debug and unit test applications

• Provide assisted code development

You can find more information about ADT at the Android ADT plug-in website.

To install the ADT plug-in, select the Help→Install New Software menu option in Eclipse. This will display the Install dialog. Click the Add button, which will open the Add Repository dialog. In the Name box, type Google ADT, and in the Location box,

type the following URL https://dl-ssl.google.com/android/eclipse/, and click OK.TheAddRepositorydialogwillnowclose,andyouwillbebacktotheInstalldialog. Now select the Google ADT repository, and select Developer Tools to install the ADT plug-ins.

As of this writing, Google has also released a new integrated version of Eclipse and Android Development Tools called the ADT Bundle. Details for ADT Bundle can be found at the Android ADT Bundle website.ThisbundleincludesEclipse,alongwithAndroidplug-insand the SDK preconfigured for development.

Creating Your First Hybrid Android Project Using Eclipse IDE

To create a new Android project in Eclipse, go to File→New→Android Application Project. In the Project Creation form, the Application Name is the one that will appear in the Play Store, as well as in the Manage Applications (Apps) list. The Project Name is typically the same as the Application Name but should be a unique name within the Eclipse workspace. Finally, you need to choose a Package Name as a fully qualified unique identifier, which will stay the same during lifetime of your application. Even if you release newer versions of your app, the package name must be retained, as this is used by various app stores to identify your application.

The API levels should align with your application specs. You can define the Minimum Required SDK as you target the lowest API level that you would like to support. The lower API levels serve more devices but restrict your apps to fewer features. API 8 and later can cover up to 95% of devices in the Android market.

In the Compile With selection, you choose a target API to compile your code against. For the Theme, we ignore any other options but choose None, because we are not de‐signinganativeapp,andwewilloverridethelookandfeelofapplicationwithJavaScript anyway.

You can also choose the highest API level that your application can work with in the Target SDK selection, specifying the minimum supported SDK to the minimal version you wish to support. If you decide to use this strategy for API selection, you will have to diligently build a user experience wherein you gracefully notify the users about fea‐tures not available on the older devices. Figure 2-1 illustrates the application creation process.

Figure 2-1. Creating a new Android Application Project using Eclipse

In the window shown in Figure 2-2, you define the location of your application in your workspace.

Figure 2-2. Defining your application workspace location

In the window shown in Figure 2-3, you provide a name for your main activity and its layout file. Typically, MainActivity is good enough.

Another random document with no related content on Scribd:

stanotte, non sarai cattiva? Comprendi a qual rischio mi espongo per te, lo comprendi? Sarei degradato, sarei fucilato, lo comprendi tu? se si venisse a sapere...

— E le chiavi della prigione chi le custodisce? — domandò lei sbadatamente.

— Le custodisce il sergente di guardia — rispose il giovane che aveva preso una mano della donna e l’andava attirando a sè, mentre ella lasciava fare onde non prestasse attenzione alle sue domande.

— Comprendi perciò quale sia la responsabilità del capo posto.

— Ci è da... temere che il prigioniero possa fuggire? disse lei, mentre il sergente le poggiava il capo sul seno con gli occhi accesi dal desiderio.

Il sergente a queste parole, pure a mezzo della sua ebbrezza sussultò.

— Non sarebbe possibile — disse con accento sicuro guardando in viso la donna, quasi gli fosse balenato un sospetto. Ma vedendola tranquilla e serena tornò carezzoso a stringersela addosso, quantunque lei a stento si contenesse.

Al certo non ne poteva più perchè di un tratto gli disse:

— Va via, va via. Mi è parso di sentire che il nonno si è svegliato.

— Dunque stasera, due ore dopo l’imbrunire ti troverai sullo spiazzo dietro il castello. Convincerai tuo nonno che quello che vi offro è un asilo sicuro.

— Sta bene — rispose lei.

— E... non mi dai un bacio, uno solo, in acconto?

Il viso che gli rivolse aveva un’espressione d’ira e di sprezzo. Poi si spianò.

— Non do acconti io... o tutto, o nulla! — rispose acremente.

— Dunque a stasera?

— A stasera.

Il giovinotto era punto dal desiderio di stringersela fra le braccia; però si contenne: la guardò e facendo uno sforzo andò via correndo.

— Me la pagherai! — mormorò lei seguendolo con lo sguardo e con accento di minaccia. — Me la pagherai stanotte, imbecille!

Quando risalì trovò colui che ella chiamava nonno accosciato presso l’uscio.

— Insomma — le disse — è conchiuso l’affare? Massaro Cicco non può tenerci più qui, me lo ha detto chiaramente.

— È conchiuso... per stanotte.

— Che il santissimo santo diavolo sia ringraziato! Se stasera non riusciremo so bene quel che farò domani, perchè or ora ho appurato una notizia che se te la dicessi ti verrebbero le convulsioni per lo stupore.

In così dire si era alzato, gettando sulle spalle la pesantissima bisaccia.

— Le convulsioni a me? — rispose lei.

— A te sì, come a me se non sapessi tutta la storia, se non ne fossi stato testimone! Entriamo, entriamo che ti dirò tutto e mi consiglierai sul da farsi.

Ella impensierita lo seguì nel bugigattolo, del quale Pietro il Toro, chè era lui, chiuse la porta.

— Tu finora disse Pietro il Toro quando ella sedette sul lettuccio con gli occhi intenti a lui — tu finora hai creduto che capitan Riccardo fosse un bel giovane sì, un valoroso capobanda, ma nato come tutti noi da povera gente. Ebbene, sai tu quali siano il nome, il titolo, lo stato di colui che chiamiamo capitan Riccardo?

— Dimmelo dunque, dimmelo! — proruppe lei.

— Capitan Riccardo è un gran signore, capitan Riccardo ha il diritto di stare col cappello in testa innanzi al Re, capitan Riccardo infine è il figlio legittimo unico e solo del duca di Fagnano, del vero duca di

Fagnano, di colui che chiamano Commissario civile e che è venuto qui per fucilar tutti noi.

— Che importa a me — rispose lei dopo un istante di silenzio. Capitan Riccardo per me... non è che capitan Riccardo.

— Te l’ho detto — continuò Pietro — perchè io mi trovo ora in un grande imbroglio, ed ho bisogno del tuo avviso. Voialtre donne...

— Io non sono una donna! — disse lei con voce cupa.

— Non sei una donna? Ma se sai far tanto bene la civetta! Dunque voialtre donne siete assai più furbe del diavolo. Devi sapere che sta a me, capisci? sta a me il far di lui un duca, il far di lui un gran signore qual’è.

— Non t’intendo.

— Perchè l’atto matrimoniale, come dicono gli avvocati, tra il duca di Fagnano, quello che ora, dopo trent’anni, è tornato, e la baronessa che morì nel mettere al mondo il nostro Riccardo l’ho io qui, in questa bisaccia, e per trent’anni l’ho portato sempre addosso, sempre.

— E non dicesti mai nulla a capitan Riccardo?

— Ho temuto per lui: impetuoso com’è, avrebbe proclamato il suo diritto impegnando una lotta contro l’usurpatore dei beni e dei titoli che a lui spettavano. Attendevo che si facesse uno stato, che acquistasse amici e aderenti per fornirgli il documento che comprovava il suo diritto.

— E tu — chiese lei che era divenuta pensosa — come avesti un tal documento?

— Come l’ebbi? Le vedi queste due dita? Con queste due dita strinsi così il collo a quel parroco porco che aveva fatto sparire l’atto del matrimonio tra il duca e la baronessa, celebrato di nascosto e a cui testimoniammo io e Carmine, un mio vecchio amico, che il parroco, pur avendolo negato al padre di quella povera signora, al quale anzi disse che non aveva celebrato matrimonio alcuno non potè fare

altrettanto con me... Gli strinsi dunque così il collo che quando ebbe un palmo di lingua di fuori trasse dalla tasca una carta tutta gualcita e me la porse. Era appunto l’atto matrimoniale.

— E lo tenesti occulto per trent’anni?

— Non ne parlavo neanche a me stesso, tanto temevo per la vita di Riccardo se un tal segreto si fosse propalato. Pure... avevo fatto un disegno... Ora posso dirlo: e poi so che vuol bene a capitan Riccardo quasi quanto gliene voglio io. Non ti sei offerta spontaneamente per tentar di farlo evadere?

— Dimmi dunque il tuo disegno.

— Sappi che capitan Riccardo ama una donna.

— La Regina! — esclamò lei mordendosi le labbra. Pietro il Toro alzò le spalle.

— Ma che, ma che! La Regina forse... sai che le regine hanno il diritto di comandare... la Regina forse gli ha comandato di... volerle bene e lui ha ubbidito. Si tratta di ben altro, di un amore che porta nell’anima fin da quando era fanciullo.

— Ah! — fece Vittoria impallidendo. — E... e come si chiama la donna che egli ama?

— Sai tu le canzoni che si cantano sulle nostre montagne, le canzoni d’amore che descrivono le bellezze della donna amata? Ebbene, per quella lì bisognerebbe fare una canzone nuova. Quale è la più splendida stella? Ma la più splendida stella è un focherello di paglia al confronto.

— Come si chiama? — ripetè lei con voce soffocata.

— Chi mai, chi mai avrebbe ardito di sollevar fino a lei lo sguardo? Un re di corona si sarebbe tenuto ben superbo se lei lo avesse degnato di un sorriso. Quando l’incontravo mi veniva la voglia d’inginocchiarmi e il cuore mi si gonfiava di tenerezza, e sì che ci ho un cuoio io per cuore.

— Dimmi come si chiama: te l’ho chiesto tre volte... Come si chiama?

Pietro il Toro proseguì senza badarle:

— Quando si dice la voce del sangue! Eppure, quel che forse non avrebbe osato un re di corona l’osò lui; il povero trovatello osò volgere i suoi occhi in alto, in alto ove era lei, fredda e bianca, come le cime del Montenero. È vero che non ne parla mai, ma egli ama sua cugina come nessuna donna fu mai amata!

— Sua cugina! — esclamò Vittoria.

— Già, la figlia del fratello di suo padre, di colui che ne aveva usurpato i beni e i titoli. Ora io sai che avevo risoluto? Di presentarlo al duca, e dirgli, mostrandogli l’atto matrimoniale e le altre prove che attestano essere Riccardo il figlio legittimo di lui e che era fuggito in Francia: Maritiamo questi ragazzi e non se ne parli più!

— E perchè non lo hai fatto?

— Perchè Carmine non l’ha voluto. Carmine è l’altro testimone delle nozze. Ebbe paura per Riccardo.

Tacquero entrambi per un pezzo. Ella era cogitabonda, cupa in volto, visibilmente affissata in un pensiero.

Ruppe infine il silenzio e disse con voce sorda:

— Se dunque non riesciremo a farlo evadere che penserai di fare?

— Presentarmi al padre per dirgli che colui che dovrà esser fucilato è suo figlio. La notizia del ritorno del duca di Fagnano, e che il duca di Fagnano e il Commissario civile sono una sola persona l’ho saputa solo un momento fa. Immagina come rimasi! Ci volle del bello e del buono per capacitarmi che non era una favola.

— E credi tu che una tale rivelazione potrebbe impedire che il nostro... il nostro amico fosse fucilato?

— Diavolo, un padre non condannerebbe un figlio, ritrovato dopo trent’anni.

— E la legge? — disse lei. — Credi tu che la legge assolva un colpevole sol perchè figlio del giudice? «Tutti coloro che saran presi con le armi in mano saranno fucilati» dice la carta che fu affissa sulla porta della chiesa. Che potrà dunque fare suo padre?

— Dice proprio così quella carta?

— Proprio così.

— Diavolo! — esclamò Pietro il Toro grattandosi la grossa testa. Insomma tu che mi consigli di fare?

— Tentar di farlo evadere ad ogni costo, come si era stabilito.

— Io penso una cosa — disse Pietro. — Avrebbero dovuto fucilarlo oggi... Si era già riunito il Consiglio di guerra... I nostri amici eran già raccolti per tentare un colpo di mano. Perchè lo hanno ricondotto in prigione? Che il padre abbia saputo... che Carmine abbia parlato?...

— Non l’avrebbero ricondotto in prigione — rispose lei. — O l’avrebbero liberato, o...

— Hai ragione, sono una bestia. Dunque tu dici che bisogna star fermi nel primo proposito?

— Io questo dico. Tutto ci va a seconda. Hai procurato l’abito da monaco?

— Massaro Cicco me l’ha dato or ora: l’ho nella bisaccia con le armi.

— Le armi per noi, ma per lui?

— È vero. Bisogna che massaro Cicco ne procuri delle altre.

— Vai a dirglielo, vai. Ora lo troverai solo. Sai che non vuole gli si parli quando ci è gente nella taverna...

— Vado — disse Pietro avviandosi verso la porta.

— Lascia qui cotesta bisaccia. È un’imprudenza farti vedere con essa sempre addosso. Si potrebbe sospettare che tu vi nasconda chi sa che cosa.

— È vero. Pure vi sono tante cosucce mie dalle quali non mi sono mai distaccato.

— Che temi tu, che temi? — esclamò lei stornando gli occhi da quelli di Pietro, quasi temesse ch’egli le leggesse nell’anima.

— Nulla temo. A prescindere che ti so leale, che ne faresti tu delle cosucce mie?

— Ecco: che ne farei?

— Con gli altri non l’avrei tanta fiducia. Sperando di trovarvi del denaro, non mancherebbero di frugarvi dentro.

— Vai dunque che è tardi.

Egli depose la bisaccia ed uscì richiudendo dietro di sè la porta.

Vittoria non si mosse dal lettuccio su cui sedeva. La rivelazione della nascita e del vero nome di Riccardo non l’aveva sorpresa. Nata anch’essa da famiglia cospicua non subiva il fascino dei titoli e della nobiltà, e più volte aveva pensato che al certo figlio di signori esser doveva quel giovane di modi e di aspetto così diversi dagli altri capibanda. Ma il sapere che egli covava nell’anima un amore che era un’idealità più che una passione di quelle le quali torturano le carni e sconvolgono il cervello, le aveva prodotto nel cuore una ferita che le dava un dolore non mai provato. Quantunque non avesse mai amato e non fosse stata amata mai così come sentiva confusamente che Riccardo amava la figlia del duca, appunto per questo più viva era la sua angoscia. La passione che in essa era divampata per Riccardo fin dal primo giorno che in lui si era incontrata, si era andata a poco a poco epurando fino a divenire un sentimento profondo di devozione pel quale ella volentieri avrebbe dato la vita; ma le viscere le ardevano pur sempre di desiderio, ma le notti insonni eran pur sempre agitate da torride voglie. Pure sapendo i rapporti di lui con la Regina era giunta a non esserne gelosa, convinta che Riccardo non l’amasse d’amore, e che il fascino della regalità imperava unicamente su lui. Onde non aveva disperato di avvincerlo a sè quando con ferrea costanza gli avesse dato prova dell’amor suo, che aveva rivelato un altro essere in lei.

Un altro essere che non aveva nulla della guerrigliera feroce. La passione fin allora per lei era stata impeto prepotente del sangue, fremito convulso delle viscere, un furore come quello che nella mischia la rendeva implacabile: la gelosia era stata superbia offesa. Dell’amore non aveva mai inteso le malinconie, gli sconforti, le vaghe aspirazioni; era stata una febbre della carne, alla quale rimanevano estranei così lo spirito come il cuore. Nè aveva mai creduto che si potesse amare altrimenti, che si potesse amare con umiltà, con abnegazione, aspirando con tutta se stessa a divenire la schiava dell’uomo. Fin da quando era fuggita da casa sua, dopo consumata l’orrenda tragedia, aveva imperato financo sull’amante col coraggio, con l’audacia, ed era stata anche nelle carezze feroce e prepotente. Ella non sapeva gli abbandoni come non sapeva gli struggimenti dei desideri insoddisfatti. Era stata un uomo nell’amore come era stata un uomo in quella terribile lotta in cui uccideva sicura che presto o tardi sarebbe stata uccisa.

Lo sguardo di Riccardo aveva fatto nascere in lei quell’essere nuovo, la donna, da prima senza che ella il sentisse, poi man mano si era andato formando, ed ora ella incominciava ad averne coscienza. L’aver vissuto lontano da quel giovane aveva favorito in lei la nascita di un tale essere che per nulla toglieva all’altro di forza, di risoluzione, di ardimento. Al pensiero di lui si sentiva in preda ad una fralezza sì spirituale che fisica; ella, così gelosa dell’assoluto potere che aveva conquisato sui suoi, così aborrente da ogni dominio, vagheggiava come una voluttà ineffabile il pensiero di darsi a lui in piena balìa. Non già che le due personalità non lottassero in lei, ma ciò che vi era in essa di ferocia, di prepotenza, di volontà inflessibile era vinto dai nuovi sentimenti che quell’amore aveva fatto sorgere. E perciò la rivelazione di Pietro il Toro le aveva messo l’inferno nell’anima. Ella era sicura di vincere con l’amor suo il cuore di Riccardo se di ogni altro affetto fosse stato sgombro. Il capriccio per lui della Regina non sarebbe durato a lungo, e forse non si sarebbero mai più incontrati; ma come vincere un amore che era divenuto parte integrante della vita di lui, un amore che aveva potuto

vivere per tanti anni non sostenuto da speranza alcuna e non alimentato da nessuna dolcezza?

Ahimè, ella un tempo non l’avrebbe compreso un tale amore; le sarebbe parso folle, assurdo, indegno di un cuore maschio e saldo; ma ora lo comprendeva bene, ora che appunto simile a un tale amore era il suo, del quale sentiva tutte le amarezze e tutte le pene.

A ciò pensando fissava la bisaccia che Pietro aveva lasciato sul lettuccio. Dunque in quel sordido panno era il documento che avrebbe ridato a Riccardo un gran nome e una grande ricchezza? Il disegno del vecchio scorridore dei boschi era semplice e di sicura riuscita. Bastava che Riccardo presentasse quel documento con le prove d’esser lui l’erede legittimo dei duchi di Fagnano perchè colui che ne aveva usurpato il titolo per comporre le cose nel modo più utile per lui gli desse la figlia in isposa! Quale speranza sarebbe rimasta più a lei se Riccardo, appena evaso dalle carceri, fosse corso in Sicilia?

Non l’ambizione, ma l’amore, quell’amore senza speranza, poichè egli avrebbe visto di un tratto sfavillare tutto un avvenire di felicità sovrumana, lo avrebbe indotto a giovarsi di quel documento. Bisognava dunque sottrarlo, sottrarlo per impedire che a lei fosse tolta ogni speranza perocchè quantunque la rivelazione di Pietro il Toro le avesse aperta una profonda ferita nel cuore, pure l’animo umano è così fatto che anche nelle tenebre più fitte spera in un imminente raggio di luce.

È vero però che un’altro pericolo la minacciava: se Pietro il Toro avesse narrato a lui, come di sicuro avrebbe fatto, ciò che a lei aveva narrato, non ci era da temere che il giovane si facesse riconoscere dal padre? Ma ella respinse un tal pensiero come ingiurioso per Riccardo. No, egli non avrebbe cercato con un tal mezzo la impunità; no, mentre i suoi compagni erano perseguitati a morte, e già alcuni di essi eran caduti trafitti dalle palle francesi, egli non li avrebbe vigliaccamente rinnegati. Era tranquilla da questa parte, chè bene intuiva quanto nobile e generoso fosse il cuore dell’uomo che ella amava.

A ciò pensando, giocherellava con la corda della bisaccia che si sciolse: ella vide degli abiti, delle armi, e ficcando la mano in fondo ne trasse un portafoglio unto e bisunto che aprì. Ne tolse una carta, fatta giallognola dal tempo, la spiegò e la lesse.

— L’atto matrimoniale in piena regola! — mormorò scrollando il capo.

Era per riporla nel portafoglio quando sentì un rumore di passi. Si turbò spaventata come sorpresa in flagranza di un delitto, ella che finallora aveva affrontato imperterrita l’ira degli uomini e di Dio. Annodò le corde della bisaccia, dimenticando di rinchiudervi il portafoglio. I passi si avvicinavano; sentiva lo scricchiolio della scaletta di legno; era certo Pietro il Toro che tornava. In quel punto si accorse del portafoglio che con rapidità nascose in seno.

— A stenti ho potuto procurare due pistole ed un pugnale — disse Pietro entrando.

Ella confusa non seppe trovar parole. Come, come era mutata da quella di un tempo! Lei che non aveva mai riconosciuto altra volontà che la sua, lei che di nulla aveva avuto mai scrupolo, lei che di nulla aveva avuto mai rimorso!

— Bisogna uscire prima che la taverna si riempia di soldati — disse Pietro.

— Io son pronta — rispose Vittoria.

— Ma in somma quale è il tuo piano una volta penetrati nell’ambito della prigione?

Ella a poco a poco s’era rasserenata. Appressandosi il momento di agire ritrovava in sè la sicurezza e l’audacia che ne avevano fatto uno de’ più arditi capobanda. Scosse il capo come per mandar via la fralezza femminile, si stirò nelle membra, quasi volesse accingersi alla lotta, e traendo dal corpetto la lama di un pugnale lo brandì e diede un colpo alla parete nella quale il pugnale s’infisse.

— La mano è ancor salda — disse — e la lama robusta... Mi chiedi il mio piano? Tu fingerai di essere stanco e di dormire; quando avrò le

chiavi lo prenderò per la gola, lo terrò fermo, e tu accorrerai. Il resto, secondo le circostanze.

— E... non gli farai alcun male al sergente?

— Chi sa! — rispose lei che ebbe come un sanguigno baleno negli occhi. — Dipenderà da lui. Se il sangue mi va alla testa non garantisco.

— No, ecco — disse Pietro il Toro pensoso — sarebbe sempre un tradimento.

— Ma se lui grida, se non sta fermo?

— Insomma — borbottò Pietro — è cosa che ti riguarda. Agirai come la prudenza ti detterà. Io sarò tutto orecchi, pur facendo risuonare il castello dei miei russi sonori, e se anche si dovessero infrangere sbarre e catenacci, non per nulla son detto Pietro il Toro.

Era già da un pezzo calata la notte, una notte senza stelle. Le trombe avevano suonato il silenzio ed il castello pareva immerso nel sonno. Anche la taverna di massaro Cicco era chiusa.

Per lo spazio dietro il castello si aggiravano due ombre, tenendosi per prudenza in fondo, presso i sentieri che conducevano al bosco.

— Se il sergente è impedito? Se non può venire? — disse Pietro il Toro.

— Non ci resta che raccogliere gli amici che vagano per questi dintorni aspettando il nostro segnale, e piombare sui Francesi quando lo trarranno dal carcere per...

— Oppure presentarmi al duca con Carmine, del quale andrò in cerca, per dirgli che il prigioniero è suo figlio.

Vittoria non rispose; guardava intanto col cuore negli occhi il castello. Avrebbe dato tutta la sua vita per vederne uscire il sergente.

— Zitto — esclamò d’un tratto afferrando pel braccio il compagno mi è parso di sentire il cigolar d’una porta.

Stettero entrambi con le orecchie tese. Poco dopo ad uno degli angoli del castello videro un lumicino che rapido si spense.

— È lui, è lui.... Avviciniamoci.

— Immagino la fregola di quell’imbecille! — disse Pietro il Toro soffocando uno scoppio di riso.

Si erano avvicinati presso alle mura: un’ombra nera si teneva immobile nel vano di una porta. Si udì un sibilo sottile; poi come i due vieppiù si appressarono, una voce sommessa disse:

— Siete voi?

— Sì, noi — rispose Vittoria.

— Entrate, ma non fate rumore. Ho fatto portar del vino ai soldati, permettendo loro di sdraiarsi sul tavolaccio.

Pietro il Toro e Vittoria erano entrati nel buio di una delle tante stanze del castello che si aprivano sullo spiazzo.

— Ho durato una fatica del diavolo — disse il sergente per aprir questa porta, chiusa da chi sa quanti anni. Mi dispiace non potervi offrire alloggio migliore. Troverete là in fondo un tavolaccio.

— A me non occorre altro — disse, anzi gemette Pietro il Toro. — Non ne posso più... non mi reggo in piedi... Credo sia giunta l’ultima mia ora Figlia mia, sorreggimi e.... e ringrazia per me questo buon giovane che è per noi una vera provvidenza.

Si era lasciato cadere sul tavolaccio emettendo un sospiro di sollievo. Il sergente intanto aveva preso pel braccio la giovane donna e le si era chinato all’orecchio susurrando:

— Fra mezz’ora... la porticina è là in fondo... vedrai la luce tra le fessure.

— Dormi anche tu, figlia mia — diceva Pietro — Anche tu hai bisogno di riposo.

— Sì, nonno, sì — rispose Vittoria.

— Va, buona notte — mormorò il sergente — Riposate tranquilli. Domani penseremo al da farsi.

E intanto stringeva il braccio di Vittoria come per rammentarle la promessa.

— Andate, andate — fece Pietro, con la voce smozzicata di chi stia per addormirsi — e che il buon Dio ve ne rimuneri.

Il sergente aprì la porticina in fondo che si rinchiuse cigolando sui cardini.

Vittoria e Pietro il Toro compresero di esser soli.

— Tu non dovrai punto gridare, intendi? non dovrai punto gridare diceva Pietro con voce soffocata, attirando a sè la donna che gli si era seduta vicino — Io origlierò alla porta e sopraggiungerò in tempo, non dubitare.

— Taci ora, taci — rispose lei.

Come si appressava il momento solenne, Vittoria sentiva rinascere l’ardimento e l’energia. Di supremo interesse era per lei, per quell’amore onde era tutta pervasa, la liberazione di Riccardo a cui dava così una prova di ciò che ella era capace per lui. E se anche venisse a sapere di chi fosse figlio, quale nome, quale titolo, quale stato, fosse il suo, vieppiù l’abnegazione di lei avrebbe acquistato valore agli occhi del giovane. Ella era lieta di quella audace impresa non solo perchè compiaceva alla sua indole avventurosa, ma anche perchè la riabilitava della sottrazione che poco anzi aveva commessa. La riabilitava, sentendone un gran rimorso, ella che non aveva riconosciuto finallora nè la legge di Dio nè quella degli uomini, ella che forse nella lotta che avrebbe impegnato fra poco col sergente che per amore di lei tradiva il suo dovere di soldato, lo avrebbe ucciso freddamente.

Certi sentimenti nuovi, certe delicatezze ignote fin allora l’avevano da prima indispettita, quasi la menomassero, quasi fossero indegni di lei; poi si era lasciata vincere, e come un tempo aveva anelato ad emergere per coraggio e per ferocia, volendo esser considerata

uomo fra gli uomini, ora avrebbe voluto per Riccardo, aver tutte le virtù, tutte le bontà, tutte le delicatezze della donna!

Pure non avrebbe saputo dire quale fosse la sua meta, quale il suo scopo; sapeva soltanto che amava quell’uomo così come se tutta la sua vita avesse avuto un tale scopo, una tale meta. Profondo come il buio di quella stanza era il buio di quel suo cuore, e in quelle tenebre un solo punto luminoso, nel quale si affissava il suo pensiero: lui.

Dalla stanza intanto dopo quella attigua al luogo in cui il sergente li aveva fatti entrare, venivano voci e canti di soldati che a poco a poco però si andavano affievolendo. Infine, un gran silenzio regnò pel castello.

— Credo sia fatta l’ora — mormorò Pietro il Toro.

— Lo credo anche io.

— A proposito, non hai altra arma che il pugnale?

— Basterà — rispose lei con voce sorda.

V.

In quell’ora stessa Riccardo, seduto sull’impalcato della prigione, non avendo potuto prender sonno, con la testa fra le mani, era immerso ne’ suoi pensieri.

Era vero dunque, era vero? Lui il figlio legittimo del duca di Fagnano, lui che per tanti anni si era tenuto ed era stato tenuto in conto di un diseredato della fortuna, l’unico rampollo di una famiglia che si era usi a considerare come la più potente dopo quella del Re? E quei trenta anni di stenti, di miseria, di vergogna, di umiliazioni, e quei trenta anni nei quali aveva creduto che non avesse diritto neanche all’aria che respirava, neanche all’acqua che gli offriva la fonte! Quante volte i guardiani delle sue terre lo avevano scacciato dai boschi, dai suoi boschi, in cui tendeva insidie agli uccelli! Quante volte lui, magro, sparuto, lacero nelle vesti, aveva invidiato la sorte del più umile servo di quel castello! Ed era lui il padrone, lui il signore legittimo!

Legittimo? E qui un dubbio gli strinse il cuore.

Se, pure essendo il figlio naturale del duca di Fagnano, questi lo avesse proclamato legittimo solo per arrecare un danno al fratello, e quindi a quella creatura che nella sua vita fortunosa era stata l’unica sua religione? Chi, che cosa comprovava la sua legittimità? Però ben comprendeva che era nel suo diritto il duca a proclamarlo erede, come era nel suo diritto di dichiararlo per figliuol suo agli occhi del mondo. Ma che sarebbe avvenuto di Alma se con un atto pubblico il padre fosse dichiarato un usurpatore dei titoli e dei beni del fratello? Quale abisso immensurabile una tale dichiarazione non avrebbe scavato tra lui e lei? Ed egli, che esser ne doveva la rovina, egli che

l’avrebbe scacciata dal castello, che le avrebbe strappato il titolo, che l’avrebbe condannata a vivere non più come un’amica ma come una serva della Regina, egli l’aveva adorata, l’adorava come la sola e pura divinità della sua vita!

Questo, questo sarebbe stato l’effetto di un legale riconoscimento de’ suoi diritti. La sua vita, che aveva già a sè dinanzi tracciata una via, quantunque incerto fosse ove avrebbe potuto condurlo, sarebbe stata distrutta a mezzo del cammino! Quel che aveva ottenuto, la fama, sia pure non del tutto limpida, che aveva conquistato in quella guerra; le sue speranze, le sue ambizioni, quel che l’avvenire gl’imprometteva, dovuto tutto tutto al suo valore, alla sua fortuna, sarebbe stato troncato così di un tratto; e quando già in lui la giovinezza era per tramontare, avrebbe dovuto imprendere un nuovo cammino, rifarsi una personalità nuova, della quale, qualunque fosse, non avrebbe avuto merito alcuno. Che sarebbe divenuto lui, il famoso guerrigliero, lui, il campione della regale legittimità, lui che al par del più umile de’ suoi compagni vantar poteva i meriti stessi od esser reo delle stesse colpe, se lo si riconosceva per figlio legittimo di un rivoluzionario, di un amico, anzi di un complice di coloro che avevano decapitato il re Luigi XVI, che avevano decapitato Maria Antonietta?

Maria Antonietta! La sorella cioè di Colei che poteva dire la sua amante; della donna che scendendo dal trono regale gli si era data senza chiedere chi ei fosse, donde lui venisse; della Regina figlia d’imperatori che lo aveva fatto giurare di accorrere in di lei aiuto! Poteva egli apportare tanta rovina a coloro che amava, ad Alma, sua religione, suo culto, suo pensiero costante; alla Regina alla quale se non dall’amore, era legato dalla riconoscenza? Poteva, essendo mostruoso, se accettasse di essere riconosciuto per figlio legittimo dal Commissario civile, continuare a combattere contro suo padre, volgere le armi contro i suoi compagni di tante lotte, di tanti pericoli?

Ed anche accettando l’offerta di suo padre che gli avrebbe ottenuto un grado negli eserciti dell’Imperatore, che si sarebbe detto di lui? Di quali calunnie non l’avrebbero fatto segno! Come infamato sarebbe

stato il suo nome! Egli già in quella guerra, di briganti per alcuni, di campioni della patria indipendenza per altri, aveva mantenuto integra la sua fama, non solo di valoroso fra i valorosi, ma anche di onesto uomo, pur non essendo che un povero trovatello: poteva per un titolo, poteva per conseguire un alto grado sociale macchiarsi di una infamia, chè infamia reputava l’abbandonar gli antichi compagni e il venir meno alla fede giurata alla Regina?

Come sarebbe uscito da tal ginepraio?

E pensava anche con uno stringimento di cuore a suo padre, a quel vecchio che gli aveva parlato così umile e supplichevole; che dopo trent’anni ritrovando lui, suo figlio, aveva per poco creduto che Dio avesse avuto pietà del suo dolore. Quantunque non sapesse che in confuso gli avvenimenti che avevan costretto suo padre a fuggire in Francia, pure intuiva che ben misera era stata la vita che in Francia aveva vissuta quel perseguitato dagli uomini e dalla fortuna. Certo il suo cuore non poteva ridestarsi di botto all’amor filiale: quel vecchio che si diceva suo padre era pur sempre un estraneo per lui; non per tanto comprendeva pur troppo che se la gioia nel ritrovar suo figlio era stata grande, ben crudele esser ne doveva il dolore se avesse dovuto distaccarsene di nuovo onde ei seguisse la sua sorte. Comprendeva quale tormento era per suo padre il saperlo prigioniero, quale preoccupazione nel saperlo inflessibile nel suo dovere e nella fede giurata, e pensava a lui con uno stringimento di cuore, certo che in quell’ora istessa anche nell’anima di quel vecchio turbinavano mille angosciosi sentimenti.

E un altro pensiero, pio, gentile, malinconico, a poco a poco si era fatto strada nel cuore di Riccardo. Se suo padre, mentre lui cresceva solitario e abbandonato, era da lui lontano, la povera creatura morta nel darlo alla luce giaceva a lui vicino in una fossa della chiesetta parrocchiale. Quante volte era entrato in quella chiesa, quante volte si era inginocchiato sulla lapide di quella fossa! E sua madre era là, sotto i suoi ginocchi, mentre egli credeva ancor viva e forse felice e spensierata; sua madre era là, da lui uccisa sul nascere, e uccisa dai dolori che le aveva dato l’amore, del quale egli era l’unico frutto! E

perchè Carmine non gliel’aveva detto? perchè non gli aveva additato quella tomba su cui avrebbe potuto pregare, a cui avrebbe potuto chieder conforto e consiglio nelle ardue vicende della sua vita? Ah, se anche per poco avesse potuto riacquistare la libertà, sia pure per un solo istante, sarebbe andato a pregare sulla tomba di sua madre per chiederle perdono se nelle tristezze della sua vita aveva pensato a lei con un sentimento di disdegno; avrebbe, curvo sulla fossa, teso l’orecchio per sentir la sua voce che gli avrebbe additato la via da seguire.

Perocchè non era la morte che aspettava ormai, ben comprendendo che suo padre lo avrebbe salvato: la morte lo assolverebbe di ogni suo dovere, la morte sarebbe stata una fine degna della sua vita fortunosa. Nei giorni in cui aveva vissuto aspettando di esser condotto all’estremo supplizzio, con animo tranquillo aveva fatto il conto con se stesso, e un tal conto gli diceva che non aveva vissuto indarno. Poteva considerar la sua vita come una lunga via interrotta da un abisso, nel quale era precipitato: di là vi eran forse la fortuna, l’amore, un alto grado, la gloria; ma poichè tale era stato il suo destino, sprofondava tranquillo nell’abisso, pago di poter dire a sè stesso di aver vissuto nel piacere, nella fama con tutta l’energia della sua giovinezza Era stato amato da una Regina, e aveva amato un fantasima; dall’umile gleba in cui aveva razzolato fanciullo era assurto fino al piè di un trono; abbandonato e derelitto; una Regina lo aveva richiesto d’aiuto, una Regina doveva a lui la salvezza e lo aveva eletto a suo confidente.

Aveva dunque vissuto, poteva dunque morire, poichè era questo il suo destino. Non era colpa sua se a mezzo il cammino si era profondo spalancato l’abisso.

Ma ora che la morte era stornata dal suo capo, la vita aveva per lui delle atroci preoccupazioni, e se fin allora era stata una via dritta, da quel giorno gli si presentava come un bivio disseminato di spine. Abbandonare quel vecchio per continuar a compiere quel che diceva il suo dovere, o tradire di dover suo per accettare un nome, un titolo, una ricchezza? È vero che non aveva esitato, che l’anima sua

onesta e leale non si era lasciata vincere; ma pensando a quel vecchio che gli aveva aperto le braccia chiamandolo figlio, incominciava a sentire un sordo dolore. Pure bisognava risolversi: quella prigionia non sarebbe finita che dopo una sua decisione. Quale, esser doveva? Comprendeva inoltre che il padre, venuto per la repressione di quella guerra, non avrebbe potuto dar la libertà a lui che seguir voleva le sorti dei Borboni.

Una evasione, solo una evasione avrebbe potuto risolvere un tal viluppo. Egli sarebbe andato lontano egli avrebbe mantenuto la sua promessa raggiungendo in Sicilia la Regina, rinunciando al suo titolo, al suo diritto, per seguir la via che il destino gli aveva tracciato per non tradire la fede che avea giurato. È vero che suo padre ne sarebbe morto dal dolore; è vero che egli avrebbe sacrificato tutto il magnifico avvenire che gli balenava dinanzi; però avrebbe compiuto il suo dovere, avrebbe mantenuto la sua fede! Ma come, come evadere da quella prigione, le cui mura eran così massicce, che era custodita da un battaglione di soldati?

Mentre Riccardo era in questi pensieri, nella stanza attigua in cui si apriva la porta della prigione, il sergente de Chantal, dopo aver tirato a sè la porta della stanza in cui dormivano i soldati di guardia, si era fatto a quella che dava nello stambugio e picchiava con le nocche delle dita.

La porta si aprì e sulla soglia apparve Vittoria.

— Zitto — disse — il nonno si è addormentato proprio adesso. Senti come russa!

Infatti veniva dallo stambugio un russar sonoro che pareva un brontolio di tuono.

Il sergentino richiuse pian piano la porta, con mano tremante dall’orgasmo, poi prese fra le braccia la giovane donna che non oppose alcuna resistenza.

— Finalmente, finalmente siamo soli, siamo liberi fino a domani! disse il sergente.

Una lucernetta spandeva un fioco chiarore per la stanza. Vittoria si lasciava stringere, mentre i suoi occhi si fissavano sulla porticina della prigione.

Sciogliendosi dolcemente dalle braccia del giovane lo respinse dicendogli:

— Discorriamo un po’.... Bisogna intenderci prima!

— Intenderci?

— Ma sì, intenderci. Io non sono una ragazza come le tante altre che hai ingannate...

— Non ho ingannato mai nessuno! — rispose lui impaziente.

E poichè si era di nuovo stretto a lei, ella lo respinse dicendogli:

— Discorriamo un poco. Ecco, io voglio che tu mi ubbidisca in tutto. Poi, quando avrai appagato la mia curiosità, quando mi avrai dato prova che sai contenerti per non farmi dispiacere, io... io sarò più buona.... te lo prometto.

— Tu non mi ami! — disse lui con voce piagnucolosa.

— Non ti amo? E sarei qui mentre il mio povero nonno dorme tranquillo e sicuro? Ma sono una ragazza bizzarra, te lo confesso: voglio tutto ciò che colui che mi ama non vuole e.... viceversa.

— Ma sai — esclamò il sergentino un po’ seccato — che ora che ti ho qui con me non mi sfuggirai, non ti sottrarrai, come facesti finora? Sai che dovrai cedere o con la dolcezza o con la violenza? Non si rischia la libertà, il grado, forse la vita, così per nulla....

— Tu dunque hai rischiato molto? Pel prigioniero, non è vero?

— Se si sapesse che ho introdotto qui, mentre i soldati dormono ubbriachi, una donna, il Consiglio di guerra mi condannerebbe a morte!

— Per così poco?

— Come per così poco? Colui che è chiuso in quella prigione è uno dei più famosi capibanda.

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.