小编Iro*_*awk的帖子

Flutter:如何在 Canvas 上绘制图标?

我正在使用 aCustomPainter在 Flutter 中绘制如下:

@override
void paint(Canvas canvas, Size size) {
  canvas.drawRect(...);
  canvas.drawImage(...);
  ...
}
Run Code Online (Sandbox Code Playgroud)

如何绘制Iconcanvas

icons canvas custom-painting flutter

9
推荐指数
3
解决办法
3433
查看次数

使用Java和Kotlin作为基本语言时Native C ++ Android项目的不同行为

我创建了两个Native C ++项目-一个使用Kotlin作为基本语言,另一个使用Java。

在这两个项目中,我对自动创建的C ++函数进行了相同的修改:

extern "C" JNIEXPORT jstring JNICALL
Java_com_stellarsolvers_test_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */,
        jstring s) {

    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}
Run Code Online (Sandbox Code Playgroud)

因此,我添加了参数:jstring s

还可以通过以下方式修改定义:

科特林:

external fun stringFromJNI(s: String): String
Run Code Online (Sandbox Code Playgroud)

Java:

public native String stringFromJNI(String s);
Run Code Online (Sandbox Code Playgroud)

在调用代码中,我为此函数提供了一个字符串值:

科特林:

sample_text.text = stringFromJNI("Kotlin")
Run Code Online (Sandbox Code Playgroud)

Java:

tv.setText(stringFromJNI("Java"));
Run Code Online (Sandbox Code Playgroud)

两个项目都没有其他更改。

这两个项目均来自“ Native C ++”模板

  • Android Studio 3.3
  • Build#AI-182.5107.16.33.5199772,建于2018年12月25日
  • JRE:1.8.0_152-release-1248-b01 x86_64
  • JVM:JetBrains sro的OpenJDK 64位服务器VM
  • macOS 10.14.2

“创建新项目”向导中的单个更改是:

  • 最低API级别:API 21

我希望两个项目都能正常工作。

使用Java就是这种情况。

但是,Kotlin应用程序的行为方式却很奇怪:当执行到达应调用C ++函数的位置时,程序将在调试器中使用SIGSEGV崩溃:

  • 虚拟设备:Nexus 5X API 28 …

c++ java android android-ndk kotlin

5
推荐指数
0
解决办法
321
查看次数

标签 统计

android ×1

android-ndk ×1

c++ ×1

canvas ×1

custom-painting ×1

flutter ×1

icons ×1

java ×1

kotlin ×1