Last Updated on : 2023-05-22 06:38:22download
This topic describes how to quickly integrate Tuya Smart Life App SDK for Android into your development environment, such as Android Studio. It also sheds light on the initialization method and how to enable the debugging mode with a few simple steps. This allows you to run the demo app and get started with your smart life app development by using the App SDK.
Before you start, make sure that you have performed the steps in Preparation.
Starting from the Smart Life App SDK for Android 3.29.5, SHA256 hash values are required. For more information, see How to Get SHA1 and SHA256 Keys.
Note: If you need to launch apps on Google Play, check whether the app re-signing feature is enabled. If so, configure the SHA256 hash values generated by Google on the Tuya IoT Development Platform. Otherwise, the error “illegal client” will occur. For more information, see How to check app signing on Google Play?
Starting from the Smart Life App SDK for Android 4.0.0, the package name for Android configured on the Tuya IoT Development Platform must be the same as packageName
in your project. Otherwise, the error ILLEGAL_CLIENT_ID
will arise.
If you have not installed Android Studio, visit the Android Studio official website to download Android Studio.
Create a project in Android Studio.
Add dependencies
to the build.gradle
file of the Android project.
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
packagingOptions {
pickFirst 'lib/*/libc++_shared.so' // An Android Archive (AAR) file contains an Android library. If the .so file exists in multiple AAR files, select the first AAR file.
}
}
dependencies {
implementation 'com.alibaba:fastjson:1.1.67.android'
implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.14.9'
// The latest stable App SDK for Android.
implementation 'com.tuya.smart:tuyasmart:1.0.0-cube.1'
}
Add the Tuya IoT Maven repository URL to the build.gradle
file in the root directory.
repositories {
jcenter()
maven { url 'https://maven-other.tuya.com/repository/maven-releases/' }
maven { url "https://maven-other.tuya.com/repository/maven-commercial-releases/" }
maven { url 'https://jitpack.io' }
google()
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'http://central.maven.org/maven2/' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url 'https://developer.huawei.com/repo/' }
maven {
url 'https://maven-other.tuya.com/repository/maven-private/'
credentials {
username "androidui"
password "f3QAVHTczYpwfAPvPLYz"
}
}
}
}
App SDK v3.10.0 and earlier only support armeabi-v7a
. App SDK v3.11.0 and later have integrated armeabi-v7a
and arm64-v8a
. If you have added .so
libraries to the project, you must remove them and only use the library included in the SDK.
If you want to integrate the .so
library of a later version, you must remove the library of an earlier version to avoid conflicts or other possible issues.
For more information, see GitHub.
Log in to the Tuya IoT Development Platform, go to the SDK Development page, and then click the SDK to be managed.
On the page that appears, click the Get Key tab and click Download in the App Security Image for Android field.
Rename the security image as t_s.bmp
and put the image in the assets
folder of your project.
Return to the Android project, configure appkey
and appSecret
in AndroidManifest.xml
, and then set permissions for the app.
<meta-data
android:name="TUYA_SMART_APPKEY"
android:value="AppKey" />
<meta-data
android:name="TUYA_SMART_SECRET"
android:value="AppSecret" />
Configure obfuscation in proguard-rules.pro
.
#fastJson
-keep class com.alibaba.fastjson.**{*;}
-dontwarn com.alibaba.fastjson.**
#mqtt
-keep class com.tuya.smart.mqttclient.mqttv3.** { *; }
-dontwarn com.tuya.smart.mqttclient.mqttv3.**
#OkHttp3
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-keep class okio.** { *; }
-dontwarn okio.**
-keep class com.tuya.**{*;}
-dontwarn com.tuya.**
Initialize the SDK in Application
. Make sure that all processes are initialized. Example:
public class TuyaSmartApp extends Application {
@Override
public void onCreate() {
super.onCreate();
initTuyaHomeSdk("host:port");
}
/**
* @param baseUrl private host
*/
private void initTuyaHomeSdk(String baseUrl) {
TuyaSmartSdk.init(this);
TuyaSdk.init(
this,
TuyaSmartSdk.getAppkey(),
TuyaSmartSdk.getAppSecret(),
"android",
"sdk",
null,
new PrivateCloudUrlProvider(this, baseUrl)
);
OptimusUtil.init(this);
}
}
public class PrivateCloudUrlProvider extends ApiUrlProvider {
private final String baseUrl;
public PrivateCloudUrlProvider(Context context, String baseUrl) {
super(context);
this.baseUrl = baseUrl;
}
@Override
public String getApiUrl() {
if (!this.isUserLogin()) {
String url = baseUrl;
if (!TextUtils.isEmpty(url) && !url.endsWith("/api.json")) {
url = url + "/api.json";
}
return url;
}
return super.getApiUrl();
}
@Override
public String getApiUrlByCountryCode(String countryCode) {
if (!this.isUserLogin()) {
String url = baseUrl;
if (!TextUtils.isEmpty(url) && !url.endsWith("/api.json")) {
url = url + "/api.json";
}
return url;
}
return super.getApiUrlByCountryCode(countryCode);
}
private boolean isUserLogin() {
ITuyaUser userInstance = TuyaHomeSdk.getUserInstance();
return null != userInstance && userInstance.isLogin();
}
}
Configure appkey
and appSecret
in AndroidManifest.xml
, or run the initialization code.
TuyaHomeSdk.init(Application application, String appkey, String appSerect)
Before you exit the app, you must call the following operation to disable the cloud connection.
TuyaHomeSdk.onDestroy();
In debug mode, you can enable SDK logging to facilitate troubleshooting.
We recommend that you disable logging in release mode.
TuyaHomeSdk.setDebugMode(true);
If you integrate with the SDK v3.32.5 or earlier, remove the dependency tuyamsmart-log
from the build.gradle
file of the Android project. This setting is not required for SDK versions later than v3.32.5.
implementation("com.tuya.smart:tuyasmart:3.32.5"){
exclude group: 'com.tuya.smart', module: 'tuyasmart-log'
}
After you integrate the SDK, you can get the security image, AppKey
, and AppSecret
. Make sure that the security image, AppKey
, and AppSecret
are consistent with those used on the Tuya IoT Development Platform. Any mismatch will cause the SDK development to be failed. For more information, see Step 3: Configure the security image, AppKey, and AppSecret.
In the following example, a demo app is used to describe the process of app development with the App SDK and indicate the SDK capabilities that you can integrate to implement smart life scenarios. Before the development of your app, we recommend that you run the demo app as needed.
The demo app supports the following features:
User management: Register and log in to the app account by mobile phone number or email address.
Home and device management
Pair devices: Multiple pairing methods are supported, including EZ Mode, AP Mode, Bluetooth Low Energy, Zigbee Gateway, Zigbee Subdevice, QR Code, and Bluetooth LE Mesh Sub Device.
For more information, see the GitHub projects tuya-home-android-sdk-sample-java.
Choose app
> build.gradle
and change the value of applicationId
to your app package name.
Make sure that you have finished the operations in Step 3: Configure the security image, AppKey, and AppSecret.
Click Run to run the sample.
Troubleshoot the error message: Permission Verification Failed
{
"success": false,
"errorCode" : "SING_VALIDATE_FALED",
"status" : "error",
"errorMsg" : "Permission Verification Failed",
"t" : 1583208740059
}
Solutions:
t_s.bmp
.After the Smart Life App SDK for Android is updated to v3.29.5, an error message is returned to indicate an illegal client. How do I troubleshoot this problem? (ILLEGAL_CLIENT_ID)
Why has the error ILLEGAL_CLIENT_ID
occurred after the upgrade to Smart Life App SDK 4.0.0?
packageName
in your project. Otherwise, the error ILLEGAL_CLIENT_ID
will arise.After SHA256 hash values are configured on the Tuya IoT Development Platform and the sample is run, the error message that indicates an illegal client is still returned. How do I troubleshoot the problem?
Solution: Before you run the sample, add the following signature information to build.gradle
of the app module.
android {
...
signingConfigs {
debug {
storeFile file('xxxx.jks')
storePassword 'xxxxxx'
keyAlias 'xxx'
keyPassword 'xxxxxx'
}
release {
storeFile file('xxxx.jks')
storePassword 'xxxxxx'
keyAlias 'xxx'
keyPassword 'xxxxxx'
}
}
}
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback