Skip to content

OortCloudGroup/WorkUp-SDK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

WorkUp-SDK 集成指南

📦 三种依赖方式

方式一:GitHub + JitPack(公开仓库)

适用场景:GitHub 公开仓库,无需认证

前置条件:创建 GitHub Release

  1. 访问 https://github.com/Bean-V/WorkUp-SDK/releases
  2. 点击 Create a new release
  3. 选择 Tag version(如 v1.0.0
  4. 填写 Release title 和描述
  5. 点击 Publish release
  6. 访问 https://jitpack.io/#Bean-V/WorkUp-SDK 触发构建
  7. 等待构建完成(首次约 5-10 分钟)

⚠️ 注意:必须先创建 Release 并在 JitPack 构建成功,才能添加依赖

1. 添加仓库

在项目根目录 build.gradle 中:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

2. 添加依赖

在 App 模块 build.gradle 中:

dependencies {
    implementation 'com.github.Bean-V.WorkUp-SDK:omm-lib:1.0.0'
}

方式二:Nexus Maven(企业内网)

适用场景:企业内部网络,私有部署

1. 添加仓库

allprojects {
    repositories {
        maven {
            url = "http://192.168.88.218:8403/repository/workup-sdk-releases/"
            allowInsecureProtocol = true
        }
    }
}

2. 添加依赖

dependencies {
    implementation 'com.oort.workup-sdk:omm-lib:1.0.0'
}

方式三:GitLab Maven(备用方案)

适用场景:使用 GitLab Raw URL 访问独立的 Maven Git 仓库

1. 添加仓库

allprojects {
    repositories {
        maven {
            url = "http://192.168.88.125/zhangzhijun/workup-sdk-maven/raw/master"
            allowInsecureProtocol = true
            
            // 如果仓库是私有的,需要添加认证
            credentials(HttpHeaderCredentials) {
                name = "Private-Token"
                value = "your-gitlab-token"
            }
            
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
    }
}

2. 添加依赖

dependencies {
    implementation 'com.oort.workup-sdk:omm-lib:1.0.0'
}

⚙️ 基础配置

环境要求

android {
    compileSdkVersion 36
    
    defaultConfig {
        minSdkVersion 26
        targetSdkVersion 36
        multiDexEnabled true
    }
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}

必需权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

🎯 核心功能

一、应用市场(AppStore)

1. 获取应用列表

AppStoreManager appStore = AppStoreManager.getInstance();

// 获取推荐应用
appStore.getRecommendApps(new Callback<List<AppInfo>>() {
    @Override
    public void onSuccess(List<AppInfo> apps) {
        // 展示应用列表
        for (AppInfo app : apps) {
            Log.d("AppStore", app.getName() + " - " + app.getVersion());
        }
    }
    
    @Override
    public void onError(Exception e) {
        Log.e("AppStore", "获取失败", e);
    }
});

2. 下载并安装应用

// 下载应用
appStore.downloadApp(appId, new DownloadCallback() {
    @Override
    public void onProgress(int progress) {
        Log.d("Download", "进度: " + progress + "%");
    }
    
    @Override
    public void onSuccess(File apkFile) {
        // 自动安装
        appStore.installApp(apkFile);
    }
    
    @Override
    public void onError(Exception e) {
        Log.e("Download", "下载失败", e);
    }
});

3. 应用管理

// 检查应用是否已安装
boolean isInstalled = appStore.isAppInstalled(packageName);

// 卸载应用
appStore.uninstallApp(packageName);

// 获取已安装的应用列表
List<AppInfo> installedApps = appStore.getInstalledApps();

二、IM 即时通讯与通讯录

1. 连接 IM 服务器

// 配置连接
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
    .setHost("im.example.com")
    .setPort(5222)
    .setServiceName("example.com")
    .build();

// 建立连接
XMPPConnection connection = new XMPPTCPConnection(config);
connection.connect();
connection.login(username, password);

2. 发送消息

ChatManager chatManager = ChatManager.getInstanceFor(connection);
EntityBareJid jid = JidCreate.entityBareFrom("user@example.com");

// 创建聊天
Chat chat = chatManager.chatWith(jid);

// 发送文本消息
chat.send("你好!");

// 发送图片消息
Message message = new Message();
message.setBody("图片消息");
message.addExtension(new ImageExtension(imageUrl));
chat.send(message);

3. 接收消息

// 监听新消息
chat.addIncomingListener((from, message, chat) -> {
    String body = message.getBody();
    Log.d("IM", "收到消息: " + body);
    
    // 更新 UI
    runOnUiThread(() -> {
        showMessage(from.toString(), body);
    });
});

4. 通讯录管理

Roster roster = Roster.getInstanceFor(connection);

// 获取好友列表
Collection<RosterEntry> entries = roster.getEntries();
for (RosterEntry entry : entries) {
    Log.d("Contacts", entry.getName() + " - " + entry.getUser());
}

// 添加好友
roster.createEntry("newfriend@example.com", "新朋友", null);

// 删除好友
RosterEntry entry = roster.getEntry("friend@example.com");
roster.removeEntry(entry);

// 设置好友状态
Presence presence = new Presence(Presence.Type.available);
presence.setStatus("在线");
connection.sendStanza(presence);

5. 群组功能

MultiUserChatManager mucManager = MultiUserChatManager.getInstanceFor(connection);

// 加入群组
MultiUserChat muc = mucManager.getMultiUserChat("group@conference.example.com");
muc.join("nickname");

// 发送群消息
muc.sendMessage("大家好!");

// 获取群成员
List<Occupant> occupants = muc.getOccupants();

❓ 常见问题

Q1: 依赖解析失败

解决

  1. 确认仓库地址正确
  2. 清除缓存:./gradlew clean --refresh-dependencies
  3. 检查网络连接

Q2: 方法数超限

解决

android {
    defaultConfig {
        multiDexEnabled true
    }
}
dependencies {
    implementation 'androidx.multidex:multidex:2.0.1'
}

Q3: Release 版本崩溃

解决:添加 ProGuard 规则

-keep class com.oort.** { *; }
-keep class org.jivesoftware.smack.** { *; }

📞 技术支持

About

Android sdk

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors