Showing
52 changed files
with
1061 additions
and
0 deletions
doc/aes资源解密资料/GameResAes/NativeAes.iml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<module external.linked.project.id="NativeAes" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4"> | ||
3 | + <component name="FacetManager"> | ||
4 | + <facet type="java-gradle" name="Java-Gradle"> | ||
5 | + <configuration> | ||
6 | + <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" /> | ||
7 | + <option name="BUILDABLE" value="false" /> | ||
8 | + </configuration> | ||
9 | + </facet> | ||
10 | + </component> | ||
11 | + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> | ||
12 | + <exclude-output /> | ||
13 | + <content url="file://$MODULE_DIR$"> | ||
14 | + <excludeFolder url="file://$MODULE_DIR$/.gradle" /> | ||
15 | + </content> | ||
16 | + <orderEntry type="inheritedJdk" /> | ||
17 | + <orderEntry type="sourceFolder" forTests="false" /> | ||
18 | + </component> | ||
19 | +</module> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
doc/aes资源解密资料/GameResAes/app/app.iml
0 → 100644
This diff is collapsed. Click to expand it.
doc/aes资源解密资料/GameResAes/app/build.gradle
0 → 100644
1 | +apply plugin: 'com.android.application' | ||
2 | + | ||
3 | +android { | ||
4 | + signingConfigs { | ||
5 | + release { | ||
6 | + storeFile file('/Users/guangka123/Documents/pool_sdk/关卡资料/guangka.keystore') | ||
7 | + storePassword 'guangka2019' | ||
8 | + keyAlias = 'guangka' | ||
9 | + keyPassword 'guangka2019' | ||
10 | + } | ||
11 | + } | ||
12 | + compileSdkVersion 30 | ||
13 | + buildToolsVersion "30.0.3" | ||
14 | + defaultConfig { | ||
15 | + applicationId "com.common.ndk.aes" | ||
16 | + minSdkVersion 19 | ||
17 | + targetSdkVersion 28 | ||
18 | + versionCode 1 | ||
19 | + versionName "1.0" | ||
20 | + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||
21 | + signingConfig signingConfigs.release | ||
22 | + } | ||
23 | + buildTypes { | ||
24 | + release { | ||
25 | + minifyEnabled false | ||
26 | + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | ||
27 | + } | ||
28 | + } | ||
29 | + sourceSets { | ||
30 | + main{ | ||
31 | + jniLibs.srcDirs = ['libs'] | ||
32 | + } | ||
33 | + } | ||
34 | +} | ||
35 | + | ||
36 | +dependencies { | ||
37 | + implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) | ||
38 | + implementation 'androidx.appcompat:appcompat:1.0.2' | ||
39 | + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' | ||
40 | + testImplementation 'junit:junit:4.12' | ||
41 | + androidTestImplementation 'androidx.test.ext:junit:1.1.0' | ||
42 | + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' | ||
43 | +} |
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
1 | +# Add project specific ProGuard rules here. | ||
2 | +# You can control the set of applied configuration files using the | ||
3 | +# proguardFiles setting in build.gradle. | ||
4 | +# | ||
5 | +# For more details, see | ||
6 | +# http://developer.android.com/guide/developing/tools/proguard.html | ||
7 | + | ||
8 | +# If your project uses WebView with JS, uncomment the following | ||
9 | +# and specify the fully qualified class name to the JavaScript interface | ||
10 | +# class: | ||
11 | +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
12 | +# public *; | ||
13 | +#} | ||
14 | + | ||
15 | +# Uncomment this to preserve the line number information for | ||
16 | +# debugging stack traces. | ||
17 | +#-keepattributes SourceFile,LineNumberTable | ||
18 | + | ||
19 | +# If you keep the line number information, uncomment this to | ||
20 | +# hide the original source file name. | ||
21 | +#-renamesourcefileattribute SourceFile |
doc/aes资源解密资料/GameResAes/app/src/androidTest/java/com/common/ndk/aes/ExampleInstrumentedTest.java
0 → 100644
1 | +package com.common.ndk.aes; | ||
2 | + | ||
3 | +import android.content.Context; | ||
4 | + | ||
5 | +import androidx.test.platform.app.InstrumentationRegistry; | ||
6 | +import androidx.test.ext.junit.runners.AndroidJUnit4; | ||
7 | + | ||
8 | +import org.junit.Test; | ||
9 | +import org.junit.runner.RunWith; | ||
10 | + | ||
11 | +import static org.junit.Assert.*; | ||
12 | + | ||
13 | +/** | ||
14 | + * Instrumented test, which will execute on an Android device. | ||
15 | + * | ||
16 | + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | ||
17 | + */ | ||
18 | +@RunWith(AndroidJUnit4.class) | ||
19 | +public class ExampleInstrumentedTest { | ||
20 | + @Test | ||
21 | + public void useAppContext() { | ||
22 | + // Context of the app under test. | ||
23 | + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); | ||
24 | + | ||
25 | + assertEquals("com.common.ndk.aes", appContext.getPackageName()); | ||
26 | + } | ||
27 | +} |
1 | +<?xml version="1.0" encoding="utf-8"?> | ||
2 | +<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | + package="com.common.ndk.aes"> | ||
4 | + | ||
5 | + <uses-permission android:name="android.permission.INTERNET"></uses-permission> | ||
6 | + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> | ||
7 | + | ||
8 | + <application | ||
9 | + android:allowBackup="true" | ||
10 | + android:icon="@mipmap/ic_launcher" | ||
11 | + android:label="@string/app_name" | ||
12 | + android:roundIcon="@mipmap/ic_launcher_round" | ||
13 | + android:supportsRtl="true" | ||
14 | + android:theme="@style/AppTheme"> | ||
15 | + <activity android:name=".MainActivity"> | ||
16 | + <intent-filter> | ||
17 | + <action android:name="android.intent.action.MAIN" /> | ||
18 | + | ||
19 | + <category android:name="android.intent.category.LAUNCHER" /> | ||
20 | + </intent-filter> | ||
21 | + </activity> | ||
22 | + </application> | ||
23 | + | ||
24 | +</manifest> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
No preview for this file type
No preview for this file type
No preview for this file type
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
1 | +{ | ||
2 | + "initial": [ | ||
3 | + "js/egret.min.js", | ||
4 | + "js/egret.web.min.js", | ||
5 | + "js/eui.min.js", | ||
6 | + "js/assetsmanager.min.js", | ||
7 | + "js/tween.min.js", | ||
8 | + "js/socket.min.js", | ||
9 | + "js/game.min.js", | ||
10 | + "js/promise.min.js", | ||
11 | + "js/dragonBones.min.js" | ||
12 | + ], | ||
13 | + "game": [ | ||
14 | + "js/zip.min.js", | ||
15 | + "js/lib.min.js", | ||
16 | + "js/main.min.js", | ||
17 | + "js/default.thm.min.js" | ||
18 | + ] | ||
19 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +package com.common.ndk.aes; | ||
2 | + | ||
3 | +import android.os.Bundle; | ||
4 | +import android.os.Environment; | ||
5 | +import android.view.View; | ||
6 | + | ||
7 | +import androidx.appcompat.app.AppCompatActivity; | ||
8 | + | ||
9 | +import com.common.crypt.moudle.CryptCallBack; | ||
10 | +import com.common.crypt.moudle.CryptInterface; | ||
11 | +import com.common.ndk.aes.utils.CommonLog; | ||
12 | + | ||
13 | +import java.io.File; | ||
14 | + | ||
15 | +public class MainActivity extends AppCompatActivity { | ||
16 | + | ||
17 | + static { | ||
18 | + System.loadLibrary("common-sdk"); | ||
19 | + } | ||
20 | + | ||
21 | + @Override | ||
22 | + protected void onCreate(Bundle savedInstanceState) { | ||
23 | + super.onCreate(savedInstanceState); | ||
24 | + setContentView(R.layout.activity_main); | ||
25 | + CryptInterface.init(getApplication()); | ||
26 | + } | ||
27 | + | ||
28 | + //将assets中res资源加密到对应到sd卡路径上 | ||
29 | + public void encodeAssetsFile(View view) { | ||
30 | + CommonLog.logDebug("encodeAssetsFile"); | ||
31 | + CryptInterface.encodeAssetsFilesFromDir("res", Environment.getExternalStorageDirectory() + "/gametest/encodeRes", new CryptCallBack() { | ||
32 | + @Override | ||
33 | + public void callback(int code, Object msg) { | ||
34 | + CommonLog.logDebug("code:" + code + " message:" + msg); | ||
35 | + } | ||
36 | + }); | ||
37 | + } | ||
38 | + | ||
39 | + //将assets中res资源解密到对应目录上 | ||
40 | + public void decodeAssetsFile(View view) { | ||
41 | + final long currentTime = System.currentTimeMillis(); | ||
42 | + CryptInterface.decodeAssetsFilesFromDir("commonEncode", Environment.getExternalStorageDirectory() + "/gametest/encodeRes7", new CryptCallBack() { | ||
43 | + @Override | ||
44 | + public void callback(int code, Object msg) { | ||
45 | + long subTime = System.currentTimeMillis() - currentTime; | ||
46 | + CommonLog.logDebug("useTime:" + subTime); | ||
47 | + CommonLog.logDebug("code:" + code + " message:" + msg); | ||
48 | + } | ||
49 | + }); | ||
50 | + } | ||
51 | + | ||
52 | + //将除assets目录之前的其他目录解密到对应目录上 | ||
53 | + public void decodeNoAssetsFile(View view) { | ||
54 | + File storageDirectory = Environment.getExternalStorageDirectory(); | ||
55 | + String fromDir = storageDirectory + "/gametest/res"; | ||
56 | + String toDir = storageDirectory + "/gametest/decodeRes"; | ||
57 | + CryptInterface.decodeSdFilesFromDir(fromDir, toDir, new CryptCallBack() { | ||
58 | + @Override | ||
59 | + public void callback(int code, Object msg) { | ||
60 | + CommonLog.logDebug("code:" + code + " message:" + msg); | ||
61 | + } | ||
62 | + }); | ||
63 | + } | ||
64 | + | ||
65 | + //将除assets目录之前的其他目录加密到对应目录上 | ||
66 | + public void encodeNoAssetsFile(View view) { | ||
67 | + File storageDirectory = Environment.getExternalStorageDirectory(); | ||
68 | + String fromDir = storageDirectory + "/gametest/res"; | ||
69 | + String toDir = storageDirectory + "/gametest/encodeRes"; | ||
70 | + CryptInterface.encodeSdFilesFromDir(fromDir, toDir, new CryptCallBack() { | ||
71 | + @Override | ||
72 | + public void callback(int code, Object msg) { | ||
73 | + CommonLog.logDebug("code:" + code + " message:" + msg); | ||
74 | + } | ||
75 | + }); | ||
76 | + } | ||
77 | + | ||
78 | + //内容加密操作 | ||
79 | + public void contentAesEncode(View view) { | ||
80 | + CryptInterface.encode("hello123Aes".getBytes(), new CryptCallBack() { | ||
81 | + @Override | ||
82 | + public void callback(int code, Object msg) { | ||
83 | + if(code == CryptCallBack.success){ | ||
84 | + //加密成功 | ||
85 | + byte[] encodeResult = (byte[]) msg; | ||
86 | + for (byte b:encodeResult) { | ||
87 | + CommonLog.logDebug("b:" + b); | ||
88 | + } | ||
89 | + CommonLog.logDebug("msg:" + new String(encodeResult,0,encodeResult.length)); | ||
90 | + }else{ | ||
91 | + //加密失败 | ||
92 | + CommonLog.logError("encode error:" + msg); | ||
93 | + } | ||
94 | + } | ||
95 | + }); | ||
96 | + } | ||
97 | + | ||
98 | + //内容解密操作 | ||
99 | + public void contentAesDecode(View view) { | ||
100 | + byte[] decodeContent = {-31,-25,-89,40,108,-67,-41,-61,-92,-103,-104,-106,-93,38,-8,-115}; | ||
101 | + CryptInterface.decode(decodeContent, new CryptCallBack() { | ||
102 | + @Override | ||
103 | + public void callback(int code, Object msg) { | ||
104 | + if(code == CryptCallBack.success){ | ||
105 | + //解密成功 | ||
106 | + byte[] decodeResult = (byte[]) msg; | ||
107 | + CommonLog.logDebug("msg:" + new String(decodeResult,0,decodeResult.length)); | ||
108 | + }else{ | ||
109 | + //解密失败 | ||
110 | + CommonLog.logError("encode error:" + msg); | ||
111 | + } | ||
112 | + } | ||
113 | + }); | ||
114 | + } | ||
115 | +} |
1 | +<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
2 | + xmlns:aapt="http://schemas.android.com/aapt" | ||
3 | + android:width="108dp" | ||
4 | + android:height="108dp" | ||
5 | + android:viewportWidth="108" | ||
6 | + android:viewportHeight="108"> | ||
7 | + <path | ||
8 | + android:fillType="evenOdd" | ||
9 | + android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" | ||
10 | + android:strokeWidth="1" | ||
11 | + android:strokeColor="#00000000"> | ||
12 | + <aapt:attr name="android:fillColor"> | ||
13 | + <gradient | ||
14 | + android:endX="78.5885" | ||
15 | + android:endY="90.9159" | ||
16 | + android:startX="48.7653" | ||
17 | + android:startY="61.0927" | ||
18 | + android:type="linear"> | ||
19 | + <item | ||
20 | + android:color="#44000000" | ||
21 | + android:offset="0.0" /> | ||
22 | + <item | ||
23 | + android:color="#00000000" | ||
24 | + android:offset="1.0" /> | ||
25 | + </gradient> | ||
26 | + </aapt:attr> | ||
27 | + </path> | ||
28 | + <path | ||
29 | + android:fillColor="#FFFFFF" | ||
30 | + android:fillType="nonZero" | ||
31 | + android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" | ||
32 | + android:strokeWidth="1" | ||
33 | + android:strokeColor="#00000000" /> | ||
34 | +</vector> |
1 | +<?xml version="1.0" encoding="utf-8"?> | ||
2 | +<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | + android:width="108dp" | ||
4 | + android:height="108dp" | ||
5 | + android:viewportWidth="108" | ||
6 | + android:viewportHeight="108"> | ||
7 | + <path | ||
8 | + android:fillColor="#008577" | ||
9 | + android:pathData="M0,0h108v108h-108z" /> | ||
10 | + <path | ||
11 | + android:fillColor="#00000000" | ||
12 | + android:pathData="M9,0L9,108" | ||
13 | + android:strokeWidth="0.8" | ||
14 | + android:strokeColor="#33FFFFFF" /> | ||
15 | + <path | ||
16 | + android:fillColor="#00000000" | ||
17 | + android:pathData="M19,0L19,108" | ||
18 | + android:strokeWidth="0.8" | ||
19 | + android:strokeColor="#33FFFFFF" /> | ||
20 | + <path | ||
21 | + android:fillColor="#00000000" | ||
22 | + android:pathData="M29,0L29,108" | ||
23 | + android:strokeWidth="0.8" | ||
24 | + android:strokeColor="#33FFFFFF" /> | ||
25 | + <path | ||
26 | + android:fillColor="#00000000" | ||
27 | + android:pathData="M39,0L39,108" | ||
28 | + android:strokeWidth="0.8" | ||
29 | + android:strokeColor="#33FFFFFF" /> | ||
30 | + <path | ||
31 | + android:fillColor="#00000000" | ||
32 | + android:pathData="M49,0L49,108" | ||
33 | + android:strokeWidth="0.8" | ||
34 | + android:strokeColor="#33FFFFFF" /> | ||
35 | + <path | ||
36 | + android:fillColor="#00000000" | ||
37 | + android:pathData="M59,0L59,108" | ||
38 | + android:strokeWidth="0.8" | ||
39 | + android:strokeColor="#33FFFFFF" /> | ||
40 | + <path | ||
41 | + android:fillColor="#00000000" | ||
42 | + android:pathData="M69,0L69,108" | ||
43 | + android:strokeWidth="0.8" | ||
44 | + android:strokeColor="#33FFFFFF" /> | ||
45 | + <path | ||
46 | + android:fillColor="#00000000" | ||
47 | + android:pathData="M79,0L79,108" | ||
48 | + android:strokeWidth="0.8" | ||
49 | + android:strokeColor="#33FFFFFF" /> | ||
50 | + <path | ||
51 | + android:fillColor="#00000000" | ||
52 | + android:pathData="M89,0L89,108" | ||
53 | + android:strokeWidth="0.8" | ||
54 | + android:strokeColor="#33FFFFFF" /> | ||
55 | + <path | ||
56 | + android:fillColor="#00000000" | ||
57 | + android:pathData="M99,0L99,108" | ||
58 | + android:strokeWidth="0.8" | ||
59 | + android:strokeColor="#33FFFFFF" /> | ||
60 | + <path | ||
61 | + android:fillColor="#00000000" | ||
62 | + android:pathData="M0,9L108,9" | ||
63 | + android:strokeWidth="0.8" | ||
64 | + android:strokeColor="#33FFFFFF" /> | ||
65 | + <path | ||
66 | + android:fillColor="#00000000" | ||
67 | + android:pathData="M0,19L108,19" | ||
68 | + android:strokeWidth="0.8" | ||
69 | + android:strokeColor="#33FFFFFF" /> | ||
70 | + <path | ||
71 | + android:fillColor="#00000000" | ||
72 | + android:pathData="M0,29L108,29" | ||
73 | + android:strokeWidth="0.8" | ||
74 | + android:strokeColor="#33FFFFFF" /> | ||
75 | + <path | ||
76 | + android:fillColor="#00000000" | ||
77 | + android:pathData="M0,39L108,39" | ||
78 | + android:strokeWidth="0.8" | ||
79 | + android:strokeColor="#33FFFFFF" /> | ||
80 | + <path | ||
81 | + android:fillColor="#00000000" | ||
82 | + android:pathData="M0,49L108,49" | ||
83 | + android:strokeWidth="0.8" | ||
84 | + android:strokeColor="#33FFFFFF" /> | ||
85 | + <path | ||
86 | + android:fillColor="#00000000" | ||
87 | + android:pathData="M0,59L108,59" | ||
88 | + android:strokeWidth="0.8" | ||
89 | + android:strokeColor="#33FFFFFF" /> | ||
90 | + <path | ||
91 | + android:fillColor="#00000000" | ||
92 | + android:pathData="M0,69L108,69" | ||
93 | + android:strokeWidth="0.8" | ||
94 | + android:strokeColor="#33FFFFFF" /> | ||
95 | + <path | ||
96 | + android:fillColor="#00000000" | ||
97 | + android:pathData="M0,79L108,79" | ||
98 | + android:strokeWidth="0.8" | ||
99 | + android:strokeColor="#33FFFFFF" /> | ||
100 | + <path | ||
101 | + android:fillColor="#00000000" | ||
102 | + android:pathData="M0,89L108,89" | ||
103 | + android:strokeWidth="0.8" | ||
104 | + android:strokeColor="#33FFFFFF" /> | ||
105 | + <path | ||
106 | + android:fillColor="#00000000" | ||
107 | + android:pathData="M0,99L108,99" | ||
108 | + android:strokeWidth="0.8" | ||
109 | + android:strokeColor="#33FFFFFF" /> | ||
110 | + <path | ||
111 | + android:fillColor="#00000000" | ||
112 | + android:pathData="M19,29L89,29" | ||
113 | + android:strokeWidth="0.8" | ||
114 | + android:strokeColor="#33FFFFFF" /> | ||
115 | + <path | ||
116 | + android:fillColor="#00000000" | ||
117 | + android:pathData="M19,39L89,39" | ||
118 | + android:strokeWidth="0.8" | ||
119 | + android:strokeColor="#33FFFFFF" /> | ||
120 | + <path | ||
121 | + android:fillColor="#00000000" | ||
122 | + android:pathData="M19,49L89,49" | ||
123 | + android:strokeWidth="0.8" | ||
124 | + android:strokeColor="#33FFFFFF" /> | ||
125 | + <path | ||
126 | + android:fillColor="#00000000" | ||
127 | + android:pathData="M19,59L89,59" | ||
128 | + android:strokeWidth="0.8" | ||
129 | + android:strokeColor="#33FFFFFF" /> | ||
130 | + <path | ||
131 | + android:fillColor="#00000000" | ||
132 | + android:pathData="M19,69L89,69" | ||
133 | + android:strokeWidth="0.8" | ||
134 | + android:strokeColor="#33FFFFFF" /> | ||
135 | + <path | ||
136 | + android:fillColor="#00000000" | ||
137 | + android:pathData="M19,79L89,79" | ||
138 | + android:strokeWidth="0.8" | ||
139 | + android:strokeColor="#33FFFFFF" /> | ||
140 | + <path | ||
141 | + android:fillColor="#00000000" | ||
142 | + android:pathData="M29,19L29,89" | ||
143 | + android:strokeWidth="0.8" | ||
144 | + android:strokeColor="#33FFFFFF" /> | ||
145 | + <path | ||
146 | + android:fillColor="#00000000" | ||
147 | + android:pathData="M39,19L39,89" | ||
148 | + android:strokeWidth="0.8" | ||
149 | + android:strokeColor="#33FFFFFF" /> | ||
150 | + <path | ||
151 | + android:fillColor="#00000000" | ||
152 | + android:pathData="M49,19L49,89" | ||
153 | + android:strokeWidth="0.8" | ||
154 | + android:strokeColor="#33FFFFFF" /> | ||
155 | + <path | ||
156 | + android:fillColor="#00000000" | ||
157 | + android:pathData="M59,19L59,89" | ||
158 | + android:strokeWidth="0.8" | ||
159 | + android:strokeColor="#33FFFFFF" /> | ||
160 | + <path | ||
161 | + android:fillColor="#00000000" | ||
162 | + android:pathData="M69,19L69,89" | ||
163 | + android:strokeWidth="0.8" | ||
164 | + android:strokeColor="#33FFFFFF" /> | ||
165 | + <path | ||
166 | + android:fillColor="#00000000" | ||
167 | + android:pathData="M79,19L79,89" | ||
168 | + android:strokeWidth="0.8" | ||
169 | + android:strokeColor="#33FFFFFF" /> | ||
170 | +</vector> |
1 | +<?xml version="1.0" encoding="utf-8"?> | ||
2 | +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | + xmlns:tools="http://schemas.android.com/tools" | ||
5 | + android:layout_width="match_parent" | ||
6 | + android:layout_height="match_parent" | ||
7 | + tools:context=".MainActivity"> | ||
8 | + | ||
9 | + <Button | ||
10 | + android:id="@+id/button6" | ||
11 | + android:layout_width="320dp" | ||
12 | + android:layout_height="60dp" | ||
13 | + android:layout_marginStart="24dp" | ||
14 | + android:layout_marginTop="16dp" | ||
15 | + android:onClick="contentAesDecode" | ||
16 | + android:text="内容解密" | ||
17 | + app:layout_constraintStart_toStartOf="parent" | ||
18 | + app:layout_constraintTop_toBottomOf="@+id/button5" /> | ||
19 | + | ||
20 | + <Button | ||
21 | + android:id="@+id/button3" | ||
22 | + android:layout_width="326dp" | ||
23 | + android:layout_height="71dp" | ||
24 | + android:layout_marginStart="24dp" | ||
25 | + android:layout_marginTop="104dp" | ||
26 | + android:onClick="decodeNoAssetsFile" | ||
27 | + android:text="AES解密(除assets外)" | ||
28 | + app:layout_constraintStart_toStartOf="parent" | ||
29 | + app:layout_constraintTop_toBottomOf="@+id/button" /> | ||
30 | + | ||
31 | + <Button | ||
32 | + android:id="@+id/button" | ||
33 | + android:layout_width="322dp" | ||
34 | + android:layout_height="70dp" | ||
35 | + android:layout_marginStart="24dp" | ||
36 | + android:layout_marginTop="24dp" | ||
37 | + android:text="Aes加密(Assets)" | ||
38 | + android:onClick="encodeAssetsFile" | ||
39 | + app:layout_constraintStart_toStartOf="parent" | ||
40 | + app:layout_constraintTop_toTopOf="parent" /> | ||
41 | + | ||
42 | + <Button | ||
43 | + android:id="@+id/button2" | ||
44 | + android:layout_width="326dp" | ||
45 | + android:layout_height="71dp" | ||
46 | + android:layout_marginStart="24dp" | ||
47 | + android:layout_marginTop="16dp" | ||
48 | + android:text="AES解密(Assets)" | ||
49 | + android:onClick="decodeAssetsFile" | ||
50 | + app:layout_constraintStart_toStartOf="parent" | ||
51 | + app:layout_constraintTop_toBottomOf="@+id/button" /> | ||
52 | + | ||
53 | + <Button | ||
54 | + android:id="@+id/button4" | ||
55 | + android:layout_width="320dp" | ||
56 | + android:layout_height="60dp" | ||
57 | + android:layout_marginStart="24dp" | ||
58 | + android:layout_marginTop="16dp" | ||
59 | + android:text="Aes加密(除Assets外)" | ||
60 | + android:onClick="encodeNoAssetsFile" | ||
61 | + app:layout_constraintStart_toStartOf="parent" | ||
62 | + app:layout_constraintTop_toBottomOf="@+id/button3" /> | ||
63 | + | ||
64 | + <Button | ||
65 | + android:id="@+id/button5" | ||
66 | + android:layout_width="320dp" | ||
67 | + android:layout_height="60dp" | ||
68 | + android:layout_marginStart="24dp" | ||
69 | + android:layout_marginTop="16dp" | ||
70 | + android:onClick="contentAesEncode" | ||
71 | + android:text="内容加密" | ||
72 | + app:layout_constraintStart_toStartOf="parent" | ||
73 | + app:layout_constraintTop_toBottomOf="@+id/button4" /> | ||
74 | + | ||
75 | +</androidx.constraintlayout.widget.ConstraintLayout> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<?xml version="1.0" encoding="utf-8"?> | ||
2 | +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | + <background android:drawable="@drawable/ic_launcher_background" /> | ||
4 | + <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
5 | +</adaptive-icon> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<?xml version="1.0" encoding="utf-8"?> | ||
2 | +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | + <background android:drawable="@drawable/ic_launcher_background" /> | ||
4 | + <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
5 | +</adaptive-icon> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |

2.89 KB

4.79 KB

2.01 KB

2.72 KB

4.38 KB

6.73 KB

6.24 KB

8.91 KB
1 | +<resources> | ||
2 | + | ||
3 | + <!-- Base application theme. --> | ||
4 | + <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> | ||
5 | + <!-- Customize your theme here. --> | ||
6 | + <item name="colorPrimary">@color/colorPrimary</item> | ||
7 | + <item name="colorPrimaryDark">@color/colorPrimaryDark</item> | ||
8 | + <item name="colorAccent">@color/colorAccent</item> | ||
9 | + </style> | ||
10 | + | ||
11 | +</resources> |
1 | +package com.common.ndk.aes; | ||
2 | + | ||
3 | +import org.junit.Test; | ||
4 | + | ||
5 | +import static org.junit.Assert.*; | ||
6 | + | ||
7 | +/** | ||
8 | + * Example local unit test, which will execute on the development machine (host). | ||
9 | + * | ||
10 | + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | ||
11 | + */ | ||
12 | +public class ExampleUnitTest { | ||
13 | + @Test | ||
14 | + public void addition_isCorrect() { | ||
15 | + assertEquals(4, 2 + 2); | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
doc/aes资源解密资料/GameResAes/build.gradle
0 → 100644
1 | +// Top-level build file where you can add configuration options common to all sub-projects/modules. | ||
2 | + | ||
3 | +buildscript { | ||
4 | + repositories { | ||
5 | + google() | ||
6 | + jcenter() | ||
7 | + | ||
8 | + } | ||
9 | + dependencies { | ||
10 | + classpath 'com.android.tools.build:gradle:3.5.3' | ||
11 | + | ||
12 | + // NOTE: Do not place your application dependencies here; they belong | ||
13 | + // in the individual module build.gradle files | ||
14 | + } | ||
15 | +} | ||
16 | + | ||
17 | +allprojects { | ||
18 | + repositories { | ||
19 | + google() | ||
20 | + jcenter() | ||
21 | + | ||
22 | + } | ||
23 | +} | ||
24 | + | ||
25 | +task clean(type: Delete) { | ||
26 | + delete rootProject.buildDir | ||
27 | +} |
doc/aes资源解密资料/GameResAes/gradle.properties
0 → 100644
1 | +# Project-wide Gradle settings. | ||
2 | +# IDE (e.g. Android Studio) users: | ||
3 | +# Gradle settings configured through the IDE *will override* | ||
4 | +# any settings specified in this file. | ||
5 | +# For more details on how to configure your build environment visit | ||
6 | +# http://www.gradle.org/docs/current/userguide/build_environment.html | ||
7 | +# Specifies the JVM arguments used for the daemon process. | ||
8 | +# The setting is particularly useful for tweaking memory settings. | ||
9 | +org.gradle.jvmargs=-Xmx1536m | ||
10 | +# When configured, Gradle will run in incubating parallel mode. | ||
11 | +# This option should only be used with decoupled projects. More details, visit | ||
12 | +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects | ||
13 | +# org.gradle.parallel=true | ||
14 | +# AndroidX package structure to make it clearer which packages are bundled with the | ||
15 | +# Android operating system, and which are packaged with your app's APK | ||
16 | +# https://developer.android.com/topic/libraries/support-library/androidx-rn | ||
17 | +android.useAndroidX=true | ||
18 | +# Automatically convert third-party libraries to use AndroidX | ||
19 | +android.enableJetifier=true | ||
20 | + |
No preview for this file type
doc/aes资源解密资料/GameResAes/gradlew
0 → 100644
1 | +#!/usr/bin/env sh | ||
2 | + | ||
3 | +############################################################################## | ||
4 | +## | ||
5 | +## Gradle start up script for UN*X | ||
6 | +## | ||
7 | +############################################################################## | ||
8 | + | ||
9 | +# Attempt to set APP_HOME | ||
10 | +# Resolve links: $0 may be a link | ||
11 | +PRG="$0" | ||
12 | +# Need this for relative symlinks. | ||
13 | +while [ -h "$PRG" ] ; do | ||
14 | + ls=`ls -ld "$PRG"` | ||
15 | + link=`expr "$ls" : '.*-> \(.*\)$'` | ||
16 | + if expr "$link" : '/.*' > /dev/null; then | ||
17 | + PRG="$link" | ||
18 | + else | ||
19 | + PRG=`dirname "$PRG"`"/$link" | ||
20 | + fi | ||
21 | +done | ||
22 | +SAVED="`pwd`" | ||
23 | +cd "`dirname \"$PRG\"`/" >/dev/null | ||
24 | +APP_HOME="`pwd -P`" | ||
25 | +cd "$SAVED" >/dev/null | ||
26 | + | ||
27 | +APP_NAME="Gradle" | ||
28 | +APP_BASE_NAME=`basename "$0"` | ||
29 | + | ||
30 | +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
31 | +DEFAULT_JVM_OPTS="" | ||
32 | + | ||
33 | +# Use the maximum available, or set MAX_FD != -1 to use that value. | ||
34 | +MAX_FD="maximum" | ||
35 | + | ||
36 | +warn () { | ||
37 | + echo "$*" | ||
38 | +} | ||
39 | + | ||
40 | +die () { | ||
41 | + echo | ||
42 | + echo "$*" | ||
43 | + echo | ||
44 | + exit 1 | ||
45 | +} | ||
46 | + | ||
47 | +# OS specific support (must be 'true' or 'false'). | ||
48 | +cygwin=false | ||
49 | +msys=false | ||
50 | +darwin=false | ||
51 | +nonstop=false | ||
52 | +case "`uname`" in | ||
53 | + CYGWIN* ) | ||
54 | + cygwin=true | ||
55 | + ;; | ||
56 | + Darwin* ) | ||
57 | + darwin=true | ||
58 | + ;; | ||
59 | + MINGW* ) | ||
60 | + msys=true | ||
61 | + ;; | ||
62 | + NONSTOP* ) | ||
63 | + nonstop=true | ||
64 | + ;; | ||
65 | +esac | ||
66 | + | ||
67 | +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
68 | + | ||
69 | +# Determine the Java command to use to start the JVM. | ||
70 | +if [ -n "$JAVA_HOME" ] ; then | ||
71 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
72 | + # IBM's JDK on AIX uses strange locations for the executables | ||
73 | + JAVACMD="$JAVA_HOME/jre/sh/java" | ||
74 | + else | ||
75 | + JAVACMD="$JAVA_HOME/bin/java" | ||
76 | + fi | ||
77 | + if [ ! -x "$JAVACMD" ] ; then | ||
78 | + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
79 | + | ||
80 | +Please set the JAVA_HOME variable in your environment to match the | ||
81 | +location of your Java installation." | ||
82 | + fi | ||
83 | +else | ||
84 | + JAVACMD="java" | ||
85 | + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
86 | + | ||
87 | +Please set the JAVA_HOME variable in your environment to match the | ||
88 | +location of your Java installation." | ||
89 | +fi | ||
90 | + | ||
91 | +# Increase the maximum file descriptors if we can. | ||
92 | +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | ||
93 | + MAX_FD_LIMIT=`ulimit -H -n` | ||
94 | + if [ $? -eq 0 ] ; then | ||
95 | + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||
96 | + MAX_FD="$MAX_FD_LIMIT" | ||
97 | + fi | ||
98 | + ulimit -n $MAX_FD | ||
99 | + if [ $? -ne 0 ] ; then | ||
100 | + warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
101 | + fi | ||
102 | + else | ||
103 | + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||
104 | + fi | ||
105 | +fi | ||
106 | + | ||
107 | +# For Darwin, add options to specify how the application appears in the dock | ||
108 | +if $darwin; then | ||
109 | + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||
110 | +fi | ||
111 | + | ||
112 | +# For Cygwin, switch paths to Windows format before running java | ||
113 | +if $cygwin ; then | ||
114 | + APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||
115 | + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||
116 | + JAVACMD=`cygpath --unix "$JAVACMD"` | ||
117 | + | ||
118 | + # We build the pattern for arguments to be converted via cygpath | ||
119 | + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
120 | + SEP="" | ||
121 | + for dir in $ROOTDIRSRAW ; do | ||
122 | + ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
123 | + SEP="|" | ||
124 | + done | ||
125 | + OURCYGPATTERN="(^($ROOTDIRS))" | ||
126 | + # Add a user-defined pattern to the cygpath arguments | ||
127 | + if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||
128 | + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||
129 | + fi | ||
130 | + # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
131 | + i=0 | ||
132 | + for arg in "$@" ; do | ||
133 | + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
134 | + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | ||
135 | + | ||
136 | + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | ||
137 | + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||
138 | + else | ||
139 | + eval `echo args$i`="\"$arg\"" | ||
140 | + fi | ||
141 | + i=$((i+1)) | ||
142 | + done | ||
143 | + case $i in | ||
144 | + (0) set -- ;; | ||
145 | + (1) set -- "$args0" ;; | ||
146 | + (2) set -- "$args0" "$args1" ;; | ||
147 | + (3) set -- "$args0" "$args1" "$args2" ;; | ||
148 | + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||
149 | + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||
150 | + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||
151 | + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||
152 | + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||
153 | + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||
154 | + esac | ||
155 | +fi | ||
156 | + | ||
157 | +# Escape application args | ||
158 | +save () { | ||
159 | + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||
160 | + echo " " | ||
161 | +} | ||
162 | +APP_ARGS=$(save "$@") | ||
163 | + | ||
164 | +# Collect all arguments for the java command, following the shell quoting and substitution rules | ||
165 | +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||
166 | + | ||
167 | +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||
168 | +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||
169 | + cd "$(dirname "$0")" | ||
170 | +fi | ||
171 | + | ||
172 | +exec "$JAVACMD" "$@" |
doc/aes资源解密资料/GameResAes/gradlew.bat
0 → 100644
1 | +@if "%DEBUG%" == "" @echo off | ||
2 | +@rem ########################################################################## | ||
3 | +@rem | ||
4 | +@rem Gradle startup script for Windows | ||
5 | +@rem | ||
6 | +@rem ########################################################################## | ||
7 | + | ||
8 | +@rem Set local scope for the variables with windows NT shell | ||
9 | +if "%OS%"=="Windows_NT" setlocal | ||
10 | + | ||
11 | +set DIRNAME=%~dp0 | ||
12 | +if "%DIRNAME%" == "" set DIRNAME=. | ||
13 | +set APP_BASE_NAME=%~n0 | ||
14 | +set APP_HOME=%DIRNAME% | ||
15 | + | ||
16 | +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
17 | +set DEFAULT_JVM_OPTS= | ||
18 | + | ||
19 | +@rem Find java.exe | ||
20 | +if defined JAVA_HOME goto findJavaFromJavaHome | ||
21 | + | ||
22 | +set JAVA_EXE=java.exe | ||
23 | +%JAVA_EXE% -version >NUL 2>&1 | ||
24 | +if "%ERRORLEVEL%" == "0" goto init | ||
25 | + | ||
26 | +echo. | ||
27 | +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
28 | +echo. | ||
29 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
30 | +echo location of your Java installation. | ||
31 | + | ||
32 | +goto fail | ||
33 | + | ||
34 | +:findJavaFromJavaHome | ||
35 | +set JAVA_HOME=%JAVA_HOME:"=% | ||
36 | +set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||
37 | + | ||
38 | +if exist "%JAVA_EXE%" goto init | ||
39 | + | ||
40 | +echo. | ||
41 | +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||
42 | +echo. | ||
43 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
44 | +echo location of your Java installation. | ||
45 | + | ||
46 | +goto fail | ||
47 | + | ||
48 | +:init | ||
49 | +@rem Get command-line arguments, handling Windows variants | ||
50 | + | ||
51 | +if not "%OS%" == "Windows_NT" goto win9xME_args | ||
52 | + | ||
53 | +:win9xME_args | ||
54 | +@rem Slurp the command line arguments. | ||
55 | +set CMD_LINE_ARGS= | ||
56 | +set _SKIP=2 | ||
57 | + | ||
58 | +:win9xME_args_slurp | ||
59 | +if "x%~1" == "x" goto execute | ||
60 | + | ||
61 | +set CMD_LINE_ARGS=%* | ||
62 | + | ||
63 | +:execute | ||
64 | +@rem Setup the command line | ||
65 | + | ||
66 | +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||
67 | + | ||
68 | +@rem Execute Gradle | ||
69 | +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | ||
70 | + | ||
71 | +:end | ||
72 | +@rem End local scope for the variables with windows NT shell | ||
73 | +if "%ERRORLEVEL%"=="0" goto mainEnd | ||
74 | + | ||
75 | +:fail | ||
76 | +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||
77 | +rem the _cmd.exe /c_ return code! | ||
78 | +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||
79 | +exit /b 1 | ||
80 | + | ||
81 | +:mainEnd | ||
82 | +if "%OS%"=="Windows_NT" endlocal | ||
83 | + | ||
84 | +:omega |
doc/aes资源解密资料/GameResAes/local.properties
0 → 100644
1 | +## This file is automatically generated by Android Studio. | ||
2 | +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! | ||
3 | +# | ||
4 | +# This file should *NOT* be checked into Version Control Systems, | ||
5 | +# as it contains information specific to your local configuration. | ||
6 | +# | ||
7 | +# Location of the SDK. This is only used by Gradle. | ||
8 | +# For customization when using a Version Control System, please read the | ||
9 | +# header note. | ||
10 | +sdk.dir=/Users/guangka123/Library/Android/sdk |
doc/aes资源解密资料/GameResAes/settings.gradle
0 → 100644
No preview for this file type
No preview for this file type
doc/aes资源解密资料/libs/commonAes.jar
0 → 100644
No preview for this file type
doc/aes资源解密资料/libs/x86/libcommon-sdk.so
0 → 100644
No preview for this file type
doc/aes资源解密资料/libs/x86_64/libcommon-sdk.so
0 → 100644
No preview for this file type
doc/aes资源解密资料/资源AES解密接入文档.md
0 → 100644
1 | +# 资源AES解密接入文档 | ||
2 | + | ||
3 | +### 注意事项: | ||
4 | +- `使用so库需使用如下签名打包,否则调用接口失败` | ||
5 | +``` | ||
6 | +guangka签名md5 = "DE512029CD933F45124586FB275B645C"; | ||
7 | +wanqi签名md5 = "F3931078270964DFA23F0444EB1A8AB9"; | ||
8 | +gktest签名md5 = "15D040B1F80BA16B4DCCFDE61B7F5BEC"; | ||
9 | +jingyou签名md5 = "4992B09A21DEDEF3B4F776214E706287"; | ||
10 | +``` | ||
11 | + | ||
12 | +### 添加资源环境 | ||
13 | +- 将libs下的Jar包和so库(根据游戏复制对应的so库)项目的libs下 | ||
14 | +- 在工程的build.gradle中添加如下配置 | ||
15 | +``` | ||
16 | +sourceSets { | ||
17 | + main { | ||
18 | + jniLibs.srcDirs = ['libs'] | ||
19 | + } | ||
20 | +} | ||
21 | +``` | ||
22 | + | ||
23 | +### 在Application或者主load对应so库 | ||
24 | +``` | ||
25 | +static { | ||
26 | + System.loadLibrary("common-sdk"); | ||
27 | +} | ||
28 | +``` | ||
29 | + | ||
30 | +### 接入调用(接口在CryptInterface类中) | ||
31 | +- 初始化接口(Application或者主Activity的onCreate中调用) | ||
32 | +``` | ||
33 | +public static void init(Application application) | ||
34 | +``` | ||
35 | +例子: | ||
36 | +``` | ||
37 | +CryptInterface.init(getApplication()); | ||
38 | +``` | ||
39 | + | ||
40 | +- 解密接口(解密assets目录中的资源) | ||
41 | +``` | ||
42 | +public static void decodeAssetsFilesFromDir(String fromDirPath, String toDirPath, CryptCallBack callBack) | ||
43 | +``` | ||
44 | +接口参数说明 | ||
45 | + | ||
46 | +|字段名称 |字段说明 | | ||
47 | +| -------------|:--------------:| | ||
48 | +|fromDirPath |要解密资源assets的相对目录 | | ||
49 | +|toDirPath |解密资源到某个目录 | | ||
50 | +|callBack |解密结果回调 | | ||
51 | + | ||
52 | +CryptCallBack说明: | ||
53 | + | ||
54 | +|字段名称 |字段说明 | | ||
55 | +| -------------|:--------------:| | ||
56 | +|code |10:解密成功(所有资源都成功才返回) 其他code为失败 | | ||
57 | +|msg |解密结果描述 | | ||
58 | +例子: | ||
59 | +``` | ||
60 | +CryptInterface.decodeAssetsFilesFromDir("commonEncode", Environment.getExternalStorageDirectory() + "/gametest/encodeRes7", new CryptCallBack() { | ||
61 | + @Override | ||
62 | + public void callback(int code, Object msg) { | ||
63 | + CommonLog.logDebug("code:" + code + " message:" + msg); | ||
64 | + } | ||
65 | +}); | ||
66 | +``` | ||
67 | + | ||
68 | +- 解密接口(解密除assets目录外的资源) | ||
69 | +``` | ||
70 | +public static void decodeSdFilesFromDir(String fromDirPath, String toDirPath, CryptCallBack callBack) | ||
71 | +``` | ||
72 | +接口参数说明 | ||
73 | + | ||
74 | +|字段名称 |字段说明 | | ||
75 | +| -------------|:--------------:| | ||
76 | +|fromDirPath |要解密资源的绝对路径 | | ||
77 | +|toDirPath |解密资源到某个目录 | | ||
78 | +|callBack |解密结果回调 | | ||
79 | + | ||
80 | +CryptCallBack说明: | ||
81 | + | ||
82 | +|字段名称 |字段说明 | | ||
83 | +| -------------|:--------------:| | ||
84 | +|code |10:解密成功(所有资源都成功才返回) 其他code为失败 | | ||
85 | +|msg |解密结果描述 | | ||
86 | +例子: | ||
87 | +``` | ||
88 | +File storageDirectory = Environment.getExternalStorageDirectory(); | ||
89 | +String fromDir = storageDirectory + "/gametest/res"; | ||
90 | +String toDir = storageDirectory + "/gametest/decodeRes"; | ||
91 | +CryptInterface.decodeSdFilesFromDir(fromDir, toDir, new CryptCallBack() { | ||
92 | + @Override | ||
93 | + public void callback(int code, Object msg) { | ||
94 | + CommonLog.logDebug("code:" + code + " message:" + msg); | ||
95 | + } | ||
96 | +}); | ||
97 | +``` | ||
98 | + | ||
99 | +- 解密接口(直接解密传递的内容) | ||
100 | +``` | ||
101 | +public static void decode(byte[] content, CryptCallBack callBack) | ||
102 | +``` | ||
103 | +接口参数说明 | ||
104 | + | ||
105 | +|字段名称 |字段说明 | | ||
106 | +| -------------|:--------------:| | ||
107 | +|content |要解密的内容 | | ||
108 | +|callBack |解密结果回调 | | ||
109 | + | ||
110 | +CryptCallBack说明: | ||
111 | + | ||
112 | +|字段名称 |字段说明 | | ||
113 | +| -------------|:--------------:| | ||
114 | +|code |10:解密成功(所有资源都成功才返回) 其他code为失败 | | ||
115 | +|msg |当code为10时返回的是解密内容(类型是byte数组) 其他时失败描述 | | ||
116 | +例子: | ||
117 | +``` | ||
118 | +byte[] decodeContent = {-31,-25,-89,40,108,-67,-41,-61,-92,-103,-104,-106,-93,38,-8,-115}; | ||
119 | +CryptInterface.decode(decodeContent, new CryptCallBack() { | ||
120 | + @Override | ||
121 | + public void callback(int code, Object msg) { | ||
122 | + if(code == CryptCallBack.success){ | ||
123 | + //解密成功 | ||
124 | + byte[] decodeResult = (byte[]) msg; | ||
125 | + CommonLog.logDebug("msg:" + new String(decodeResult,0,decodeResult.length)); | ||
126 | + }else{ | ||
127 | + //解密失败 | ||
128 | + CommonLog.logError("encode error:" + msg); | ||
129 | + } | ||
130 | + } | ||
131 | +}); | ||
132 | +``` | ||
133 | + | ||
134 | + | ||
135 | + | ||
136 | + | ||
137 | + | ||
138 | + | ||
139 | + | ||
140 | + | ||
141 | + | ||
142 | + | ||
143 | + | ||
144 | + | ||
145 | + | ||
146 | + |
doc/aes资源解密资料/资源AES解密接入文档.pdf
0 → 100644
No preview for this file type
-
Please register or login to post a comment