GithubHelp home page GithubHelp logo

appsflyersdk / appsflyer-oaid Goto Github PK

View Code? Open in Web Editor NEW
27.0 5.0 3.0 6.18 MB

AppsFlyer OAID collection

Home Page: https://support.appsflyer.com/hc/en-us/articles/360006278797-Implementing-OAID-in-the-Android-SDK

License: MIT License

Java 72.26% Kotlin 27.74%
appsflyer android huawei msa oaid

appsflyer-oaid's Introduction

OAID collection

Release Artifacts

Table of content

Supported devices:

Manufacturer OS version
Huawei HMS 2.6.2
Xiaomi MIUI 10.2
Vivo Android 8
OPPO, Realme Color OS 3
Lenovo ZUI 11.4
Samsung, Meizu, Nubia, ZTE, ASUS, OnePlus, Black shark, Motorola, Freeme OS Android 10

Supported MSA library version: 2.2.0

Adding to your project

module build.gradle

Step 1

Download AAR provided by the MSA to your module libs folder
Note: MSA AAR requires min API level 16

implementation 'com.appsflyer:oaid:6.12.3'  
implementation files('libs/oaid_sdk_2.2.0.aar')  

Step 2

Copy your certificate file (<APPLICATION_PACKAGE_NAME>.cert.pem) to the project assets directory.

Step 3 (When using ProGaurd)

Add the following code to your proguard-rules.pro file:

# sdk
-keep class com.bun.miitmdid.** { *; }
-keep interface com.bun.supplier.** { *; }
# asus
-keep class com.asus.msa.SupplementaryDID.** { *; }
-keep class com.asus.msa.sdid.** { *; }
# freeme
-keep class com.android.creator.** { *; }
-keep class com.android.msasdk.** { *; }
# huawei
-keep class com.huawei.hms.ads.** { *; }
-keep interface com.huawei.hms.ads.** {*; }
# lenovo
-keep class com.zui.deviceidservice.** { *; }
-keep class com.zui.opendeviceidlibrary.** { *; }
# meizu
-keep class com.meizu.flyme.openidsdk.** { *; }
# nubia
-keep class com.bun.miitmdid.provider.nubia.NubiaIdentityImpl
{ *; }
# oppo
-keep class com.heytap.openid.** { *; }
# samsung
-keep class com.samsung.android.deviceidservice.** { *; }
# vivo
-keep class com.vivo.identifier.** { *; }
# xiaomi
-keep class com.bun.miitmdid.provider.xiaomi.IdentifierManager
{ *; }
# zte
-keep class com.bun.lib.** { *; }
# coolpad
-keep class com.coolpad.deviceidsupport.** { *; }

Standalone usage

class MainActivity : AppCompatActivity() {  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Thread {
            val info = OaidClient(this, 1, TimeUnit.SECONDS).fetch()
            if (info != null) {
                println(info.id)
                val lat = info.lat
                if (lat != null) {
                    println(lat)
                }
            }
        }.start()
    }
  }
    

Important

Time to fetch oaid is around 10 - 1000 ms


๐Ÿ›  In order for us to provide optimal support, we would kindly ask you to submit any issues to [email protected]

When submitting an issue please specify your AppsFlyer sign-up (account) email , your app ID , production steps, logs, code snippets and any additional relevant information.

appsflyer-oaid's People

Contributors

af-dudka avatar af-fess avatar afdima avatar pazlavi avatar sokoloff06 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

appsflyer-oaid's Issues

Missing license

Hi!

I don't see a LICENSE file in this repo. Could you please add this, to make it clear what license applies for this code?

D8 errors

Cannot create android app from an archive 'app/build/intermediates/transforms/proguard/release/0.jar' containing both DEX and Java-bytecode content

Implementation within Unity Project

Hey guys,

I'm trying to integrate the OAID collection to my Unity game project "Mirages of Winter"
appsflyer account: [email protected]

Issue: The build process get stuck at the end during or right after "unity build failure android task transform Classes DexBuilder Release UP-TO-DATE"

Here's my setup:

  1. I can build an .apk in Unity just fine without the oaid_sdk_1.0.23.aar (last version downloaded today 12/18/2020) that I integrated in the unity project folder: assets>plugins>android

  2. The min android api level is 21, Unity version 2018.3.11f1

  3. The added dependencies in the .gradle may be the problem since I'm not experienced with it, I tried every combinaison that I could think of relating the 3 depedencies that were suggested in the tutorial:

implementation 'com.appsflyer:af-android-sdk:5.4.3@aar'
implementation 'com.appsflyer:oaid:6.1.1'
implementation files('libs/oaid_sdk_1.0.23.aar')
  1. Here's the .gradle
buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
**BUILD_SCRIPT_DEPS**}
}

allprojects {
    repositories {
        google()
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

// Android Resolver Repos Start
([rootProject] + (rootProject.subprojects as List)).each { project ->
    project.repositories {
        def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
        maven {
            url "https://maven.google.com"
        }
        mavenLocal()
        jcenter()
        mavenCentral()
    }
}
// Android Resolver Repos End
apply plugin: 'com.android.application'
**APPLY_PLUGINS**

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
// Android Resolver Dependencies Start
    implementation 'com.android.installreferrer:installreferrer:2.1' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:10
    implementation 'com.appsflyer:af-android-sdk:6.1.0' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:6
    implementation 'com.appsflyer:unity-wrapper:6.1.1' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:8
    implementation files('libs/oaid_sdk_1.0.23.aar')
    implementation 'com.appsflyer:af-android-sdk:6.1.0@aar'
    implementation 'com.appsflyer:oaid:6.1.2'
// Android Resolver Dependencies End
**DEPS**}

// Android Resolver Exclusions Start
android {
  packagingOptions {
      exclude ('/lib/armeabi/*' + '*')
      exclude ('/lib/armeabi-v7a/*' + '*')
      exclude ('/lib/mips/*' + '*')
      exclude ('/lib/mips64/*' + '*')
      exclude ('/lib/x86/*' + '*')
      exclude ('/lib/x86_64/*' + '*')
  }
}
// Android Resolver Exclusions End
android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '**BUILDTOOLS**'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion **MINSDKVERSION**
        targetSdkVersion **TARGETSDKVERSION**
        applicationId '**APPLICATIONID**'
        ndk {
            abiFilters **ABIFILTERS**
        }
        versionCode **VERSIONCODE**
        versionName '**VERSIONNAME**'
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
    }**SIGN**

    buildTypes {
        debug {
            minifyEnabled **MINIFY_DEBUG**
            useProguard **PROGUARD_DEBUG**
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
            jniDebuggable true
        }
        release {
            minifyEnabled **MINIFY_RELEASE**
            useProguard **PROGUARD_RELEASE**
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
        }
    }**PACKAGING_OPTIONS****SPLITS**
**BUILT_APK_LOCATION**
    bundle {
        language {
            enableSplit = false
        }
        density {
            enableSplit = false
        }
        abi {
            enableSplit = true
        }
    }
}**SPLITS_VERSION_CODE****REPOSITORIES****SOURCE_BUILD_SETUP**

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
}
  1. Here's the ERROR in UNITY CONSOLE:

CommandInvokationFailure: Gradle build failed.
C:\Program Files\Unity2018.3\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "C:\Program Files\Unity2018.3\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.6.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

stderr[
D8: Program type already present: com.android.billingclient.BuildConfig

FAILURE: Build failed with an exception.

What went wrong:

Execution failed for task ':transformDexArchiveWithExternalLibsDexMergerForRelease'. > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\0.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\1.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\2.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\3.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\4.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\5.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\6.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\7.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\8.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\9.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\10.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\11.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\12.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\13.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\14.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\15.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\16.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\17.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\18.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\19.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\20.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\21.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\22.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\23.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\24.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\25.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\26.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\27.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\28.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\29.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\32.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\40.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\42.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\43.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\44.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\45.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\46.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\47.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\48.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\49.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\50.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\51.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\52.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\53.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\54.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\55.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\56.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\57.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\58.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\59.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\60.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\61.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\62.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\63.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\64.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\65.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\66.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\67.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\68.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\69.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\70.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\71.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\72.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\73.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\74.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\75.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\76.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\77.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\78.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\79.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\80.jar, C:\Users\marti_000\Documents\GitHub\Mirages-Tactile\Temp\gradleOut\build\intermediates\transforms\dexBuilder\release\81.jar Program type already present: com.android.billingclient.BuildConfig Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 21s
]
stdout[
Observed package id 'tools' in inconsistent location 'C:\Users\marti_000\AppData\Local\Android\Sdk\tools_new' (Expected 'C:\Users\marti_000\AppData\Local\Android\Sdk\tools')
Already observed package id 'tools' in 'C:\Users\marti_000\AppData\Local\Android\Sdk\tools'. Skipping duplicate at 'C:\Users\marti_000\AppData\Local\Android\Sdk\tools_new'
:checkReleaseClasspath
:preBuild UP-TO-DATE
:preReleaseBuild UP-TO-DATE
:compileReleaseAidl NO-SOURCE
:compileReleaseRenderscript
:checkReleaseManifest UP-TO-DATE
:generateReleaseBuildConfig UP-TO-DATE
:prepareLintJar UP-TO-DATE
:mainApkListPersistenceRelease UP-TO-DATE
:generateReleaseResValues UP-TO-DATE
:generateReleaseResources
:mergeReleaseResources UP-TO-DATE
:createReleaseCompatibleScreenManifests UP-TO-DATE
:processReleaseManifest
:splitsDiscoveryTaskRelease UP-TO-DATE
:processReleaseResources
:generateReleaseSources
:javaPreCompileRelease
:compileReleaseJavaWithJavac
:compileReleaseNdk NO-SOURCE
:compileReleaseSources
:lintVitalRelease
:mergeReleaseShaders UP-TO-DATE
:compileReleaseShaders UP-TO-DATE
:generateReleaseAssets UP-TO-DATE
:mergeReleaseAssets
:transformClassesWithDexBuilderForRelease UP-TO-DATE
:transformDexArchiveWithExternalLibsDexMergerForRelease FAILED
21 actionable tasks: 9 executed, 12 up-to-date
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at :0)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at :0)
UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at :0)
UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action1[T] progress, System.String error) (at <df7ba4d130594d168eec372b930522d4>:0) UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action1[T] progress) (at :0)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at :0)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at :0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at :0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.