Topwo博客
首页
博客
项目
Unable to merge dex问题解决记录
Android
2021-09-26
### 一、在Android Studio中 双击(Run with –stacktrace)找到是哪个class文件冲突,再通过下面的脚本找到对应的jar包。 ### 二、在Eclipse中 直接通过下面这个shell脚本找出冲突的class。 #### 附脚本: ```shell #!/bin/sh if [[ $# -eq 0 ]]; then echo "用法1:sh find_class.sh [jar包目录]\n用法2:sh find_class.sh [jar包目录] [要搜索的class]"
阅读原文>>
查看apk包的签名md5、sha1
Android
2021-09-26
### 方法一: ```shell keytool -list -printcert -jarfile android.apk ``` ### 方法二: ```shell jar tf android.apk |findstr RSA jar xf android.apk META-INF/CERT.RSA keytool -printcert -file META-INF/CERT.RSA ```
阅读原文>>
解决使用dx工具将class格式的jar包转成dex格式的二进制jar包时可能遇到的问题
Android
2021-09-26
### 前言 将较大的jar包转成dex格式的jar包过程中可能遇到的问题以及对应的解决办法。 ### 问题 & 解决 #### 问题1:OutOfMemoryError错误 在这里,产生java.lang.OutOfMemoryError这个错误的原因是因为分配给dx工具的JVM内存过小,可以通过增加jvm的heap内存大小来解决。 #### 具体解决办法: 修改dx.bat文件,将原来的1G的heap内存改成更大的值,本文的做法是将其改成4G。 #### 问题2: Uncaught translation error: com.android.dx.cf.code.SimException: invalid opcode ba (invokedynamic requires --min-sdk-version >= 26) 需要设置支持的最小sdk版本 #### 具体解决办法:
阅读原文>>
armeabi与armeabi-v7a的区别,绝对干货!
Android
2021-09-26
### 1、手机cpu架构。 讲到armeabi就不得不讲手机cpu了。电脑有电脑的cpu,手机也有手机的cpu。cpu有厂商属性,也有架构属性,架构的话自己简单地理解就是它的内部模块的组成结构。 其中arm架构的手机cpu占市场的大部分,这也是今天的重点。但arm架构的发展历史悠久,也有很多不同的版本。 ### 2、前面讲了cpu架构,为下面的讲述做了一个技术背景的铺垫。 我们在开发Android项目的时候,比如使用高德地图导航或者3d地图的时候就会使用到.so库文件,它们保存在armeabi和armeabi-v7a或arm64-v8a等目录下,这有什么作用呢? 其实这是给app运行时读取的几个目录,但会根据手机cpu架构类型只从其中一个文件夹读取,有点类似values和values-21的作用,但是与它们又有点不同。
阅读原文>>
从C/C++程序调用Java代码
Java
2021-09-26
JNI允许您从本机代码内调用 Java 类方法。 要做到这一点,通常必须使用 Invocation API 在本机代码内创建和初始化一个 JVM。 下列是您可能决定从 C/C++ 代码调用Java 代码的典型情况: 1. 希望实现的这部分代码是平台无关的,它将用于跨多种平台使用的功能。 2. 需要在本机应用程序中访问用 Java 语言编写的代码或代码库。 3. 希望从本机代码利用标准 Java 类库。 从C/C++ 程序调用 Java 代码的四个步骤: #### 1.编写 Java 代码。
阅读原文>>
java JNI编程技巧——JAVA调用c/c++(4)
Java
2021-09-26
### 步骤 5:创建共享库文件 接下来,我们创建包含本机代码的共享库文件。 大多数 C 和 C++ 编译器除了可以创建机器代码可执行文件以外,也可以创建共享库文件。 用来创建共享库文件的命令取决于您使用的编译器。 下面是在 Windows执行的命令。 #### Windows: 使用visual studio commandprompt工具cl.exe ```shell cl -I"C:\Program Files\Java\jdk1.6.0_10\include" -I"C:\Program Files\Java\jdk1.6.0_10\include\win32" -LD test_JNI_javaCallc_test.c -Fe test_JNI_javaCallc_test.dll ```
阅读原文>>
java JNI编程技巧——JAVA调用c/c++(3)
Java
2021-09-26
### 步骤 4:编写 C/C++ 代码 当谈到编写 C/C++ 函数实现时,有一点需要牢记:说明必须和 JNI_javaCallc_test.h 的函数声明完全一样。 我们将研究用于 C 实现和 C++ 实现的完整代码,然后讨论两者之间的差异。 C函数实现 以下是 JNI_javaCallc_test.c,它是用 C 编写的实现: ```c #include <jni.h>
阅读原文>>
java JNI编程技巧——JAVA调用c/c++(2)
Java
2021-09-26
### 步骤 2:编译 Java 代码 接下来,我们需要将 Java 代码编译成字节码。 完成这一步的方法之一是使用随SDK一起提供的Java编译器javac。 用来将 Java 代码编译成字节码的命令是: ```shell cd test javac JNI_javaCallc_test.java ``` 如果是在eclipse环境下编写的以上代码,文件保存时会自动在工程目录的bin下生成以上java文件 ### 步骤 3:创建 C/C++ 头文件
阅读原文>>
java JNI编程技巧——JAVA调用c/c++(1)
Java
2021-09-26
### 步骤 1:编写 Java 代码 我们从编写 Java 源代码文件开始,它将声明本机方法(或方法),装入包含本机代码的共享库,然后实际调用本机方法。 这里是名为JNI_javaCallc_test: 直接使用文本编辑器或在ecilpos中建立工程敲入以下代码: ```java package test; public class JNI_javaCallc_test { //c/c++本地方法
阅读原文>>
java JNI编程技巧——JAVA调用c/c++(0)
Java
2021-09-26
### 一、使用情况 当无法用Java语言编写整个应用程序时,JNI允许您使用本机代码。 在下列典型情况下,您可能决定使用本机代码: #### 1、希望用更低级、更快的编程语言去实现对时间有严格要求的代码。 #### 2、希望从 Java 程序访问旧代码或代码库。 #### 3、需要标准 Java 类库中不支持的依赖于平台的特性。 ### 二、所需软件 eclipse3.4.1、JDK6、VC6.0 ### 三、步骤分析 从 Java 程序调用 C 或 C ++ 代码的过程由六个步骤组成:
阅读原文>>
首页
上一页
31
下一页
尾页
文章推荐
Unable to merge dex问题解决记录
2021-09-26
查看apk包的签名md5、sha1
2021-09-26
解决使用dx工具将class格式的jar包转成dex格式的二进制jar包时可能遇到的问题
2021-09-26
armeabi与armeabi-v7a的区别,绝对干货!
2021-09-26
从C/C++程序调用Java代码
2021-09-26