android制作jar
㈠ android怎么在源码导入jar包
在Android源码编译成功的基础上重新编译带自己API的android.jar需要进行以下几步操作:
1、添加自己源代码,在Android源码frameworks/base目录下新建一个文件夹保存代码,如tv,以包的形式命名添加的文件所在的路径,如/tv/java/android/tv,添加的java文件开头定义的包即是编译成功的class文件所在的包。
2、修改makefile文件
2.1 修改build/core/pathmap.mk文件
在FRAMEWORKS_ BASE_ SUBDIRS变量后添加tv\,代码如下(makefile文件中的语句以Tab键空格开头)
FRAMEWORKS_BASE_SUBDIRS := \ $(addsuffix /java, \ core \ graphics \ location \ media \ opengl \ sax \ telephony \ wifi \ vpn \ keystore \ tv \ )
2.2 修改frameworks/base/Android.mk 文件
在packages_to_ document变量后添加自己源代码的包名称,如android/tv,结果如下(makefile文件中的语句以Tab键空格开头)
packages_to_document := \
android \
javax/microedition/khronos android/tv 3 在ubuntu命令行终端使用如下命令进行编译:
make clean
make update-api
make PRODUCT-sdk-sdk
最后一行也可以用如下两个命令代替: make –j4 make sdk 4 编译结果
4.1 android.jar文件所在的目录为
/out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar并在/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_interme diates/src目录下重新以package形式组织所有生成到android.jar中的源代码。 4.2 SDK所在目录为
out/host/linux-x86/sdk/,生成的sdk文件目录和压缩包为: android-sdk_eng.xxx_linux-x86
android-sdk_eng.xxx_linux-x86.zip(xxx为自己android源码所在的文件名)
㈡ android studio生成jar的时候怎么将libs目录下的jar打进我自己的jar里面
Android Studio中对于library类型的Moudle,默认打出来的是AAR包, 但有时候我们的SDK还需要共享给一些其他eclipse的项目使用,这样我们就需要输出JAR包, 可以通过在Moudle中的build.gradle加入task来实现task makeJar(type: Copy) { delete 'build/libs/mysdk.jar' from('build/intermediates/bundles/release/') into('build/libs/') include('classes.jar') rename ('classes.jar', 'mysdk.jar') } makeJar.dependsOn(build) 在终端执行生成JAR包 ./gradview makeJar 在以下目录就可以找到我们生成的JAR包
㈢ 如何将Android的第三方jar包编译进入apk中
为了将Android的第三方jar包编译进入apk中,首先需要在你的Android工程目录下创建一个名为libs的文件夹。接着,将所需的第三方jar包复制到这个libs文件夹内。
完成复制操作之后,接下来需要进行设置,使IDE能够识别该文件夹为源文件夹。为此,右键点击libs文件夹,在弹出的菜单中选择“Build Path”选项,然后在下一级菜单中选择“Use as Source Folder”。完成这一步后,你的Android项目将能够识别并编译该文件夹中的jar包。
需要注意的是,上述设置仅完成了jar包的添加与编译准备工作。若要确保第三方jar包被正确包含在最终生成的apk中,还需要在项目的build.gradle文件中进行相应的配置。具体而言,需要在dependencies块中添加如下语句:
implementation files('libs/第三方jar包名.jar')
在此之后,执行gradle的同步操作,以确保项目配置正确无误。最后,点击运行按钮,启动你的Android应用,验证第三方jar包是否已被成功编译并整合至apk中。
此外,还需注意,某些第三方jar包可能包含依赖项,这些依赖项也需要一并处理。确保所有依赖项都已正确添加到项目中,避免在运行时出现类路径错误。
通过以上步骤,可以确保第三方jar包被成功编译进入apk中,为你的Android应用增加所需的功能与特性。在整个过程中,务必保持项目的整洁与规范,以便于后期的维护与扩展。
在实际操作中,还需根据具体项目需求及第三方jar包的特性进行相应的调整。务必仔细阅读第三方jar包的文档,了解其使用方法与限制条件,以确保最佳集成效果。
㈣ 如何制作Jar包并在android中调用jar包
Android中jar包封装及调用
在android开发过程中,我们经常会有这种需求,自己开发一个类库jar包,提供给别人调用。 即把项目A封装成jar包,供项目B调用,而在项目B中调用项目A的activity的时候问题就出现了:找不到资源文件(异常:ERROR/AndroidRuntime(3341):Caused by: android.content.res.Resources$NotFoundException: Stringresource ID #0x7f060007)。问题是,只能共享src文件夹下的代码,而不能共享res资源文件,够郁闷!创建一个Androidproject, 用eclipse的export导出,去掉AndroidManifest.xml,res 什么的,这样只共享了代码,而此代码中所调用的res资源文件却不能正常使用,否则会抛出res.Resources$NotFoundException异常。那么如何解决呢?
1.如果只用共享代码,而共享的代码中不涉及到res资源文件的调用的话,直接在Eclipse中导出jar包,在所需要的项目中引用即可。
2.如果共享代码,而且共享的代码中涉及到res资源文件的调用,网上通用的方法是把res资源文件放到assets文件夹中,再在src代码中加载处理,然后再用eclipse导出jar包,引用即可(res资源虽然可以打进jar包,但当其他项目调用jar包时jar包中引用ID 指向的是当前项目的资源,关于如何让jar包中的资源引用只想jar包中的res文件暂无解决方案。我的问题已解决,解决方案:把图片资源放入assets包中一并打入jar包,布局就只能用代码了。jar包中代码可以成功引用jar包内的assets文件。
另:JNI层不可被打包入jar包,只能同jar包一同提供给第三方并放入工程目录下的libs包中)。
3.如果共享代码,而且涉及到res资源文件的调用,而且不想把res资源文件放到assets文件夹中的,直接生成jar包会出现的问题:
1).当在别的项目中引用此jar包时,在项目名上出现小红叉,并且在console控制台上直接自动提示:Errorgenerating final archive: Found plicate file for APK:res/drawable-hdpi/icon.png,通常的解决方法时,在能编译通过的此项目中直接去掉提示的资源文件,再生成jar包。
2).把公共的icon等资源文件删除,生成jar包之后,此时在项目中引用,console控制台上无自动报错现象。如果jar包中的activity调用了res资源文件夹中的文件,在当前项目中调用jar包中的acticity时,问题就出现了,activity所引用的res资源,如果引用的是Strings.xml文件中的值,则抛出异常ERROR/AndroidRuntime(3341):Caused by: android.content.res.Resources$NotFoundException:Stringresource ID#0x7f060007。如果引用的是layout文件夹中的文件,能找到layout中的xml,例如layout中ee.xml,可以找到R.layout.ee,但是在ee.xml中定义的控件id却引用不到,抛出异常ERROR/AndroidRuntime(13703):Caused by:java.lang.NullPointerException。如果在当前项目中调用不涉及jar包中的res的调用,一切OK。
4.如果共享代码,而且共享的代码中涉及到res资源文件的调用,如果封装成jar包,这种方法是达不到要求的(调用jar中封装的activity,还得保证jar包中activity正常调用jar中所封装的res资源,上面说了,jar包中的res资源部分调用为空),那么如何能满足需求呢?把要生成jar包的项目做一下处理,在jar包项目的properties窗口中选择android的选项卡的isLibaray,点击apply按钮或者ok按钮(此时,jar包项目再点击右键选择runas → AndroidApplication就能正常运行了)。在要引用jar包的项目中,右击项目名称,打开properties框口,选择android的选项卡的isLibaray右侧的Add按钮,添加jar包项目。这样jar包项目中的activity就能正常引用到jar包项目中的res资源了。项目调用jar包项目的activity就正常了。
㈤ Android中将资源文件打包进jar文件出现的问题
可以提供个lib project (http://developer.android.com/tools/projects/projects-eclipse.html)
先建个lib project,将 res 的内容拷过去,
将源码编译弄成jar包,放到lib project的libs路径下
使用者可以直接将这个lib project导入到自己的项目中
PS: 注意设置好 proguard,如果有用到的话
㈥ android系统编译jar包给app使用
最近在android O编译系统jar包给应用使用遇到了点问题,网上也没有找到解决方案,这里记录下。
编译方法参考网上博客就可以, android源码编译jar包
最终生成了javalib.jar,改名为 tvManager.jar即可。注意:如果没有指定LACAL_JACK_ENABLED选项,则默认是enabled,将会生成classes.jack文件,不会产生classes.jar包!
正常按照上面方案就可以编译出jar包,导入到AS里面就可以使用,下面说下我遇到的问题
遇到classes.jar.toc被依赖, 但是怎么编译都没有编译出来,网上也没有找到对应的方法,编译错误如下:
https://www.cnblogs.com/wangqiang9/p/9679466.html
https://stackoverflow.com/questions/43471694/how-to-generate-classes-dex-toc-files
㈦ 如何将AndroidStudio项目打包成jar包并使用
成功后:
在需要使用的工程中,添加jar包到libs目录中,右击 Add as Library 即可
可以看到这边可以正常使乱樱用之前创建迟陪冲的加法运算了
在创建jar的同时会生成一个 arr包 ,同码歼样也可以使用