小编use*_*225的帖子

在我的情况下,System.loadLibrary(...)找不到本机库

我想使用来自另一个 Android项目的现有本机库,所以我只是将NDK构建库(libcalculate.so)复制到我的新Android项目中.在我的新Android项目中,我创建了一个文件夹libs/armeabi/并将libcalculate.so放在那里.有没有 JNI /文件夹.我的测试设备有ARM架构.

在我的java代码中,我通过以下方式加载库:

  static{
    System.loadLibrary("calculate");
  }
Run Code Online (Sandbox Code Playgroud)

当我运行我的新Android项目时,我收到错误:

java.lang.UnsatisfiedLinkError:  ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
Run Code Online (Sandbox Code Playgroud)

所以,正如错误所说,复制的本机库不在/ verdor/lib或/ system/lib中,如何在我的情况下解决这个问题?

(我解压缩了apk包,在lib /下有libcalculate.so)

==== UPDATE =====

我还尝试在项目根目录下创建一个jni /文件夹,并在jni /下添加一个Android.mk文件.Android.mk的内容是:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := libcalculate
LOCAL_SRC_FILES := libcalculate.so
include $(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

然后,在项目根目录下,我执行了ndk-build.之后,armeabi /和armeabi-v7a /目录由ndk-build生成(文件夹中有libcalculate.so).

然后我运行我的maven成功构建项目.在最终的apk包中,有:

lib/armeabi/libcalculate.so
lib/armeabi-v7a/libcalculate.so
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的应用程序时,同样的错误抛出:

java.lang.UnsatisfiedLinkError:  ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
Run Code Online (Sandbox Code Playgroud)

android android-ndk

80
推荐指数
8
解决办法
11万
查看次数

使用 viewLifecycleOwner 作为 LifecycleOwner

我有一个片段:

class MyFragment : BaseFragment() {

   // my StudentsViewModel instance
   lateinit var viewModel: StudentsViewModel

   override fun onCreateView(...){
        ...
   }

   override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
       super.onViewCreated(view, savedInstanceState)

       viewModel = ViewModelProviders.of(this).get(StudentsViewModel::class.java)
       updateStudentList()
   }

   fun updateStudentList() {
        // Compiler error on 'this': Use viewLifecycleOwner as the LifecycleOwner
        viewModel.students.observe(this, Observer {
            //TODO: populate recycler view
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的片段中,我有一个 StudentsViewModel 的实例,它在onViewCreated(...).

在,StudentsViewModelstudents是一个LiveData

class StudentsViewModel : ViewModel() {
    val students = liveData(Dispatchers.IO) {
          ...
    } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-livedata android-viewmodel

49
推荐指数
2
解决办法
2万
查看次数

在objective-c中导入swift类,找不到<myModule> -Swift.h文件

我有一个用Objective-C编写的iOS项目.我在项目中创建了一个Swift类,成功生成了用于访问Swift中的objective-c的桥接头文件,并且它工作正常.

我的问题是另一种方式.我想在objective-c代码中导入Swift类.

在xcode,target - > Build Settings - > Swift Compiler部分,我看到Objective-C Generated Interface Header Name带有值的字段myModule-Swift.h,但是当我在objective-c类中导入这个头时:

#import "myModule-Swift.h"
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

myModule-Swift.h file not found
Run Code Online (Sandbox Code Playgroud)

在项目中,我也找不到这个文件.我怎么解决这个问题?

我的xcode版本是6.4

xcode objective-c ios swift

39
推荐指数
4
解决办法
4万
查看次数

枚举常量特定的类体是静态的还是非静态的?

我有一个枚举类型:

public enum Operation {
    PLUS() {
        @Override
        double apply(double x, double y) {       
            // ERROR: Cannot make a static reference
            // to the non-static method printMe()...
            printMe(x);
            return x + y;
        }
    };

    private void printMe(double val) {
        System.out.println("val = " + val);
    }

    abstract double apply(double x, double y);
}
Run Code Online (Sandbox Code Playgroud)

如上所述,我定义了一种enum有价值的类型PLUS.它包含一个不变的特定体.在它的正文中,我试着打电话 printMe(val);,但我得到了编译错误:

无法对非静态方法printMe()进行静态引用.

为什么我会收到此错误?我的意思是我在PLUS体内覆盖了抽象方法.为什么它在static范围内?如何摆脱它?

我知道添加一个static关键字来printMe(){...}解决问题,但我有兴趣知道如果我想保持printMe()非静态是否还有其他方法?


另一个问题,与上面的问题非常类似,但这次错误消息反过来说,即PLUS(){...}具有非静态上下文:

public enum Operation {
    PLUS() …
Run Code Online (Sandbox Code Playgroud)

java enums static anonymous-inner-class

33
推荐指数
4
解决办法
2343
查看次数

在 docker-compose.yaml 中定义卷

我正在docker-compose.yaml为我的项目编写一个文件。我已经检查了这里的卷文档。

我还了解 docker 中的概念volume,即我可以安装卷,例如主机上的目录在 -v my-data/:/var/lib/db哪里,而数据库容器内的路径在哪里。my-data//var/lib/db

我的困惑在于我上面放置的链接。那里有以下示例:

version: "3.9"

services:
  db:
    image: db
    volumes:
      - data-volume:/var/lib/db
  backup:
    image: backup-service
    volumes:
      - data-volume:/var/lib/backup/data

volumes:
  data-volume:
Run Code Online (Sandbox Code Playgroud)

我想知道这是否意味着我必须data-volume在我的主机上创建一个名为的目录?如果我的计算机上有一个带有路径的目录temp/my-data/,并且我想将该路径挂载到数据库容器, 该怎么办/var/lib/db?我应该做下面这样的事情吗?

version: "3.9"

services:
  db:
    image: db
    volumes:
      - temp/my-data/:/var/lib/db

volumes:
  temp/my-data/:
Run Code Online (Sandbox Code Playgroud)

我的主要困惑是volumes:底部的部分,我不确定卷名是否应该是我的目录的路径,或者应该只是我给出的字面名称,如果是后一种情况,那么给定的名称如何映射temp/my-data/在我的机器上?该示例并未表明 & 含糊不清,以澄清这一点。

有人可以帮我澄清一下吗?

PS我尝试使用上面的 docker-compose 我猜,最终出现错误:

ERROR: The Compose file './docker-compose.yaml' is invalid because:
volumes value 'temp/my-data/' does not match any of …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-volume

21
推荐指数
2
解决办法
5万
查看次数

用浏览器打开网址

我通过以下方式在浏览器中以编程方式打开一个Url:

private final String url = "https://www.google.com";

Uri uri = Uri.parse(url);
Intent intent = new Intent();
intent.setData(uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

通常,代码工作正常,它在浏览器中打开Http地址.

但总会有一个系统弹出对话框要求用户选择一个应用程序来完成操作:

在此输入图像描述

用户必须从弹出窗口中选择Chrome,然后打开页面.我不明白为什么谷歌+应用程序是选项之一.

我如何避免应用程序选择的系统对话框?我的意思是如何设置默认浏览器(Chrome)并且我的代码可以在没有此系统对话框的情况下打开网址?

android android-intent

17
推荐指数
1
解决办法
4万
查看次数

如何配置 prettier 以检查具有特定扩展名的所有文件

我已经通过安装了 prettier

yarn add prettier
Run Code Online (Sandbox Code Playgroud)

我希望 prettier 仅格式化打字稿代码(我正在开发AWS CDK项目,按照惯例没有src文件夹,并且到处可能有打字稿文件)。换句话说,我想更漂亮地检查我的项目中具有扩展名的所有文件*.ts

我检查了它的配置文档。但没有这样的选项来指定文件扩展名。

那么我怎样才能只对 *ts 文件运行 prettier 呢?有可能吗?如果没有,解决方法是什么?

node.js typescript prettier prettier-eslint

14
推荐指数
2
解决办法
2万
查看次数

当maven构建我的项目时,无法从库项目的jar中找到该类

我已经下载了第三方Android库项目,该项目不包含java类文件,而是包含文件夹下的jar文件libs/:

libs/
    - CustomService.jar
res/
   -…
pom.xml
Run Code Online (Sandbox Code Playgroud)

这个库项目可以构建为apklib存档.我构建了它并且我已将此存档安装到我的本地maven存储库中.

然后在我自己的Android项目中,我添加了这个apklib项目的依赖项:

<dependency>
   <groupId>com.custom.service</groupId>
   <artifactId>custom-service</artifactId>
   <type>apklib</type>
   <version>1.0</version>
 </dependency>
Run Code Online (Sandbox Code Playgroud)

在我的Java代码中,我使用了CustomService.jar中的类,但是当我maven构建我的项目时,我经常遇到以下错误:

[ERROR] package com.custom.service.user does not exist
[ERROR] location: class com.my.app.MyClass
[ERROR] /Users/Johon/MyApp/src/main/java/com/my/app/MyClass.java:[34,17] cannot find symbol
[ERROR] symbol:   variable UserService
Run Code Online (Sandbox Code Playgroud)

上面的错误抱怨它无法UserService从库apklib存档中找到该类.然后,我通过命令检查了库jar文件的内容:

jar tf CustomService.jar

我看到该类位于库项目的CustomService.jar

com/custom/service/user/UserService.class
Run Code Online (Sandbox Code Playgroud)

这个类在jar中,为什么我得到错误然后????

android jar maven android-library apklib

11
推荐指数
1
解决办法
905
查看次数

SBT构建的依赖(对于sun.security.util)

我正在SBT用来构建我的Scala项目.我的Java代码也在我的项目中.

当我运行构建时,我不断收到以下错误:

错误:包sun.security.util不存在[error] import sun.security.util.ObjectIdentifier;

我明白我需要声明依赖sun.security.util,但我不知道我应该依赖什么依赖?

我的build.sbt包含:

libraryDependencies ++= Seq("org.springframework" % "spring-dao" % 2.0.8",)
Run Code Online (Sandbox Code Playgroud)

我的JDK版本是"1.7.0_25".我需要使用这个sun.security.util包.这个链接表示在JDK中无法保证.如何声明依赖项以使其工作?我的意思是,我应该添加的依赖名称是什么?

java scala sbt

10
推荐指数
2
解决办法
1090
查看次数

二进制运算符'=='不能应用于两个结构操作数

我使用的是第三方框架,有一个文件包含以下代码:

struct AdServiceType {
    init(_ value: UInt)
    var value: UInt
}
var Internal: AdServiceType { get }
var Normal: AdServiceType { get }
var External: AdServiceType { get }

class AdService : NSObject {
   var serviceType: AdServiceType
   init!()
}
Run Code Online (Sandbox Code Playgroud)

然后,在我自己的项目课中,我有

var aService : AdService?

//aService is initialised

//COMPILER ERROR: Binary operator ’==’ cannot be applied to two AdServiceType operands
if aService!.serviceType == Normal {
   //DO SOMETHING            
}
Run Code Online (Sandbox Code Playgroud)

当我检查是否serviceType是时,我得到了上面提到的编译器错误Normal.为什么?如何摆脱它?

ios swift

9
推荐指数
2
解决办法
2191
查看次数