| SdkProject/app/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/app/src/main/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/app/src/main/java/com/secondworld/universalsdk/MainActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/app/src/main/res/layout/activity_main.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/channel/test/java/com/secondworld/universalsdk/MyApplication.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/library/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/library/src/main/java/com/secondworld/universalsdk/BaseApplication.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInit.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
SdkProject/app/build.gradle
@@ -32,6 +32,8 @@ implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.3' implementation project(path: ':library') testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' SdkProject/app/src/main/AndroidManifest.xml
@@ -8,6 +8,15 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.SdkProject" /> android:name=".BaseApplication" android:theme="@style/Theme.SdkProject"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> SdkProject/app/src/main/java/com/secondworld/universalsdk/MainActivity.java
New file @@ -0,0 +1,24 @@ package com.secondworld.universalsdk; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import org.json.JSONException; import org.json.JSONObject; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); JSONObject json = new JSONObject(); try { json.put("code", 9); } catch (JSONException e) { e.printStackTrace(); } H2EngineSDK.HandleUnityMessage(json.toString()); } } SdkProject/app/src/main/res/layout/activity_main.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> </androidx.constraintlayout.widget.ConstraintLayout> SdkProject/channel/test/java/com/secondworld/universalsdk/MyApplication.java
New file @@ -0,0 +1,4 @@ package com.secondworld.universalsdk; public class MyApplication extends BaseApplication { } SdkProject/library/build.gradle
@@ -134,7 +134,7 @@ 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.+' testImplementation 'junit:junit:4.13.1' 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/BaseApplication.java
New file @@ -0,0 +1,16 @@ package com.secondworld.universalsdk; import android.app.Application; public class BaseApplication extends Application { public static Application APP; @Override public void onCreate() { super.onCreate(); APP = this; H2EngineSDK.initCommandMap(); } } SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java
@@ -1,36 +1,82 @@ package com.secondworld.universalsdk; import android.util.Log; import com.secondworld.universalsdk.command.ICommand; import org.json.JSONObject; import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import dalvik.system.DexFile; public class H2EngineSDK { public static HashMap<Integer, ICommand> allCommand = new HashMap<Integer, ICommand> (); private static HashMap<Integer, ICommand> allCommand = new HashMap<Integer, ICommand>(); public static void init() { /** * 初始化所有命令 */ public static void initCommandMap() { allCommand.clear(); List<String> classesName = getClassName("com.secondworld.universalsdk.command"); try { for (String name : classesName) { Class<?> aClass = Class.forName(name); addCommand((ICommand) aClass.newInstance()); } } catch (Exception e) { e.printStackTrace(); } } private static void AddCommand(ICommand command) { public static void addCommand(ICommand command) { allCommand.put(command.getCode(), command); } //unity 发来的消息 /** * unity 发来的消息 * @param json */ 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) { Log.e("H2EngineSDK", "未知命令"); return; } command.process(json); } catch (Exception ignored) { } } /** * 通过反射读取指定包名下的所有类名 * @param packageName * @return */ public static List<String> getClassName(String packageName) { List<String> classNameList = new ArrayList<String>(); try { DexFile df = new DexFile(BaseApplication.APP.getPackageCodePath());//通过DexFile查找当前的APK中可执行文件 Enumeration<String> enumeration = df.entries();//获取df中的元素 这里包含了所有可执行的类名 该类名包含了包名+类名的方式 while (enumeration.hasMoreElements()) {//遍历 String className = (String) enumeration.nextElement(); if (className.contains(packageName)) {//在当前所有可执行的类里面查找包含有该包名的所有类 classNameList.add(className); } } } catch (IOException e) { e.printStackTrace(); } return classNameList; } } SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInit.java
@@ -1,5 +1,7 @@ package com.secondworld.universalsdk.command; import android.util.Log; import com.secondworld.universalsdk.CodeU2A; /** @@ -13,6 +15,6 @@ @Override public void process(String json) { Log.e("ICommand", "游戏初始化!!!!!!!!!!!"); } }