Skip to content
This repository has been archived by the owner on Aug 30, 2022. It is now read-only.

Application demonstrating integration with EOSIO-based blockchains using EOSIO SDK for Java

License

Notifications You must be signed in to change notification settings

EOSIO/eosio-java-android-example-app

Repository files navigation

Java Logo

EOSIO SDK for Java: Android Example App

Software License Language Java

The EOSIO SDK for Java: Android Example App is a simple application demonstrating how to integrate with EOSIO-based blockchains using EOSIO SDK for Java. The application does two things: fetches your account token balance and pushes a transfer action.

All product and company names are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.

Contents

Requirements

  • Android SDK 6.0+
  • Android Studio 3.0+
  • JDK 1.7

Installation

To get the example application up and running:

  1. Clone this repo: git clone https://github.com/EOSIO/eosio-java-android-example-app.git

  2. Open the project with Android Studio.

  3. Modify eosio.properties file:

    node_url=[your node endpoint URL] //mandatory
    from_account=[your account name] //optional
    to_account=[receiver account] //optional
    from_account_private_key=[your private key] //optional
    amount=[amount to transfer] //optional; e.g., 1.1234 EOS
    memo=[transfer memo] //optional
    private_keys=[for multiple key tests in instrumentation test] //optional

    from_account, to_account, from_account_private_key, amount, memo and private_keys are optional convenience properties which will prefill the app's form. node_url is required.

  4. Run the app.

About the App

The app demonstrates how to:

To do this we are using a few libraries and providers, in concert:

WARNING: Android 9 disables clear text traffic support by default so android:usesCleartextTraffic setting in AndroidManifest.xml is used to enable/disable the support depending on the build variant you use.

How to Transact

TransactionTask.java contains basic sample code for constructing, signing and broadcasting transactions using the eosiojava libraries.

Set Up Your TransactionSession

First, set up your TransactionSession. This is your factory for creating new transactions:

  1. Create an instance of the AbiEosSerializationProviderImpl serialization provider from the eosiojavaandroidabieosserializationprovider library.
  2. Create an instance of the EosioJavaRpcProviderImpl RPC provider with an input string pointing to a nodeos RPC endpoint. You can also use EosioJavaRpcProviderImpl(String, Boolean) constructor to enable network debug log.
  3. Create an instance of the ABIProviderImpl ABI provider, instantiating it with the RPC and serialization provider instances.
  4. Create an instance of the SoftKeySignatureProviderImpl signature provider. (This particular implementation is not recommended for production use due to its simplistic management of private keys).
    • Import an EOS private key associated with the sender's account.
  5. Create an instance of TransactionSession, which is used for spawning TransactionProcessors.

Create, Sign and Broadcast Transactions

Now you're ready to create transactions using your TransactionSession:

  1. Create an instance of TransactionProcessor from the TransactionSession instance above by calling TransactionSession#getTransactionProcessor() or TransactionSession#getTransactionProcessor(Transaction).
  2. Call TransactionProcessor#prepare(List) with a list of Actions. The method will serialize the actions, which can always be queried with Transaction#getActions(). The transaction now is ready to be signed and broadcast.
  3. Call TransactionProcessor#signAndBroadcast() to sign the transaction inside TransactionProcessor and broadcast it.

For a more comprehensive list of available provider implementations, see EOSIO SDK for Java - Provider Interface Architecture.

For more details about the complete workflow of EOSIO SDK for Java, see EOSIO SDK for Java - Complete workflow.

An overview of the error model used in this library can be found in the EOSIO SDK for Java - Error Model

Want to help?

Interested in improving the example application? That's awesome! Here are some Contribution Guidelines and the Code of Conduct.

If you'd like to contribute to the EOSIO SDK for Java libraries themselves, please see the contribution guidelines on those individual repos.

License

MIT licensed

Important

See LICENSE for copyright and license terms. Block.one makes its contribution on a voluntary basis as a member of the EOSIO community and is not responsible for ensuring the overall performance of the software or any related applications. We make no representation, warranty, guarantee or undertaking in respect of the software or any related documentation, whether expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall we be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or documentation or the use or other dealings in the software or documentation. Any test results or performance figures are indicative and will not reflect performance under all conditions. Any reference to any third party or third-party product, service or other resource is not an endorsement or recommendation by Block.one. We are not responsible, and disclaim any and all responsibility and liability, for your use of or reliance on any of these resources. Third-party resources may be updated, changed or terminated at any time, so the information here may be out of date or inaccurate. Any person using or offering this software in connection with providing software, goods or services to third parties shall advise such third parties of these license terms, disclaimers and exclusions of liability. Block.one, EOSIO, EOSIO Labs, EOS, the heptahedron and associated logos are trademarks of Block.one.

Wallets and related components are complex software that require the highest levels of security. If incorrectly built or used, they may compromise users’ private keys and digital assets. Wallet applications and related components should undergo thorough security evaluations before being used. Only experienced developers should work with this software.