lwb
2020-11-02 9ce09cfd79d8ea00c58a182cfd5ec6eb8d54ee6b
9527 使用gradle脚本在构建时去除主目录下与渠道重复的类
5个文件已修改
7个文件已删除
5个文件已添加
435 ■■■■■ 已修改文件
SdkProject/channel/test/config.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/build.gradle 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/universalsdk/CodeA2U.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/universalsdk/CodeU2A.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdAssetCopy.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInit.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/universalsdk/command/ICommand.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/merger/.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/merger/build.gradle 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/merger/consumer-rules.pro 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/merger/proguard-rules.pro 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/merger/src/androidTest/java/com/secondworld/merger/ExampleInstrumentedTest.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/merger/src/main/AndroidManifest.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/merger/src/test/java/com/secondworld/merger/ExampleUnitTest.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/settings.gradle 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/utils.gradle 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/test/config.properties
@@ -1 +1 @@
PLUGINS=jpush;bugly
PLUGINS=
SdkProject/library/build.gradle
@@ -1,6 +1,30 @@
plugins {
    id 'com.android.library'
}
def rootPath = rootProject.getRootDir().getAbsolutePath()
def channelPath = "${rootPath}/channel/${CHANNEL_NAME}"
def applyGradle(String path) {
    path = "${path}.gradle"
    File file = file(path)
    if (file.exists())
        apply from: path
}
applyGradle("${rootPath}/utils")
applyGradle("${channelPath}/build")
Properties localProp = loadProperties('local')
Properties channelProp = loadProperties("${channelPath}/config")
def plugins = channelProp.getProperty("PLUGINS").split(';')
plugins.each {
    applyGradle("${rootPath}/plugins/${it}/build")
}
//渠道需要覆盖主目录的java文件
def channelJavaFiles = getAllFiles(new ArrayList<File>(), "${channelPath}/java")
android {
    compileSdkVersion 29
@@ -16,6 +40,13 @@
        consumerProguardFiles "consumer-rules.pro"
    }
    flavorDimensions "version"
    productFlavors {
        merger {
            dimension "version"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
@@ -26,11 +57,58 @@
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
}
    //合并资源
    sourceSets {
        main {
            java {
                //剔除主目录下,渠道重复的类
                channelJavaFiles.each {
                    def tag = "java\\"
                    def str = it.getAbsolutePath()
                    def str1 = str.substring(0, str.indexOf(tag))
                    def str2 = str.substring(str1.length() + tag.length(), str.length())
                    exclude str2
                }
            }
        }
        merger {
            java {
                srcDirs "${channelPath}/java"
            }
            jniLibs.srcDirs "${channelPath}/libs"
            res.srcDirs "${channelPath}/res"
            manifest {
                File file = file("${channelPath}/AndroidManifest.xml")
                if (file.exists())
                    srcFile "${channelPath}/AndroidManifest.xml"
            }
            //合并插件
            plugins.each {
                def pluginPath = "${rootPath}/plugins/${it}"
                java.srcDirs "${pluginPath}/java"
                jniLibs.srcDirs "${pluginPath}libs"
                res.srcDirs "${pluginPath}/res"
                manifest {
                    File file = file("${pluginPath}/AndroidManifest.xml")
                    if (file.exists())
                        srcFile "${pluginPath}/AndroidManifest.xml"
                }
            }
        }
    }
}
dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.3'
    implementation 'androidx.navigation:navigation-fragment:2.3.1'
    implementation 'androidx.navigation:navigation-ui:2.3.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
SdkProject/library/src/main/java/com/secondworld/universalsdk/CodeA2U.java
New file
@@ -0,0 +1,40 @@
package com.secondworld.universalsdk;
/**
 * Created by Administrator on 2018/7/18 0018.
 */
public interface CodeA2U {
    /**
     * 资源拷贝完成
     */
    int AssetCopyFinished = 0;
    /**
     * 电量改变
     */
    int BatteryLevel = 1;
    /**
     * 充电状态改变
     */
    int BatteryCharging = 2;
    /**
     * 回调sdk逻辑完毕
     */
    int SdkInitComplete = 90;
    /**
     * 回调android设备信息
     */
    int DeviceInfo = 3;
    /**
     * 回调推送的独立id
     */
    int PushClientID = 4;
    /**
     * 回调外部存储根目录地址
     */
    int ExternalStorage = 5;
    /**
     * 触发了退出游戏逻辑, 打开二次确认界面
     */
    int ExitGame = 6;
}
SdkProject/library/src/main/java/com/secondworld/universalsdk/CodeU2A.java
New file
@@ -0,0 +1,60 @@
package com.secondworld.universalsdk;
/**
 * Created by Administrator on 2018/7/18 0018.
 */
public interface CodeU2A {
    /**
     * 执行资源拷贝
     */
    int AssetCopy = 0;
    /**
     * 执行开始电量改变,充电状态改变监听
     */
    int BatteryListenStart = 1;
    /**
     * 执行停止电量改变,充电状态改变监听
     */
    int BatteryListenStop = 2;
    /**
     * 获取唯一识别码
     */
    int UniqueID = 3;
    /**
     * 申请在AndroidManifest文件中
     */
    int RequestManifestPermissions = 4;
    /**
     * 单独动态申请某一个权限
     */
    int RequestPermission = 5;
    /**
     * 重启应用
     */
    int RestartApp = 6;
    /**
     * 拷贝文本信息
     */
    int CopyContent = 7;
    /**
     * 打开网址
     */
    int OpenWebView = 8;
    /**
     * SDK初始化, 完全自动初始化的流程, 完成必要逻辑后再回调回去
     */
    int Init = 9;
    /**
     * 安装应用
     */
    int InstallAPK = 10;
    /**
     * 外部存储根目录地址
     */
    int ExteneralStorage = 11;
    /**
     * 拷贝游戏资源
     */
    int CopyOneAsset = 12;
}
SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java
@@ -1,4 +1,36 @@
package com.secondworld.universalsdk;
import com.secondworld.universalsdk.command.ICommand;
import org.json.JSONObject;
import java.util.HashMap;
public class H2EngineSDK {
    public static HashMap<Integer, ICommand> allCommand = new HashMap();
    public static void init() {
    }
    private static void AddCommand(ICommand command) {
        allCommand.put(command.getCode(), command);
    }
    //unity 发来的消息
    public static void HandleUnityMessage(String json) {
        try {
            JSONObject _json = new JSONObject(json);
            int code = _json.getInt("code");
            ICommand command = allCommand.get(code);
            if (command == null) {
                return;
            }
            command.process(json);
        } catch (Exception e) {
        }
    }
}
SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdAssetCopy.java
New file
@@ -0,0 +1,14 @@
package com.secondworld.universalsdk.command;
import com.secondworld.universalsdk.CodeU2A;
public class CmdAssetCopy implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.AssetCopy;
    }
    @Override
    public void process(String json) {
    }
}
SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInit.java
New file
@@ -0,0 +1,18 @@
package com.secondworld.universalsdk.command;
import com.secondworld.universalsdk.CodeU2A;
/**
 * 游戏初始化
 */
public class CmdInit implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.Init;
    }
    @Override
    public void process(String json) {
    }
}
SdkProject/library/src/main/java/com/secondworld/universalsdk/command/ICommand.java
New file
@@ -0,0 +1,12 @@
package com.secondworld.universalsdk.command;
/**
 * unity 传递过来的命令
 */
public interface ICommand {
    int getCode();
    void process(String json);
}
SdkProject/merger/.gitignore
File was deleted
SdkProject/merger/build.gradle
File was deleted
SdkProject/merger/consumer-rules.pro
SdkProject/merger/proguard-rules.pro
File was deleted
SdkProject/merger/src/androidTest/java/com/secondworld/merger/ExampleInstrumentedTest.java
File was deleted
SdkProject/merger/src/main/AndroidManifest.xml
File was deleted
SdkProject/merger/src/test/java/com/secondworld/merger/ExampleUnitTest.java
File was deleted
SdkProject/settings.gradle
@@ -1,4 +1,3 @@
include ':merger'
include ':library'
include ':app'
rootProject.name = "SdkProject"
SdkProject/utils.gradle
@@ -1,12 +1,30 @@
//加载本集配置properties文件
def loadProperties(String name) {
    Properties properties = new Properties()
    InputStream inputStream = project.rootProject.file("${name}.properties").newDataInputStream();
    InputStream inputStream = project.rootProject.file("${name}.properties").newDataInputStream()
    properties.load(inputStream)
    return properties
}
//递归读取该目录下的文件
def getAllFiles(ArrayList<File> list, String path) {
    list.clear()
    File file = file(path)
    if (file.isFile()) {
        list.add(file)
        return list
    }
    def files = file.listFiles()
    files.each {
        if (it.isDirectory())
            getAllFiles(list,it.getAbsolutePath())
        else
            list.add(it)
        print "\n"
    }
    return list
}
ext {
    getAllFiles = this.&getAllFiles
    loadProperties = this.&loadProperties
}