当前位置:首页 » 安卓系统 » androidrtjar

androidrtjar

发布时间: 2022-12-09 07:05:23

① Android Studio 调用rt.jar包报错

我也在网上查了,按照大家给的方法去做:
1.在工程的目录下新建了一个libs的目录,跟src目录同一级,然后将smack的jar包都复制到这个目录下
2.BuildPath->AddLibraries->UserLibrary->UserLibraries->New,我新建工程里的是smacklib,并勾选了Systemlibrary,点击OK
3.点击AddJars,将libs目录下的jar包都加到smacklib下
按上述步骤做了后,debug时仍然报上面的错误,于是我又点击了BuildPath->ConfigureBuildPath,在OrderandExport页签下将smacklib移到最顶上的位置,我前后试了勾选和不勾选,上面的报错始终没解决
我的配置截图如下:

② 如何使用Android Studio打包混淆的Jar

使用AS打包混淆Jar包,网络一下,一片一片的,但是很多都是零零散散的写得不是很详细或是直接拷贝,按照他们的教程测试总不是很顺利,所以这里我就把我个人学习AS打包混淆Jar的成果总结出来,希望对大家有帮助。个人觉得写得还是比较详细的

使用gradle混淆打包Jar

使用AS开发项目,引入第三方库是非常方便的,我们只需要在build.gradle中配置一行代码就可以轻松引入我们需要的开发库。那么gradle可以帮我们混淆打包Jar吗?答案是当然可以!

那么我们如何打包Jar呢?其实我们在编译项目的时候,AS已经帮我们在目录build/intermediates/bundles/release/classes.jar打好了Jar。那么我们需要做的就是把Jar进行混淆的工作了。这里以个人项目bannerDemo为例,混淆步骤如下:

在你的library的build.gradle文件中加入如下代码:

task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
// 未混淆的jar路径
injars 'build/intermediates/bundles/release/classes.jar'
// 混淆后的jar输出路径
outjars 'build/outputs/cocolove2-banner-1.1.0.jar'
// 混淆协议
configuration 'proguard-rules.pro'}

配置混淆协议

1.我们先把AS自带的协议配置进来中文注释,笔者添加

# This is a configuration file for ProGuard.# http://proguard.sourceforge.net/index.html#manual/usage.html## Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer# versions are distributed with the plugin and unpacked at build time. Files in this directory are# no longer maintained.#表示混淆时不使用大小写混合类名-dontusemixedcaseclassnames#表示不跳过library中的非public的类-#打印混淆的详细信息-verbose# Optimization is turned off by default. Dex does not like code run# through the ProGuard optimize and preverify steps (and performs some# of these optimizations on its own).-dontoptimize##表示不进行校验,这个校验作用 在java平台上的-dontpreverify# Note that if you want to enable optimization, you cannot just# include optimization flags in your own project configuration file;# instead you will need to point to the# "proguard-android-optimize.txt" file instead of this one from your# project.properties file.-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native-keepclasseswithmembernames class * {
native <methods>;
}# keep setters in Views so that animations can still work.# see http://proguard.sourceforge.net/manual/examples.html#beans-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}# We want to keep methods in Activity that could be used in the XML attribute onClick-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class **.R$* {
public static <fields>;
}# The support library contains references to newer platform versions.# Don't warn about those in case this app is linking against an older# platform version. We know about them, and they are safe.-dontwarn android.support.**# Understand the @Keep support annotation.-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}

2.AS自带的配置文档还是不够的,我们还需要加入如下配置
这里只展示基本操作,在实际开发中可能需要更多依赖,要根据具体情况引入自己需要的依赖包

#下面代码中的xx是指我个人的配置路径,涉及个人信息,这里以xx代替
#引入依赖包rt.jar(jdk路径)
-libraryjars /xxx/xx/xx/jdk1.8.0_77.jdk/Contents/Home/jre/lib/rt.jar
#引入依赖包android.jar(android SDK路径)
-libraryjars /xx/xx/xx/Android/sdk/platforms/android-24/android.jar
#如果用到Appcompat包,需要引入
-libraryjars /xxx/xxx/xx/xxx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/appcompat-v7/24.1.1/jars/classes.jar
-libraryjars /xx/xx/xx/xx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/support-v4/24.1.1/jars/classes.jar

#忽略警告
-ignorewarnings
#保证是独立的jar,没有任何项目引用,如果不写就会认为我们所有的代码是无用的,从而把所有的代码压缩掉,导出一个空的jar
-dontshrink
#保护泛型
-keepattributes Signature

3.加入自己不想混淆的配置根据实际需求配置

-keep class com.cocolove2.library_banner.view.**{*;}

在命令行执行命令混淆Jar,提示BUILD SUCCESFUL表示成功!

//mac./gradlew makeJar//windowsgradlew makeJar

示例展示

  • 我这里以混淆library-banner库为例

  • 1.首先我们要看看下我们的buildTool的配置,如下图:


    [email protected]

    混淆报错解决办法个人遇到的

  • #log提示缺少依赖Jar,或者路径不对


  • 解决办法:乖乖的引入缺少的依赖jar和修改路径

  • #提示如下异常[INFO] java.io.IOException: Can't read [D:Program

  • FilesJavajdk1.8.0_91jrelib t.jar] (Can't process class [com/oracle/net/Sdp$1.class] (Unsupported class version number

  • [52.0] (maximum 51.0, Java 1.7)))


  • 解决办法:

  • 下载最新proguard(支持Java 8的版本),然后将下载的文件解压

  • 将andorid sdk/tools/proguard/lib中的jar包,替换为刚下载解压文件中的lib包。

  • proguard5.2.1下载地址

  • 阅读

③ 如何制作Jar包并在android中调用jar包

制作jar包:
1首先在Eclipse中打开项目, 右键点击项目,选择“Export”;
2选择Java/JAR file ----》Next;
3Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了。
4下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他---》Next---》finish。

调用jar包:
1 将jar包复制到libs目录下。
2 右键工程---》Build path---》java build path,选择libraries
3 在右边的按钮中点击“Add JARs”,选择Lib目录下的jar包,导入即可。

④ android如何将res文件夹下的资源打包到jar中

1.打包时,将资源放在asset文件夹内,通过AssetsManager获取指定资源:
目标应用和jar中的assets文件夹会合并,所以可以通过获取该应用的此类文件夹来获取目标资源
2.使用library项目
此类方法不能混淆代码,也就是说发布时需要提供library源项目.在引用此lib的目标项目中会看到一个包含已经编译成class.dex的jar文件,这个文件反编译以后仍然是只有代码部分。
3.使用双重library项目
提供一种双层library项目的方法,可以混淆代码,但是xml与图片资源仍然是暴露的,且发布时需要提供二级引用项目,操作上复杂度较高,不如直接提供jar包和资源
4.直接提供jar包和资源(分开)
依然是反射R文件,资源会被暴露给开发者。

⑤ android工程导入了itext库,要用到java.awt.我将rt.jar中的java.awt包复制到android.jar,运行时找不到类

写成接口,请求返回PDF,本地应用的话你要研究研究源码
再建个工程,把所有需要都放进去,打个jar,试试看

⑥ 安卓开发能调用jdk 中 rt.jar包里面的ws库吗

不能。android标准中未包括

~
~
~

热点内容
linuxpython命令行 发布:2025-03-15 16:19:45 浏览:958
编译androidx86 发布:2025-03-15 16:19:01 浏览:785
戴尔g15怎么切换温度配置文件 发布:2025-03-15 16:16:18 浏览:850
长江存储0 发布:2025-03-15 16:15:35 浏览:46
地狱边境安卓版不支持谷歌怎么办 发布:2025-03-15 16:15:32 浏览:161
kld数据库 发布:2025-03-15 15:46:27 浏览:263
互联网数据库设计 发布:2025-03-15 15:44:42 浏览:240
自适应滤波c语言 发布:2025-03-15 15:40:25 浏览:969
cs狙击脚本 发布:2025-03-15 15:25:15 浏览:344
平板搭建ftp服务器 发布:2025-03-15 15:24:32 浏览:832