Merge branch 'master' into master

pull/1560/head
kunfei 3 years ago committed by GitHub
commit 0a67248763
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      app/src/main/assets/updateLog.md
  2. 2
      app/src/main/assets/web/rssSource/index.js
  3. 9
      app/src/main/java/io/legado/app/help/ReadBookConfig.kt
  4. 1
      app/src/main/java/io/legado/app/lib/theme/ThemeUtils.kt
  5. 12
      app/src/main/java/io/legado/app/service/HttpReadAloudService.kt
  6. 1
      app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
  7. 13
      app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt
  8. 7
      app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt
  9. 8
      app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt
  10. 1
      app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
  11. 28
      app/src/main/res/layout/dialog_read_bg_text.xml
  12. 31
      app/src/main/res/layout/view_book_page.xml
  13. 1
      app/src/main/res/values-es-rES/strings.xml
  14. 1
      app/src/main/res/values-ja-rJP/strings.xml
  15. 3
      app/src/main/res/values-pt-rBR/strings.xml
  16. 1
      app/src/main/res/values-zh-rHK/strings.xml
  17. 1
      app/src/main/res/values-zh-rTW/strings.xml
  18. 1
      app/src/main/res/values-zh/strings.xml
  19. 3
      app/src/main/res/values/strings.xml
  20. 2
      build.gradle
  21. 2
      gradle/wrapper/gradle-wrapper.properties

@ -11,6 +11,12 @@
* 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。 * 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。
* 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源!
**2022/01/26**
* 修复web写源订阅源保存失败bug
* http朗读下载错误连续5次后自动暂停
* 其它一些优化
**2022/01/20** **2022/01/20**
* 添加payAction规则,返回购买链接 * 添加payAction规则,返回购买链接

@ -84,7 +84,7 @@ function rule2json() {
RuleJSON.enabled = RuleJSON.enabled == '' || String(RuleJSON.enabled).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true'; RuleJSON.enabled = RuleJSON.enabled == '' || String(RuleJSON.enabled).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true';
RuleJSON.enableJs = RuleJSON.enableJs == '' || String(RuleJSON.enableJs).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true'; RuleJSON.enableJs = RuleJSON.enableJs == '' || String(RuleJSON.enableJs).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true';
RuleJSON.loadWithBaseUrl = RuleJSON.loadWithBaseUrl == '' || String(RuleJSON.loadWithBaseUrl).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true'; RuleJSON.loadWithBaseUrl = RuleJSON.loadWithBaseUrl == '' || String(RuleJSON.loadWithBaseUrl).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true';
RuleJSON.singleUrl = RuleJSON.singleUrl == '' || String(RuleJSON.singleUrl).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true'; RuleJSON.singleUrl = String(RuleJSON.singleUrl).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true';
return RuleJSON; return RuleJSON;
} }
// 将源对象填充到源表单 // 将源对象填充到源表单

@ -163,6 +163,12 @@ object ReadBookConfig {
val config get() = if (shareLayout) shareConfig else durConfig val config get() = if (shareLayout) shareConfig else durConfig
var bgAlpha: Int
get() = config.bgAlpha
set(value) {
config.bgAlpha = value
}
var pageAnim: Int var pageAnim: Int
get() = config.curPageAnim() get() = config.curPageAnim()
set(value) { set(value) {
@ -419,7 +425,8 @@ object ReadBookConfig {
var name: String = "", var name: String = "",
var bgStr: String = "#EEEEEE",//白天背景 var bgStr: String = "#EEEEEE",//白天背景
var bgStrNight: String = "#000000",//夜间背景 var bgStrNight: String = "#000000",//夜间背景
var bgStrEInk: String = "#FFFFFF", var bgStrEInk: String = "#FFFFFF",//EInk背景
var bgAlpha: Int = 100,//背景透明度
var bgType: Int = 0,//白天背景类型 0:颜色, 1:assets图片, 2其它图片 var bgType: Int = 0,//白天背景类型 0:颜色, 1:assets图片, 2其它图片
var bgTypeNight: Int = 0,//夜间背景类型 var bgTypeNight: Int = 0,//夜间背景类型
var bgTypeEInk: Int = 0, var bgTypeEInk: Int = 0,

@ -33,7 +33,6 @@ object ThemeUtils {
} }
} }
@JvmOverloads
fun resolveDrawable(context: Context, @AttrRes attr: Int): Drawable? { fun resolveDrawable(context: Context, @AttrRes attr: Int): Drawable? {
val a = context.theme.obtainStyledAttributes(intArrayOf(attr)) val a = context.theme.obtainStyledAttributes(intArrayOf(attr))
return try { return try {

@ -180,22 +180,26 @@ class HttpReadAloudService : BaseReadAloudService(),
is SocketTimeoutException, is ConnectException -> { is SocketTimeoutException, is ConnectException -> {
removeSpeakCache(fileName) removeSpeakCache(fileName)
downloadErrorNo++ downloadErrorNo++
if (playErrorNo > 5) { if (downloadErrorNo > 5) {
downloadErrorNo = 0
createSilentSound(fileName)
val msg = "tts超时或连接错误超过5次\n${it.localizedMessage}" val msg = "tts超时或连接错误超过5次\n${it.localizedMessage}"
AppLog.put(msg, it) AppLog.put(msg, it)
toastOnUi(msg) toastOnUi(msg)
pauseReadAloud(true)
} else { } else {
downloadAudio() downloadAudio()
} }
} }
else -> { else -> {
removeSpeakCache(fileName) removeSpeakCache(fileName)
createSilentSound(fileName) downloadErrorNo++
val msg = "tts下载错误\n${it.localizedMessage}" val msg = "tts下载错误\n${it.localizedMessage}"
AppLog.put(msg, it) AppLog.put(msg, it)
Timber.e(it) Timber.e(it)
if (downloadErrorNo > 5) {
pauseReadAloud(true)
} else {
createSilentSound(fileName)
}
} }
} }
} }

@ -1005,6 +1005,7 @@ class ReadBookActivity : BaseReadBookActivity(),
upSystemUiVisibility() upSystemUiVisibility()
readView.upBg() readView.upBg()
readView.upStyle() readView.upStyle()
readView.upBgAlpha()
if (it) { if (it) {
ReadBook.loadContent(resetPageOffset = false) ReadBook.loadContent(resetPageOffset = false)
} else { } else {

@ -9,6 +9,7 @@ import android.view.Gravity
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager import android.view.WindowManager
import android.widget.SeekBar
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import com.jaredrummler.android.colorpicker.ColorPickerDialog import com.jaredrummler.android.colorpicker.ColorPickerDialog
import io.legado.app.R import io.legado.app.R
@ -29,6 +30,7 @@ import io.legado.app.lib.theme.getPrimaryTextColor
import io.legado.app.lib.theme.getSecondaryTextColor import io.legado.app.lib.theme.getSecondaryTextColor
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.document.HandleFileContract import io.legado.app.ui.document.HandleFileContract
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
import io.legado.app.utils.* import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import timber.log.Timber import timber.log.Timber
@ -108,6 +110,7 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
ivImport.setColorFilter(primaryTextColor) ivImport.setColorFilter(primaryTextColor)
ivExport.setColorFilter(primaryTextColor) ivExport.setColorFilter(primaryTextColor)
ivDelete.setColorFilter(primaryTextColor) ivDelete.setColorFilter(primaryTextColor)
tvBgAlpha.setTextColor(primaryTextColor)
tvBgImage.setTextColor(primaryTextColor) tvBgImage.setTextColor(primaryTextColor)
recyclerView.adapter = adapter recyclerView.adapter = adapter
adapter.addHeaderView { adapter.addHeaderView {
@ -130,6 +133,7 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
private fun initData() = with(ReadBookConfig.durConfig) { private fun initData() = with(ReadBookConfig.durConfig) {
binding.tvName.text = name.ifBlank { "文字" } binding.tvName.text = name.ifBlank { "文字" }
binding.swDarkStatusIcon.isChecked = curStatusIconDark() binding.swDarkStatusIcon.isChecked = curStatusIconDark()
binding.sbBgAlpha.progress = bgAlpha
} }
@SuppressLint("InflateParams") @SuppressLint("InflateParams")
@ -205,6 +209,15 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) {
toastOnUi("数量已是最少,不能删除.") toastOnUi("数量已是最少,不能删除.")
} }
} }
binding.sbBgAlpha.setOnSeekBarChangeListener(object : SeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
ReadBookConfig.bgAlpha = progress
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
postEvent(EventBus.UP_CONFIG, false)
}
})
} }
@Suppress("BlockingMethodInNonBlockingContext") @Suppress("BlockingMethodInNonBlockingContext")

@ -185,7 +185,12 @@ class PageView(context: Context) : FrameLayout(context) {
} }
fun setBg(bg: Drawable?) { fun setBg(bg: Drawable?) {
binding.pagePanel.background = bg binding.vwBg.background = bg
upBgAlpha()
}
fun upBgAlpha() {
binding.vwBg.alpha = ReadBookConfig.bgAlpha / 100f
} }
fun upTime() { fun upTime() {

@ -104,7 +104,7 @@ class ReadView(context: Context, attrs: AttributeSet) :
} }
} }
fun setRect9x() { private fun setRect9x() {
tlRect.set(0f, 0f, width * 0.33f, height * 0.33f) tlRect.set(0f, 0f, width * 0.33f, height * 0.33f)
tcRect.set(width * 0.33f, 0f, width * 0.66f, height * 0.33f) tcRect.set(width * 0.33f, 0f, width * 0.66f, height * 0.33f)
trRect.set(width * 0.36f, 0f, width.toFloat(), height * 0.33f) trRect.set(width * 0.36f, 0f, width.toFloat(), height * 0.33f)
@ -534,6 +534,12 @@ class ReadView(context: Context, attrs: AttributeSet) :
nextPage.setBg(ReadBookConfig.bg) nextPage.setBg(ReadBookConfig.bg)
} }
fun upBgAlpha() {
curPage.upBgAlpha()
prevPage.upBgAlpha()
nextPage.upBgAlpha()
}
fun upTime() { fun upTime() {
curPage.upTime() curPage.upTime()
prevPage.upTime() prevPage.upTime()

@ -30,7 +30,6 @@ import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext

@ -12,8 +12,8 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="6dp" android:gravity="center_vertical"
android:gravity="center_vertical"> android:padding="6dp">
<TextView <TextView
android:id="@+id/tv_name_title" android:id="@+id/tv_name_title"
@ -36,9 +36,9 @@
android:id="@+id/iv_edit" android:id="@+id/iv_edit"
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
android:contentDescription="@string/edit"
android:src="@drawable/ic_edit" android:src="@drawable/ic_edit"
app:tint="@color/secondaryText" app:tint="@color/secondaryText" />
android:contentDescription="@string/edit" />
<Space <Space
android:layout_width="0dp" android:layout_width="0dp"
@ -59,7 +59,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="6dp" android:padding="6dp"
android:text="@string/dark_status_icon" /> android:text="@string/dark_status_icon"
tools:ignore="TouchTargetSizeCheck" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -140,6 +141,23 @@
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/tv_bg_alpha"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:text="@string/bg_alpha" />
<io.legado.app.lib.theme.view.ThemeSeekBar
android:id="@+id/sb_bg_alpha"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:min="10"
android:max="100"
android:padding="6dp"
tools:ignore="UnusedAttribute" />
<TextView <TextView
android:id="@+id/tv_bg_image" android:id="@+id/tv_bg_image"
android:layout_width="match_parent" android:layout_width="match_parent"

@ -1,22 +1,30 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/page_panel" android:background="@color/background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<View
android:id="@+id/vw_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<FrameLayout <FrameLayout
android:id="@+id/vw_status_bar" android:id="@+id/vw_status_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ll_header" android:id="@+id/ll_header"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical"> android:gravity="center_vertical"
app:layout_constraintTop_toBottomOf="@id/vw_status_bar">
<io.legado.app.ui.widget.BatteryView <io.legado.app.ui.widget.BatteryView
android:id="@+id/tv_header_left" android:id="@+id/tv_header_left"
@ -75,26 +83,31 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0.5dp" android:layout_height="0.5dp"
android:background="@color/divider" android:background="@color/divider"
android:visibility="invisible" /> android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@id/ll_header"/>
<io.legado.app.ui.book.read.page.ContentTextView <io.legado.app.ui.book.read.page.ContentTextView
android:id="@+id/content_text_view" android:id="@+id/content_text_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" /> android:layout_weight="1"
app:layout_constraintTop_toBottomOf="@id/vw_top_divider"
app:layout_constraintBottom_toTopOf="@id/vw_bottom_divider"/>
<View <View
android:id="@+id/vw_bottom_divider" android:id="@+id/vw_bottom_divider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0.5dp" android:layout_height="0.5dp"
android:background="@color/divider" android:background="@color/divider"
android:visibility="invisible" /> android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@id/ll_footer"/>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ll_footer" android:id="@+id/ll_footer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical"> android:gravity="center_vertical"
app:layout_constraintBottom_toBottomOf="parent">
<io.legado.app.ui.widget.BatteryView <io.legado.app.ui.widget.BatteryView
android:id="@+id/tv_footer_left" android:id="@+id/tv_footer_left"
@ -148,4 +161,4 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -913,5 +913,6 @@
<string name="expand_text_menu">展开文本选择菜单</string> <string name="expand_text_menu">展开文本选择菜单</string>
<string name="book_tree_uri_t">书籍保存位置</string> <string name="book_tree_uri_t">书籍保存位置</string>
<string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string> <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
<string name="bg_alpha">背景透明度</string>
</resources> </resources>

@ -916,5 +916,6 @@
<string name="expand_text_menu">展开文本选择菜单</string> <string name="expand_text_menu">展开文本选择菜单</string>
<string name="book_tree_uri_t">书籍保存位置</string> <string name="book_tree_uri_t">书籍保存位置</string>
<string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string> <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
<string name="bg_alpha">背景透明度</string>
</resources> </resources>

@ -418,6 +418,7 @@
<string name="rule_chapter_list">目录列表规则(capítuloLista)</string> <string name="rule_chapter_list">目录列表规则(capítuloLista)</string>
<string name="rule_chapter_name">章节名称规则(capítuloNome)</string> <string name="rule_chapter_name">章节名称规则(capítuloNome)</string>
<string name="rule_chapter_url">章节URL规则(capítuloUrl)</string> <string name="rule_chapter_url">章节URL规则(capítuloUrl)</string>
<string name="rule_is_volume">卷标识(isVolume)</string>
<string name="rule_is_vip">VIP标识(éVip)</string> <string name="rule_is_vip">VIP标识(éVip)</string>
<string name="rule_update_time">更新时间(capítuloInfo)</string> <string name="rule_update_time">更新时间(capítuloInfo)</string>
<string name="rule_book_content">正文规则(conteúdo)</string> <string name="rule_book_content">正文规则(conteúdo)</string>
@ -426,6 +427,7 @@
<string name="rule_source_regex">资源正则(fonteRegex)</string> <string name="rule_source_regex">资源正则(fonteRegex)</string>
<string name="rule_replace_regex">替换规则(substRegex)</string> <string name="rule_replace_regex">替换规则(substRegex)</string>
<string name="rule_image_style">图片样式(imagemFormato)</string> <string name="rule_image_style">图片样式(imagemFormato)</string>
<string name="rule_pay_action">购买操作(payAction)</string>
<string name="source_icon">图标(fonteÍcone)</string> <string name="source_icon">图标(fonteÍcone)</string>
<string name="r_articles">列表规则(regrasArtigos)</string> <string name="r_articles">列表规则(regrasArtigos)</string>
@ -914,5 +916,6 @@
<string name="expand_text_menu">展开文本选择菜单</string> <string name="expand_text_menu">展开文本选择菜单</string>
<string name="book_tree_uri_t">书籍保存位置</string> <string name="book_tree_uri_t">书籍保存位置</string>
<string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string> <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
<string name="bg_alpha">背景透明度</string>
</resources> </resources>

@ -913,5 +913,6 @@
<string name="expand_text_menu">展开文本选择菜单</string> <string name="expand_text_menu">展开文本选择菜单</string>
<string name="book_tree_uri_t">书籍保存位置</string> <string name="book_tree_uri_t">书籍保存位置</string>
<string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string> <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
<string name="bg_alpha">背景透明度</string>
</resources> </resources>

@ -915,5 +915,6 @@
<string name="search_content_size">搜尋結果</string> <string name="search_content_size">搜尋結果</string>
<string name="book_tree_uri_t">書籍儲存位置</string> <string name="book_tree_uri_t">書籍儲存位置</string>
<string name="book_tree_uri_s">從其它應用程式打開的書籍儲存位置</string> <string name="book_tree_uri_s">從其它應用程式打開的書籍儲存位置</string>
<string name="bg_alpha">背景透明度</string>
</resources> </resources>

@ -915,5 +915,6 @@
<string name="expand_text_menu">展开文本选择菜单</string> <string name="expand_text_menu">展开文本选择菜单</string>
<string name="book_tree_uri_t">书籍保存位置</string> <string name="book_tree_uri_t">书籍保存位置</string>
<string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string> <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
<string name="bg_alpha">背景透明度</string>
</resources> </resources>

@ -418,7 +418,7 @@
<string name="rule_chapter_list">目录列表规则(chapterList)</string> <string name="rule_chapter_list">目录列表规则(chapterList)</string>
<string name="rule_chapter_name">章节名称规则(ChapterName)</string> <string name="rule_chapter_name">章节名称规则(ChapterName)</string>
<string name="rule_chapter_url">章节URL规则(chapterUrl)</string> <string name="rule_chapter_url">章节URL规则(chapterUrl)</string>
<string name="rule_is_volume">Volume标识(isVolume)</string> <string name="rule_is_volume">标识(isVolume)</string>
<string name="rule_is_vip">VIP标识(isVip)</string> <string name="rule_is_vip">VIP标识(isVip)</string>
<string name="rule_update_time">更新时间(ChapterInfo)</string> <string name="rule_update_time">更新时间(ChapterInfo)</string>
<string name="rule_book_content">正文规则(content)</string> <string name="rule_book_content">正文规则(content)</string>
@ -919,6 +919,7 @@
<string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string> <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
<string name="select_book_folder">选择保存书籍的文件夹</string> <string name="select_book_folder">选择保存书籍的文件夹</string>
<string name="user_agent">用户代理</string> <string name="user_agent">用户代理</string>
<string name="bg_alpha">背景透明度</string>
<!-- check source config string --> <!-- check source config string -->
<string name="check_source_config">校验设置</string> <string name="check_source_config">校验设置</string>

@ -13,7 +13,7 @@ buildscript {
//maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } //maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.0.4' classpath 'com.android.tools.build:gradle:7.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'de.timfreiheit.resourceplaceholders:placeholders:0.4' classpath 'de.timfreiheit.resourceplaceholders:placeholders:0.4'
classpath 'de.undercouch:gradle-download-task:4.1.2' classpath 'de.undercouch:gradle-download-task:4.1.2'

@ -1,6 +1,6 @@
#Fri May 07 15:24:46 CST 2021 #Fri May 07 15:24:46 CST 2021
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

Loading…
Cancel
Save