我正在尝试用 Java 为 Flutter 创建一个插件。我试图Android activity在我的主Java类中传递参数。
这是我的本机代码:
package com.example.trsurveys;
import androidx.annotation.NonNull;
import android.app.Activity;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import theoremreach.com.theoremreach.TheoremReach;
public class TrsurveysPlugin implements FlutterPlugin, MethodCallHandler {
private MethodChannel channel;
private Registrar registrar;
private Activity activity;
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "trsurveys");
channel.setMethodCallHandler(this);
}
When I try to debug my app it shows me the following errors
private TrsurveysPlugin(Activity activity) {
this.activity = …Run Code Online (Sandbox Code Playgroud) 这是我的logcat详细信息请帮我解决这个问题
03-28 11:58:13.421 992-5910/? D/ActivityManager? New dropbox entry: com.dpc.selfie, data_app_native_crash, 5f2d762f-9b90-42d2-8a2a-bda978da87bc
03-28 11:58:13.431 992-5910/? W/ActivityManager? Force finishing activity com.dpc.selfie/.Act.Activity_Feeds
03-28 11:58:13.461 992-1177/? W/InputDispatcher? channel '4443fea0 com.dpc.selfie/com.dpc.selfie.Act.Activity_Feeds (server)' ~ Consumer closed input channel or an error occurred. events=0xd
03-28 11:58:13.461 992-1177/? E/InputDispatcher? channel '4443fea0 com.dpc.selfie/com.dpc.selfie.Act.Activity_Feeds (server)' ~ Channel is unrecoverably broken and will be disposed!
03-28 11:58:13.501 310-310/? D/Zygote? Process 5738 terminated by signal (7)
03-28 11:58:13.531 992-5910/? D/dalvikvm? GC_FOR_ALLOC freed 3663K, 18% free 44731K/54304K, paused 91ms, total 91ms
03-28 11:58:13.531 …Run Code Online (Sandbox Code Playgroud) 最近,我们将最低支持的 SDK 从 API 21 提升到了 24。
显然,这一变化导致我们的 APK 大小从 65mb 增加到 103mb。从Android studio中的APK分析可以看出,基本上都是.so文件大小翻倍了。
但为什么会这样呢?gradle 属性没有改变,只有 min sdk。
关于如何再次减小 APK 大小的任何想法?
android apk android-min-sdk android-6.0-marshmallow android-native-library
我正在开发一个原生的android应用程序,并使用一个生成.so文件的开源库.面对一个奇怪的行为.在最初的几次,应用程序运行得非常好,库已加载.但现在它无法找到图书馆并给出 -
java.lang.UnsatisfiedLinkError:无法加载:findLibrary返回null
.Below很少观察:1.当我提取.apk文件时,库(.so)出现在"lib/armeabi"文件夹下.2.但是当我尝试搜索库(.so)进入设备提取路径时
/ data/data // lib /,它不存在.有关为什么会发生这种奇怪行为以及为什么.so文件未在/data/data/com.ibm.homeScreen/lib/文件夹中解压缩的任何建议.
提前致谢!
的非常精确的副本添加本地库到APK.由于没有答案,我决定再问一次.
我有一个Android项目.我有一个用android NDK构建的.so库.我希望在我的项目中使用这个.so,而不是使用NDK.
那么,我如何告诉Eclipse(或Android工具)我需要确定.还是要内置到我的APK中?
我们在 android 设备的各个随机位置发生以下崩溃。虽然我们已经将 ndk abifilters 更改为“armeabi-v7a”、“arm64-v8a”
Crashed: Thread : SIGSEGV 0x0000000000000010
#00 pc 0x723d46f748 libjsc.so
#01 pc 0x723d4bbfe8 libjsc.so
#02 pc 0x7339d68b6c libc.so
Run Code Online (Sandbox Code Playgroud)
当前配置
RN 版本 0.63.4
defaultConfig {
..
ndk { abiFilters "armeabi-v7a", "arm64-v8a" }
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a",
"x86", "arm64-v8a", "x86_64"
}
}
project.ext.react = [
entryFile : "index.js",
enableHermes: false, // clean and rebuild if changing
]
Run Code Online (Sandbox Code Playgroud)
我有一个Android应用程序,它使用一些预构建的本机库(Osmand预构建库).问题是,当我在手机上运行应用程序时,它表示缺少这些库.当我查看.apk文件时,没有"lib"文件夹 - 如何设置eclipse导出它们?
编辑:我知道可能重复,但答案不直接适用。我正在使用 ProcessBuilder 而不是 Runtime.getRuntime().exec:
public int execProcess(List<String> cmds, ShellUtils.ShellCallback sc) {
StringBuilder cmdlog = new StringBuilder();
for (String cmd : cmds) {
cmdlog.append(' ');
}
Utils.logger("v", cmdlog.toString(), DEBUG_TAG);
ProcessBuilder pb = new ProcessBuilder();
pb.directory(mBinFileDir);
pb.command(cmds);
Process process = null;
int exitVal = 1; // Default error
try {
process = pb.start();
StreamGobbler errorGobbler = new
StreamGobbler(process.getErrorStream(), "ERROR", sc);
StreamGobbler outputGobbler = new
StreamGobbler(process.getInputStream(), "OUTPUT", sc);
errorGobbler.start();
outputGobbler.start();
exitVal = process.waitFor();
sc.processComplete(exitVal);
} catch (Exception e) {
Log.e(DEBUG_TAG, "Error executing ffmpeg …Run Code Online (Sandbox Code Playgroud) 在 Android studio(v4.1.2) 中尝试 ndk-build C 代码调试。下面是 build.gradle 设置。
jni ,C/C++ 源文件 Dirs. 实际的 C 文件不在 jni 文件夹下,而是在其外部,但在 android.mk 文件中引用。
sourceSets.main.jniLibs.srcDirs = ['D:/ccodefolder/jni/']
2)Android.mk 从 C、C++ 代码构建共享库,并链接内置共享库和静态库。
externalNativeBuild {
ndkBuild {
path file('D:/ccodefolder/jni/Android.mk')
}
}
ndkVersion '21.1.6352462'
Run Code Online (Sandbox Code Playgroud)
debug {
debuggable true
jniDebuggable true
minifyEnabled false
shrinkResources false
//ndk.debugSymbolLevel = 'FULL'
}
Run Code Online (Sandbox Code Playgroud)
4)项目结构如图所示。
能够运行项目并生成共享库以及其他预构建的 .SO 和 apk 作品,还创建了 CPP 文件夹并能够查看我的项目的 C 代码文件。
调试问题:
LLDB 服务器启动并且调试器附加到进程,但是调试任何 C 文件都失败并出现以下错误。
当前不会命中断点。没有可执行代码与该行关联
谢谢
android android-ndk android-studio ndk-build android-native-library
我正在运行一个传感器和位置服务,数据被传递到 TraceManager 文件,在那里它被处理并传递给 TraceCWrapper 以映射到一个共享的 C 库。所以,似乎传感器和位置数据很好并被接收在 TraceManager 中,它然后被传递到 TraceCWrapper,但是应用程序在几秒钟后崩溃,我得到的唯一错误行是:
A/libc:致命信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),tid 29938 中的故障地址 0x8 (AsyncTask #1),pid 29870 (pp.traceandroid)
public class TraceManager extends AppCompatActivity {
private String TAG = "TraceManager";
private int phoneAngle = 0;
private double initialStepCalibrationOffset;
private int initialPointingAngleDeg = 0;
private int initialAlignmentMode = 0;
private int startingFloorID = 0;
private LatLng startingLatLong;
private double startingAccuracy = 1.0;
private Context context;
private boolean isMagConsistentAtInit = false;
private boolean isMagValid = true;
private Timer callBackTimer; …Run Code Online (Sandbox Code Playgroud) java java-native-interface android jna android-native-library