-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #10 from wukaicheng/main
一些新功能
- Loading branch information
Showing
21 changed files
with
646 additions
and
176 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package top.niunaijun.blackboxa.app | ||
|
||
import android.annotation.SuppressLint | ||
import android.app.Application | ||
import android.content.Context | ||
import com.umeng.commonsdk.UMConfigure | ||
import top.niunaijun.blackdex.app.AppManager | ||
|
||
/** | ||
* | ||
* @Description: | ||
* @Author: wukaicheng | ||
* @CreateDate: 2021/4/29 21:21 | ||
*/ | ||
class App : Application() { | ||
|
||
companion object { | ||
|
||
@SuppressLint("StaticFieldLeak") | ||
@Volatile | ||
private lateinit var mContext: Context | ||
|
||
@JvmStatic | ||
fun getContext(): Context { | ||
return mContext | ||
} | ||
} | ||
|
||
override fun attachBaseContext(base: Context?) { | ||
super.attachBaseContext(base) | ||
mContext = base!! | ||
UMConfigure.init(base, "60b373136c421a3d97d23c29", "Github", 0, "") | ||
AppManager.doAttachBaseContext(base) | ||
} | ||
|
||
override fun onCreate() { | ||
super.onCreate() | ||
AppManager.doOnCreate(mContext) | ||
} | ||
} |
26 changes: 26 additions & 0 deletions
26
app/src/main/java/top/niunaijun/blackdex/app/AppManager.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package top.niunaijun.blackdex.app | ||
|
||
import android.content.Context | ||
|
||
object AppManager { | ||
@JvmStatic | ||
val mBlackBoxLoader by lazy { | ||
BlackDexLoader() | ||
} | ||
|
||
fun doAttachBaseContext(context: Context) { | ||
try { | ||
mBlackBoxLoader.attachBaseContext(context) | ||
mBlackBoxLoader.addLifecycleCallback() | ||
} catch (e: Exception) { | ||
e.printStackTrace() | ||
} | ||
} | ||
|
||
fun doOnCreate(context: Context) { | ||
mBlackBoxLoader.doOnCreate(context) | ||
initThirdService(context) | ||
} | ||
|
||
private fun initThirdService(context: Context) {} | ||
} |
87 changes: 87 additions & 0 deletions
87
app/src/main/java/top/niunaijun/blackdex/app/BlackDexLoader.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
package top.niunaijun.blackdex.app | ||
|
||
import android.content.Context | ||
import top.niunaijun.blackbox.BlackDexCore | ||
import top.niunaijun.blackbox.app.configuration.ClientConfiguration | ||
import top.niunaijun.blackbox.utils.FileUtils | ||
import top.niunaijun.blackbox.utils.compat.BuildCompat | ||
import top.niunaijun.blackboxa.app.App | ||
import top.niunaijun.blackdex.biz.cache.AppSharedPreferenceDelegate | ||
import java.io.File | ||
|
||
/** | ||
* | ||
* @Description: | ||
* @Author: wukaicheng | ||
* @CreateDate: 2021/5/6 23:38 | ||
*/ | ||
class BlackDexLoader { | ||
|
||
|
||
private var mSavePath by AppSharedPreferenceDelegate(App.getContext(), "") | ||
|
||
private var mSaveEnable by AppSharedPreferenceDelegate(App.getContext(), true) | ||
|
||
private var mDir = if (mSaveEnable) { | ||
getDexDumpDir(App.getContext()) | ||
} else { | ||
mSavePath | ||
} | ||
|
||
fun addLifecycleCallback() { | ||
|
||
} | ||
|
||
fun attachBaseContext(context: Context) { | ||
BlackDexCore.get().doAttachBaseContext(context, object : ClientConfiguration() { | ||
override fun getHostPackageName(): String { | ||
return context.packageName | ||
} | ||
|
||
override fun getDexDumpDir(): String { | ||
return mDir | ||
} | ||
}) | ||
} | ||
|
||
fun doOnCreate(context: Context) { | ||
BlackDexCore.get().doCreate() | ||
} | ||
|
||
fun saveEnable(): Boolean { | ||
return mSaveEnable | ||
} | ||
|
||
fun saveEnable(state: Boolean) { | ||
this.mSaveEnable = state | ||
} | ||
|
||
fun getSavePath(): String { | ||
return mSavePath | ||
} | ||
|
||
fun setSavePath(path: String) { | ||
this.mSavePath = path | ||
} | ||
|
||
|
||
companion object { | ||
|
||
val TAG: String = BlackDexLoader::class.java.simpleName | ||
|
||
fun getDexDumpDir(context: Context): String { | ||
return if (BuildCompat.isR()) { | ||
val dump = File( | ||
context.externalCacheDir?.parentFile?.parentFile?.parentFile?.parentFile, | ||
"Download/dexDump" | ||
) | ||
FileUtils.mkdirs(dump) | ||
dump.absolutePath | ||
} else { | ||
val dump = File(context.externalCacheDir?.parentFile, "dump") | ||
FileUtils.mkdirs(dump) | ||
dump.absolutePath | ||
} | ||
} | ||
} | ||
} |
67 changes: 67 additions & 0 deletions
67
app/src/main/java/top/niunaijun/blackdex/biz/cache/AppSharedPreferenceDelegate.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package top.niunaijun.blackdex.biz.cache | ||
|
||
|
||
import android.content.Context | ||
import android.text.TextUtils | ||
import androidx.core.content.edit | ||
import kotlin.properties.ReadWriteProperty | ||
import kotlin.reflect.KProperty | ||
|
||
|
||
/** | ||
* | ||
* @desc:目前只支持 5种基本数据类型,如果要支持obj,请继承该类并重写他的相关方法 findData/putData | ||
* | ||
* @author: mini | ||
* @created by 2021/5/10 | ||
*/ | ||
open class AppSharedPreferenceDelegate<Data>(context: Context, private val default: Data, spName: String? = null) : ReadWriteProperty<Any, Data?> { | ||
|
||
private val mSharedPreferences by lazy { | ||
val tmpCacheName = if (TextUtils.isEmpty(spName)) { | ||
AppSharedPreferenceDelegate::class.java.simpleName | ||
} else { | ||
spName | ||
} | ||
return@lazy context.getSharedPreferences(tmpCacheName, Context.MODE_PRIVATE) | ||
} | ||
|
||
override fun getValue(thisRef: Any, property: KProperty<*>): Data { | ||
return findData(property.name, default) | ||
} | ||
|
||
override fun setValue(thisRef: Any, property: KProperty<*>, value: Data?) { | ||
putData(property.name, value) | ||
} | ||
|
||
protected fun findData(key: String, default: Data): Data { | ||
with(mSharedPreferences) { | ||
val result: Any? = when (default) { | ||
is Int -> getInt(key, default) | ||
is Long -> getLong(key, default) | ||
is Float -> getFloat(key, default) | ||
is String -> getString(key, default) | ||
is Boolean -> getBoolean(key, default) | ||
else -> throw IllegalArgumentException("This type $default can not be saved into sharedPreferences") | ||
} | ||
return result as? Data ?: default | ||
} | ||
} | ||
|
||
protected fun putData(key: String, value: Data?) { | ||
mSharedPreferences.edit { | ||
if (value == null) { | ||
remove(key) | ||
} else { | ||
when (value) { | ||
is Int -> putInt(key, value) | ||
is Long -> putLong(key, value) | ||
is Float -> putFloat(key, value) | ||
is String -> putString(key, value) | ||
is Boolean -> putBoolean(key, value) | ||
else -> throw IllegalArgumentException("This type $default can not be saved into Preferences") | ||
} | ||
} | ||
} | ||
} | ||
} |
41 changes: 0 additions & 41 deletions
41
app/src/main/java/top/niunaijun/blackdex/data/BlackDexConfiguration.kt
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.