android studio封装so 的java程序封装封装问题(外部类)

19:05 提问
Android Studio JNI封装问题
大家好,在下有一问题请教:
别人给了一个C语言编译的动态库和头文件(libxxx.so,xxx.h),我想在Android Studio中NDK开发时用JNI封装这个库,然后再生成一个libyyy.so给Android Java调用.我已经在linux下用yyy.c和Makefile实现了我的想法(即通过libxxx.so经过JNI封装生成libyyy.so给Android Java调用),我想为了方便,能否直接在Android Studio上对别人给的C库进行JNI封装,具体如何操作, 望予以指点.谢谢
按赞数排序
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!
现在暂时as好像还不支持jni的封装,可以用eclipse实现你想要的
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐Android Studio项目打包配置属性文件报错及解决方案Android Studio项目打包配置属性文件报错及解决方案七步的天百家号一、在Android Studio中打包时报错如下:(1)打包时报多个属性文件错误FAILURE: Build failed with an exception.* What went wrong:Execution failed for task &#39;:app:transformResourcesWithMergeJavaResForRelease&#39;.& More than one file was found with OS independent path &#39;META-INF/rxjava.properties&#39;大意是多个与操作系统无关的路径“META-INF/rxjava.properties”。rxjava.properties是rxjava依赖库的属性配置文件。注意:这个问题是有时候引用的三方库会带有一些配置文件xxxx.properties,或者license信息导致的。(2)解决方案:在主项目的build.gradle文件中加入packagingOptions 配置:packagingOptions {exclude &#39;META-INF/rxjava.properties&#39;}packagingOptions 是打包时的一些配置,使用exclude 在打包时移除项目中的相关文件,不打入apk文件中。针对引用的三方库会带有一些配置文件xxxx.properties,或者license信息,当我们打包的时候想去掉这些信息就可以使用上面的packagingOptions 配置方式。packagingOptions 配置(3)通用解决方案:全部packagingOptions 配置下面粘贴我项目中使用的全部packagingOptions 配置packagingOptions {exclude &#39;META-INF/ASL2.0&#39;exclude &#39;META-INF/DEPENDENCIES.txt&#39;exclude &#39;META-INF/LICENSE.txt&#39;exclude &#39;META-INF/NOTICE.txt&#39;exclude &#39;META-INF/NOTICE&#39;exclude &#39;META-INF/LICENSE&#39;exclude &#39;META-INF/DEPENDENCIES&#39;exclude &#39;META-INF/notice.txt&#39;exclude &#39;META-INF/license.txt&#39;exclude &#39;META-INF/dependencies.txt&#39;exclude &#39;META-INF/LGPL2.1&#39;exclude &#39;META-INF/services/javax.annotation.processing.Processor&#39;exclude &#39;META-INF/rxjava.properties&#39;}本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。七步的天百家号最近更新:简介:专注分享IT技术、开发经验作者最新文章相关文章Java里面的封装是不是多此一举? - 知乎440被浏览<strong class="NumberBoard-itemValue" title="1,621分享邀请回答@Component
public XxxService {
@Autowired
就完全没必要getter/setter。测试的时候,你可以直接赋值,但别人的代码看不见这个package权限的字段。实在需要把某个public改成getter/setter,Java是一种静态语言,IDE可以瞬间帮你搞定,不用担心这些小问题。只有你的代码涉及到API接口,需要公开给第三方使用时,才需要非常仔细地对待封装接口。这种情况下,setter/getter是最保险的。501 条评论分享收藏感谢收起75 条评论分享收藏感谢收起java封装问题,编译成功了,为什么还说错?_百度知道
java封装问题,编译成功了,为什么还说错?
我有更好的答案
main方法需要写在public类中,代码中,需要将CourseTest类的main方法写到Course类中;你可以理解为,在一个外部包的一个类需要调用CourseTest.main,而CourseTest非公开的,外部包无法访问。所以会报错
还是错的呀
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。AndroidStudio项目打包成jar的简单方法
转载 & & 作者:lnny_99
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用呢?下面通过本文给大家介绍ndroidStudio项目打包成jar的简单方法,需要的朋友参考下吧
首先备注一下
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。
什么是AAR,与JAR区别
*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。
*.aar:包含所有资源,class以及res资源文件全部包含
Android Studio 如何打JAR包
在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用。 在AS中可以通过修改gradle才处理。
我们新建一个项目MakeJar,在项目中新建一个modle-类型为android-library
如图:app为我们的主工程,librarydemo是我们要将其生成jar包的model. 在library demo中的build.gradle中与android结构同级加入如下代码:
步骤1-依赖
主工程App的build中要加入librarydemo 这个依赖model:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile project(':librarydemo')
步骤2- 载library种编写task
当你编译完工程后其实library的所有java文件已经生成了包含class 的classes.jar包,如下图所示:
这个为了方便给出一个task 将改classes.jar 导出到library的build/libs/下,并修改名字为mysdk.jar ( 名字随意)。
//Copy类型
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/mysdk.jar'
//设置拷贝的文件
from('build/intermediates/bundles/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
rename ('classes.jar', 'mysdk.jar')
makeJar.dependsOn(build)
//在终端执行生成JAR包
// gradlew makeJar
在android studio 提供的Terminal中(目录默认伟当前工程的)键入 ./gradlew makeJar 回车看到如下所示就OK了:
生成的jar包在你的library那个的build下的libs下,然后就可以使用了。
声明:打出来的jar只有源代码的.class 文件,不包含资源文件
看到那么多人踩的,那么多人遇到问题,在这里说明下并解决
怎么把资源(图片,布局,string等)打进jar包呢?
答案是: 既然不包含那我们就把jar包中用到的资源放到你使用该jar的工程里面,然后通过反射即可。
这里给出反射类:
public class MResource {
public static int getIdByName(Context context, String className, String resName) {
String packageName = context.getPackageName();
int id = 0;
Class r = Class.forName(packageName + ".R");
Class[] classes = r.getClasses();
Class desireClass =
for (Class cls : classes) {
if (cls.getName().split("\\$")[1].equals(className)) {
desireClass =
if (desireClass != null) {
id = desireClass.getField(resName).getInt(desireClass);
} catch (Exception e) {
e.printStackTrace();
个人觉得还是用as为我们提供的aar包比较好,编译完就生成了aar了,而且也不用担心资源问题,万一你漏了一个呢。
生成的aar在你的library的/build/outputs/aar/
说明下,评论中出现的问题大多是因为名字或者代码结构问题,
最后附上该demo的地址:
以上所述是小编给大家介绍的ndroidStudio项目打包成jar的简单方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 androidstudio java8 的文章

 

随机推荐