Awesome
<img src="img/Android_Robot.png" width="100">
EOSIO SDK for Java: Android Example App
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.
<p align="center"> <img src="img/screenshot.png" width="200"> </p>Contents
Requirements
- Android SDK 6.0+
- Android Studio 3.0+
- JDK 1.7
Installation
To get the example application up and running:
-
Clone this repo:
git clone https://github.com/EOSIO/eosio-java-android-example-app.git
-
Open the project with Android Studio.
-
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
andprivate_keys
are optional convenience properties which will prefill the app's form.node_url
is required. -
Run the app.
About the App
The app demonstrates how to:
- use the Java RPC Provider implementation to query the chain for an account's token balance,
- get a new transaction from
TransactionSession
, - create an action and add it to a transaction,
- and sign and broadcast the transaction.
To do this we are using a few libraries and providers, in concert:
- EOSIO SDK for Java: The core EOSIO SDK for Java library
- Java RPC Provider: An RPC provider implementation for Java (including Android)
- ABIEOS Serialization Provider for Android: A pluggable serialization provider for EOSIO SDK for Java using ABIEOS (for transaction and action conversion between JSON and binary data representations)
- Softkey Signature Provider: An example pluggable signature provider for EOSIO SDK for Java for signing transactions using in-memory keys (not for production use)
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:
- Create an instance of the
AbiEosSerializationProviderImpl
serialization provider from theeosiojavaandroidabieosserializationprovider
library. - Create an instance of the
EosioJavaRpcProviderImpl
RPC provider with an input string pointing to a nodeos RPC endpoint. You can also useEosioJavaRpcProviderImpl(String, Boolean)
constructor to enable network debug log. - Create an instance of the
ABIProviderImpl
ABI provider, instantiating it with the RPC and serialization provider instances. - 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.
- Create an instance of
TransactionSession
, which is used for spawningTransactionProcessor
s.
Create, Sign and Broadcast Transactions
Now you're ready to create transactions using your TransactionSession
:
- Create an instance of
TransactionProcessor
from theTransactionSession
instance above by callingTransactionSession#getTransactionProcessor()
orTransactionSession#getTransactionProcessor(Transaction)
. - Call
TransactionProcessor#prepare(List)
with a list of Actions. The method will serialize the actions, which can always be queried withTransaction#getActions()
. The transaction now is ready to be signed and broadcast. - Call
TransactionProcessor#signAndBroadcast()
to sign the transaction insideTransactionProcessor
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
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.