build.gradle(应用程序)
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.todolistapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// Room
def room_version = "2.0.0"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
// ViewModel and LiveData
def lifecycle_version = "2.0.0"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
// For Floating Action Button
implementation 'com.google.android.material:material:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
从依赖关系中可以看到,我没有导入回收视图Androidx库。
androidx.recyclerview:recyclerview:1.0.0
但是如下所示,我可以在布局(activity_main.xml)和MainActivity代码中轻松使用它。
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 大约34小时前我生成了一个签名的apk但现在,我一直无法生成签名的Apk,我不知道如何解决这个问题.请帮忙
这是我的输出消息
错误:注意:有11个重复的类定义.(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)FAILURE:构建因异常而失败.
出了什么问题:任务执行失败':app:lintVitalRelease'.
无法解析配置':app:lintClassPath'的所有文件.无法解析com.android.tools.lint:lint-gradle:26.1.0.要求:project:app无法解析com.android.tools.lint:lint-gradle:26.1.0.无法获得资源' https://jcenter.bintray.com/com/android/tools/lint/lint-gradle/26.1.0/lint-gradle-26.1.0.pom '.无法获取' https://jcenter.bintray.com/com/android/tools/lint/lint-gradle/26.1.0/lint-gradle-26.1.0.pom '.jcenter.bintray.com:提供了nodename或servname,或者未知无法解析com.android.tools.lint:lint-gradle:26.1.0.无法获取资源' https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.1.0/lint-gradle-26.1.0.pom '.无法获取" https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.1.0/lint-gradle-26.1.0.pom ".dl.google.com:提供了nodename或servname,或者未知
尝试:使用--stacktrace选项运行以获取堆栈跟踪.使用--info或--debug选项运行以获取更多日志输出.使用--scan运行以获得完整的见解.
在https://help.gradle.org获取更多帮助
在10s内建立失败
这是我的build.gradle(app)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'io.fabric'
android {
compileSdkVersion 26
buildToolsVersion '27.0.3'
defaultConfig {
applicationId "com.myapp……"
minSdkVersion 17
targetSdkVersion 26
versionCode 5
versionName "5.0"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "com.android.support:appcompat-v7:$support_version"
implementation …Run Code Online (Sandbox Code Playgroud) 我有一个独特的按钮,位于 4 个不同的片段中。这些独特的按钮在所有这些片段中执行类似的操作,但进行了一些调整。
由于所有这些事情都很相似,我将它们记录在事件名称“unique_btn_click_event”下
val eventName = "unique_btn_click_event"
val eventBundle = Bundle()
eventBundle.putString("fragment_name", fragmentName)
eventBundle.putString("unique_stuff_1", uniqueStuff1)
eventBundle.putString("unique_stuff_2", uniqueStuff2)
eventBundle.putString("qty_selected", quantity)
FirebaseAnalytics.getInstance(context).logEvent(eventName, eventBundle)
Run Code Online (Sandbox Code Playgroud)
我的目标是测量哪个片段最常使用唯一按钮,以便我可以针对该片段进行优化,并可能弃用其他片段。
虽然事件unique_btn_click_event被记录,但我看不到我记录的捆绑参数的历史记录。我单击fab_actions事件:
在出现的下一页中,我没有地方可以查看这些捆绑包,即使按计数也是如此。
我得到的最接近的是:StreamView:它旨在仅显示实时捆绑数据。实时很酷,但它不能用来做出高质量的决策。
我单击“流视图”。
我点击“趋势”,然后点击“事件”
我看到实时捆绑日志数据列表。
我如何查看日志历史记录的操作计数。
我如何嵌套事件。
我有一个 ActionMode 的实现来显示 RecyclerView 中多选项目的数量。
我想知道何时点击actionMode中的后退按钮以便相应地重置recyclerView,但是在实现ActionMode.Callback时,我注意到每当ActionMode更新时都会调用onDestroyActionMode actionMode?.setTitle($selectedItems.size),这使得无法重置recyclerView - 删除选定的项目,删除覆盖颜色并通知 recyclerview 数据集已更改。

这是我的回调
inner class ActionModeCallback : ActionMode.Callback {
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
when (item?.getItemId()) {
R.id.action_delete -> {
myAdapter?.deleteSelectedIds()
actionMode?.setTitle("") //remove item count from action mode.
actionMode?.finish()
return true
}
}
return false
}
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
val inflater = mode?.getMenuInflater()
inflater?.inflate(R.menu.action_mode_menu, menu)
return true
}
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
menu?.findItem(R.id.action_delete)?.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
return true
}
override fun …Run Code Online (Sandbox Code Playgroud) 这与如何检查服务是否在Android上运行类似的问题?但是由于该问题较旧且提供的答案已被弃用或无法正常使用。因此是单独的问题。
我有一个实现,可以在启动完成时启动服务,但是我也想在MainActivity的onCreate中启动该服务,以防该服务之前未启动。
这是我尝试过的
1.提取静态布尔值以获取服务状态,如下所示。
MyService.kt
class MyService : Service() {
override fun onCreate() {
super.onCreate()
isServiceStarted = true
}
override fun onDestroy() {
super.onDestroy()
isServiceStarted = false
}
companion object {
var isServiceStarted = false
}
}
Run Code Online (Sandbox Code Playgroud)
MainActivity.kt
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val serviceStarted = MyService.isServiceStarted
if (!serviceStarted) {
val startMyService = Intent(this, MyService::class.java)
ContextCompat.startForegroundService(this, startMyService)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我很快发现,onDestroy销毁服务时并不总是调用此方法,从而使我的静态布尔变量(isServiceStarted)为真,而实际上却已被销毁。
2.检查功能
fun isMyServiceRunning(serviceClass : Class<*> ) : …Run Code Online (Sandbox Code Playgroud)