Skip to content

Commit 28e1dc2

Browse files
lixiaoliang04lixiaoliang04
authored andcommitted
fix Multi-threading issues
1 parent ff725dd commit 28e1dc2

File tree

275 files changed

+274
-229
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

275 files changed

+274
-229
lines changed

app/src/main/java/com/imf/test/MainActivity.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class MainActivity extends AppCompatActivity {
2929
@Override
3030
protected void onCreate(Bundle savedInstanceState) {
3131
checkSoLoad();
32+
loadSourceLib();
3233
fullScreen();
3334
super.onCreate(savedInstanceState);
3435
setContentView(R.layout.activity_main);
@@ -40,19 +41,14 @@ protected void onCreate(Bundle savedInstanceState) {
4041
TextView tv = findViewById(R.id.sample_text);
4142
tv.setOnClickListener(v -> {
4243
StringBuilder stringBuilder = new StringBuilder();
43-
v.postDelayed(new Runnable() {
44-
@Override
45-
public void run() {
46-
loadSourceLib();
47-
stringBuilder.append("源码引入: ").append(NativeSourceTest.stringFromJNI()).append('\n');
48-
stringBuilder.append("aar引入: ").append(NativeLibTest.stringFromJNI()).append('\n');
49-
stringBuilder.append("子工程引入: ").append(NativeTestLibrary.stringFromJNI()).append('\n');
50-
stringBuilder.append("Maven引入: >背景图片变模糊<");
51-
tv.setText(stringBuilder.toString());
52-
image.setImageBitmap(BitmapBlur.blur(bitmap, 9));
53-
updateCacheDir();
54-
}
55-
}, 100);
44+
loadSourceLib();
45+
stringBuilder.append("源码引入: ").append(NativeSourceTest.stringFromJNI()).append('\n');
46+
stringBuilder.append("aar引入: ").append(NativeLibTest.stringFromJNI()).append('\n');
47+
stringBuilder.append("子工程引入: ").append(NativeTestLibrary.stringFromJNI()).append('\n');
48+
stringBuilder.append("Maven引入: >背景图片变模糊<");
49+
tv.setText(stringBuilder.toString());
50+
image.setImageBitmap(BitmapBlur.blur(bitmap, 9));
51+
updateCacheDir();
5652
});
5753

5854
}
@@ -83,7 +79,7 @@ public void onLibsEmpty() {
8379
}
8480

8581
private void loadSourceLib() {
86-
for (int i = 0; i < 10; i++) {
82+
for (int i = 0; i < 1000; i++) {
8783
new Thread(new Runnable() {
8884
@Override
8985
public void run() {

app/src/main/res/layout/activity_main.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
android:background="#c7edcc"
2727
android:padding="10dp"
2828
android:text="缓存目录情况:"
29+
android:textSize="8dp"
2930
android:textColor="#333333"
3031
android:textStyle="normal" />
3132

file-plugin/src/main/kotlin/com/imf/plugin/so/Plugin.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,32 @@ abstract class SoFilePlugin : Plugin<Project> {
4747

4848
val osdetector = project.extensions.getByType(OsDetector::class.java)
4949

50+
//region 尝试查找 aar 里面的可执行文件
51+
val depAAR = project.dependencies.add(
52+
p7zConfig.name, mapOf(
53+
"group" to "com.github.mainlxl.Android-So-Handler",
54+
"name" to "p7z",
55+
"classifier" to "all",
56+
"version" to "1.0.1",
57+
"ext" to "aar"
58+
)
59+
)
60+
runCatching {
61+
val aar = p7zConfig.fileCollection(depAAR).singleFile
62+
ZipFile(aar).unzipTo(aar.parentFile)
63+
val file = aar.parentFile.listFiles()?.firstOrNull {
64+
it.name.contains(osdetector.classifier)
65+
} ?: throw FileNotFoundException()
66+
if (!file.canExecute() && !file.setExecutable(true)) {
67+
throw GradleException("Cannot set ${file} as executable")
68+
}
69+
return file.absolutePath
70+
}
71+
//endregion
72+
5073
val dep = project.dependencies.add(
5174
p7zConfig.name, mapOf<String, String>(
52-
"group" to "com.github.mainlxl.Android-So-Handler",
75+
"group" to "com.mainlxl.tools",
5376
"name" to "p7z",
5477
"classifier" to osdetector.classifier,
5578
"version" to "1.0.1",

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ android.useAndroidX=true
1919
android.enableJetifier=true
2020
ANDROID_GRADLE_VERSION=7.3.0
2121
#SO_PLUGIN_VERSION=0.0.4-SNAPSHOT
22-
SO_PLUGIN_VERSION=0.0.11
22+
SO_PLUGIN_VERSION=0.0.12
2323
userPlugin=true
2424
GROUP_ID=com.github.mainlxl.Android-So-Handler

jitpack.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
jdk:
22
- openjdk11
33
install:
4-
- sh uploadAllToMavenLocal.sh
4+
# - sh uploadAllToMavenLocal.sh
55

load-assets-7z/src/main/java/com/imf/so/assets/load/AssetsSoLoadBy7zFileManager.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.json.JSONObject;
1717

1818
import java.io.File;
19+
import java.util.Collections;
1920
import java.util.HashMap;
2021
import java.util.Map;
2122

@@ -27,11 +28,11 @@
2728
public class AssetsSoLoadBy7zFileManager {
2829
public final static String DIR_JNI_LIBS = "jniLibs";
2930
public final static String ASSETS_CONFIG_INFO_PATH = "jniLibs/info.json";
30-
private static Context sAppContext;
31-
private static File sSaveLibsDir;
32-
private static AbiSoFileConfigInfo sSoLoadInfo;
31+
private static volatile Context sAppContext;
32+
private static volatile File sSaveLibsDir;
33+
private static volatile AbiSoFileConfigInfo sSoLoadInfo;
3334

34-
private static final Map<String, Object> sLoadingLibraries = new HashMap<>();
35+
private static final Map<String, Object> sLoadingLibraries = Collections.synchronizedMap(new HashMap<>());
3536

3637
public static void setLogEnable(boolean enable) {
3738
LogUtil.setLogEnable(enable);

load-hook/src/main/java/com/imf/so/SoLoadHook.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
public class SoLoadHook {
99
private static volatile SoLoadProxy sSoLoadProxy = new DefaultSoLoadProxy();
1010

11-
public static void setSoLoadProxy(SoLoadProxy soLoadProxy) {
11+
public static synchronized void setSoLoadProxy(SoLoadProxy soLoadProxy) {
1212
if (soLoadProxy == null) {
1313
return;
1414
}
Binary file not shown.

maven/com/github/mainlxl/Android-So-Handler/android-un7z/0.0.11/android-un7z-0.0.11-sources.jar.md5

Lines changed: 0 additions & 1 deletion
This file was deleted.

maven/com/github/mainlxl/Android-So-Handler/android-un7z/0.0.11/android-un7z-0.0.11-sources.jar.sha1

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)