NDK

react-native 热更新react-native-pushy集成遇到的问题

大兔子大兔子 提交于 2020-03-28 04:36:58
主要步骤按官方文档实现,这里只记录遇到的一些小坑 官方文档 run-android时NDK报错 前提是NDK已安装并且环境变量已设置 根据报错提示在 android/local.properties 文件里加入 ndk.dir=~/Library/Android/android-ndk-r10e //这里改成你自己的ndk路径 cxxbridge找不到 在node_modules/react-native-update/android/src/main/java/cn/reactnative/modules/update/UpdateModule.java里: import com.facebook.react.cxxbridge.JSBundleLoader //这行改为import com.facebook.react.bridge.JSBundleLoader 这个错误在我写这篇的时候作者已经修改了,暂时还没传到npm上,估计后面版本就没有这个错误了。 rn-cli.config.js文件找不到 解决:在项目根目录自己创建一个名为 rn-cli.config.js 的文件。 来源: https://www.cnblogs.com/macq/p/7612157.html

android JNI 使用 for mac

人盡茶涼 提交于 2020-03-26 11:55:50
3 月,跳不动了?>>> 使用jni实现Java调用C代码,步骤: 1,下载ndk,链接: http://developer.android.com/tools/sdk/ndk/index.html ;解压 , 2,如果是windows系统,需要安装Cygwin工具,这是window下模拟Linux编译环境的工具(因为Android内核就是Linux);如果windows系统的同学就去找安装这个工具的教程; 3,如果是Linux系统或者mac系统,就直接配置NDK环境变量(我是mac系统,在这里就介绍mac系统的了),和配置adb环境变量一样,将ndk解压路劲加入到环境变量文件中,然后在终端中就可以直接编译了; 4,创建一个Android project,在.java文件中定义一个native方法: public native String fromeC(); 5,在项目根目录下创建一个jni文件夹,在这个文件夹下创建一个.c文件,用来实现我们定义的native方法;代码如下: #include <jni.h> #include <stdio.h> /* * 把Java的方法跟C的方法做个对应,一定要符合这些命名规则,才能java才能找到对应的c代码 * type:Java * PackageName:com_baiyou_mp3ecode 这个类所在的包 * ClassName:

Android JNI&NDK编程小结及建议

丶灬走出姿态 提交于 2020-03-23 05:31:23
前言 由于网上关于JNI/NDK相关的知识点介绍的比较零散而且不具备参照性,所以写了这篇JNI/NDK笔记,便于作为随时查阅的工具类型的文章,本文主要的介绍了在平时项目中常用的命令、JNI数据类型、签名等,便于查阅相关资料。文末相关参考资料比较适合刚接触或者不熟悉Android NDK开发的朋友参阅。 常用命令 javac 编译java源文件生成.class文件 由于JNI对应的头文件由javah工具根据对应的.class文件生成,所以在进行JNI编程之前,写好Java代码后需要先编译,在使用javah生成对应的头文件 javah -jni自动生成头文件 举例说明: 生成普通的JNI头文件 javah -classpath path -jni -d outputdirpath com.mrljdx.JavaNativeCode 在Java函数中包含Android相关的参数代码,则需要在classpath中添加android.jar包的绝对路径地址 javah -classpath path:$ANDROID_HOME/path/android.jar -jni -d outputdirpath com.mrljdx.JavaNativeCodeWithAndroid javap -s -p 查看函数签名 -s: 显示签名(只显示public类型的签名) -p:显示所有函数

Unity Mono脚本 加密

混江龙づ霸主 提交于 2020-03-17 08:11:12
加密环境 引擎版本:Unity3D 5.3.4 及更高版本 ( 使用Mono而并非IL2CPP ) 操作系统:CentOS 6.2(Final) 加密环境:Android、IOS(暂定) 加密对象:C#源代码(dll文件) 解密方法:libmono.so (重点:加入解密算法并重编译此文件) 加密的目地 .NET Reflector等反编译工具 无法通过对dll反编译得到源码 注意事项 dll的加密算法和libmono.so解密算法一致 思路分析 重点:我们需要对libmono.so重编译,加入我们的解密算法。 准备环境 编译系统:linux或mac os 我的编译环境:centos 6.2 Final,建议在linux或mac os中编译 libmono.so linux安装运行库 git 在编译过程中,可能需要通过git获取某些运行库。 查看是否安装git: git –version CentOS7 yum 安装git https://git-scm.com/book/en/v2/Getting-Started-Installing-Git 其它package autoconf automake bison gcc gettext glib >= 2.0 libtool make perl glib >= 2.0 这个一直安装失败 centos安装软件 在root权限下

基于NDK生成交叉工具链

让人想犯罪 __ 提交于 2020-03-10 03:27:45
下载NDK源码 https://developer.android.com/ndk/downloads?hl=zh-cn 执行脚本生成工具链 参考链接 https://developer.android.com/ndk/guides/standalone_toolchain $NDK/build/tools/make_standalone_toolchain.py \ --arch arm --api 21 --install-dir /tmp/my-android-toolchain #或者 $NDK/build/tools/make-standalone-toolchain.sh \ --platform=android-21 --install-dir=/tmp/my-android-toolchain --arch=arm64 来源: CSDN 作者: ustczhng2012 链接: https://blog.csdn.net/ustczhng2012/article/details/104759054

Android SDK接入问题总结(一)

给你一囗甜甜゛ 提交于 2020-03-07 10:22:41
Android Studio 3.5版本引入旧工程 1】Could not find method jackOptions() for arguments xxxxxx 解决 :在build.gradle中只有用即可,注掉jackOptions defaultConfig { // jackOptions { // enabled false // } } compileOptions { sourceCompatibility JavaVersion . VERSION_1_8 targetCompatibility JavaVersion . VERSION_1_8 } 2】“No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android” 原因 :新版本的NDK与3.0及以前旧版的Android Gradle plugin插件不兼容 解决 :注掉build.gradle中低于3.0的gradle版本 dependencies { // classpath 'com.android.tools.build:gradle:2.3.2' } 3】“Manifest merger failed : Attribute application

JNI/NDK:CMakeLists.txt 构建so库,导入三方so库,以及遇到的坑

懵懂的女人 提交于 2020-03-06 12:40:19
https://blog.csdn.net/dengweijunkedafu/article/details/89218863?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task 本文使用最新的JNI构建工具CMake完成 通过这篇文章,你讲学习到: camke构建自己的三方so库 学会使用cmake管理自己jni文件 学会使用cmake调用三方的so库 最后分析自己开发过程中遇到的坑 1.CMakeLists.txt 构建so库 创建jni的工具类JNI : 这个类的原本用途是,在工程里用来管理jni的方法,和加载so库用的 但是在这里仅仅只是为了加载so库 package com.bendeng.jnindk; /** * @author: dwj<br> * @date: 2019/4/10 15:39<br> * @desc: <br> */ public class JNI { // Used to load the 'test-lib' library on application startup. static { // 一定要加这一句,否不会生成so库 System.loadLibrary("test-lib"); } }

Android JNI开发之NDK环境搭建

自古美人都是妖i 提交于 2020-03-03 14:00:04
参考:http://www.cnblogs.com/yejiurui/p/3476565.html 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在执行Cygwin,然后传递ndk-build作为参数,这样就能让Eclipse自动编译NDK了。那么我们现在开始吧: 一、关于NDK的一点解释: NDK全称:Native Development Kit。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。 NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。 二、 NDK 坏境搭建: 注意事项:目前已经出了NDK-r9b了

NDK学习三: 纯手工编译Hello World

孤人 提交于 2020-03-03 13:58:34
ndk学习之旅 http://blog.csdn.net/pathfinder163/article/details/7178909 http://www.cnblogs.com/yejiurui/p/3476565.html 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在执行Cygwin,然后传递ndk-build作为参数,这样就能让Eclipse自动编译NDK了。那么我们现在开始吧: 一、关于NDK的一点解释: NDK全称:Native Development Kit。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

Android NDK 吐槽集(不定期更新)

ぐ巨炮叔叔 提交于 2020-03-01 07:51:29
Android NDK对于wchar_t和wcs的支持就是一堆屎.别想轻易使用UTF16编码.相比Win上的C++开发对于各种字符编码支持美若天堂,以前居然没发现. 强制wchar_t编译为2字节,wcs系函数不正确,还要自己实现.编译器难道就不能提示下不兼容或者什么的? 对于各种wcs系的printf的缺失,也为了各平台兼容(IOS上也是同样坑),所有字符串均改为char/std::string,全部UTF8编码,然后对于各种硬编码的中文字符,请保存源代码时选择(UTF-8 BOM)格式,再高效和兼容性上获取最大平衡点. 对于GCC等支持c++0x11的编译器,可以使用u8的前缀明确表明编译时把字符直接量用UTF8的格式存放.或者把源代码文件用UTF-8保存也可以.但VC2013仍然不支持UTF8的直接量,必须转码.费时费效率. NDK的Make或者说是GUN的Make的一个子集是对格式严格要求或者说是不靠谱,对于任何潜在的空格,\t,\r,\n似乎都不能容忍.再编译完一个so后调试正确,然后再mk文件中的LOCAL_SRC_FILES加了一个注释,类似 \ #####这是一个注释 \,编译没有报任何错,运行使用这个so动态库的时候crash,如果不是事先已经调试完确认代码没有错误,估计找到天荒地老都不会发现这个错误,去除这个注释编译/链接,程序完美运行. 来源: oschina