我正在我的应用程序上尝试新的MultiDex支持,到目前为止我已经设法正确编译我的应用程序,但在运行它时,我得到以下异常:
java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me..main-2, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4382)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me.myapp.main-2, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newApplication(Instrumentation.java:998)
at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
Run Code Online (Sandbox Code Playgroud)
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion …Run Code Online (Sandbox Code Playgroud) 我想为我的调试/发布构建变体保留不同的配置,但显然,google-services.json文件只允许一个.还有其他选择吗?有没有办法保存几个文件?
我绝对是SQL的菜鸟,我一直在用Postgresql中的以下表结构编写一个复杂的查询:
CREATE TABLE reports
(
reportid character varying(20) NOT NULL,
userid integer NOT NULL,
reporttype character varying(40) NOT NULL,
)
CREATE TABLE users
(
userid serial NOT NULL,
username character varying(20) NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)
查询的目标是获取每个用户的报告类型数量并将其显示在一列中.有三种不同类型的报告.
使用group-by的简单查询将解决问题,但将其显示在不同的行中:
select count(*) as Amount,
u.username,
r.reporttype
from reports r,
users u
where r.userid=u.userid
group by u.username,r.reporttype
order by u.username
Run Code Online (Sandbox Code Playgroud) 是否可以执行运行时检查以查看设备是否正在运行Android-Things?
我正试图从这样的远程蓝牙设备中取出UUIDS:
device.fetchUuidsWithSdp();
Run Code Online (Sandbox Code Playgroud)
这将在所有设备上静默工作,无需用户交互,除了那些使用Android 6.0的设备明显要求配对对话框连接远程设备以获取UUID.这是预期的行为吗?这记录在哪里?有没有办法触发UUID发现而不必明确地从另一端允许它?
我的应用程序在使用Android 6.0或Android 7.0的设备时正在构建并运行正常,但在运行任何带有Android 5.1的设备(未测试较低)时,它会失败并出现以下异常:
09-06 11:50:46.100 29601-29601/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: me.myapp.main, PID: 29601
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzab;
at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5084)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4679)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4619)
at android.app.ActivityThread.access$1500(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzab" on path: DexPathList[[zip file "/data/app/me.myapp.main-1/base.apk"],nativeLibraryDirectories=[/data/app/me.myapp.main-1/lib/arm, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5084)
at …Run Code Online (Sandbox Code Playgroud) 我需要找到一种在生成文件下载后执行页面导航的方法.到目前为止,我已经准备好了文件下载和工作:
FileInputStream stream = new FileInputStream(file);
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
ec.responseReset();
ec.setResponseContentType("application/octet-stream");
ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
OutputStream out = ec.getResponseOutputStream();
byte[] outputByte = new byte[4096];
while(stream.read(outputByte, 0, 4096) != -1)
{
out.write(outputByte, 0, 4096);
}
stream.close();
out.flush();
out.close();
fc.responseComplete();
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试从ExternalContext重定向,但我得到一个IllegalStateException.
ec.redirect(url)
Run Code Online (Sandbox Code Playgroud)
我还尝试将所有以前的代码包装在一个字符串方法中,该方法返回最后要导航的页面.那也行不通.
有什么建议?
我正在尝试使用Kotlin对Architecture Component的实时数据进行基本实现,如下所示:
class MarketFragment : LifecycleFragment(){
......
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel=ViewModelProviders.of(this).get(MarketViewModel::class.java)
viewModel.book?.observe(this, Observer { book-> //updateUI })
....
Run Code Online (Sandbox Code Playgroud)
我的ViewModel类是这样创建的:
class MarketViewModel : ViewModel()
{
var book: MutableLiveData<Book>? =MutableLiveData()
var repository: Repository?= Repository()
init {
update("parameter")
}
fun update(s: String)
{
book=repository?.getBook(s)
}
}
Run Code Online (Sandbox Code Playgroud)
和我的存储库:
fun getBook(bookSymbol:String):MutableLiveData<Book>
{
val book=MutableLiveData<Book>()
......
call . enqueue (object : Callback<Book> {
override fun onResponse(call: Call<Book>?, response: Response<Book>?) {
book.value=response?.body()
}
.....
})
return book
}
Run Code Online (Sandbox Code Playgroud)
}
所有这些都很有效,UI应该更新,但只是第一次.如果我尝试进行手动调用以从UI操作更新viewModel,则改装调用仍然按预期工作,但新数据不会发送到片段中的Observer:
//this doesn't work:
viewModel.update("string") …Run Code Online (Sandbox Code Playgroud) android kotlin android-livedata android-architecture-components
android ×5
android-architecture-components ×1
bluetooth ×1
dex ×1
download ×1
gradle ×1
group-by ×1
jsf ×1
kotlin ×1
navigation ×1
postgresql ×1
sql ×1
subquery ×1