针对如何将.jar或.class转换为.dex文件?和classes.jar转回dex文件这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展AndroidDex:[项目名称]无法创建class
针对如何将.jar或.class转换为.dex文件?和classes.jar转回dex文件这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android Dex:[项目名称]无法创建classes.dex文件、Android Studio是否压缩classes.dex文件?、c# – 在将IClass转换为Class时应该检查NULL吗?、c# – 将Class转换为XML为string等相关知识,希望可以帮助到你。
本文目录一览:- 如何将.jar或.class转换为.dex文件?(classes.jar转回dex文件)
- Android Dex:[项目名称]无法创建classes.dex文件
- Android Studio是否压缩classes.dex文件?
- c# – 在将IClass转换为Class时应该检查NULL吗?
- c# – 将Class转换为XML为string
如何将.jar或.class转换为.dex文件?(classes.jar转回dex文件)
我将编辑Opera Mini v6.5服务器,因为它在我们的国家/地区已被屏蔽。
现在我解压了.apk文件提取的类,然后通过dex2jar.bat将其转换为Dex,现在修改了服务器。
我的问题是我想将.jar或.class重新打包为classes.Dex。我该怎么做?
答案1
小编典典这是一个对我的情况有用的解决方案…
假设.jar文件位于“ c:\ temp \ in.jar”中。在命令提示符窗口中,将cd转到.. \ android-sdk \ platform-
tools。要获取.apk,请执行:
dx --dex --output="c:\temp\app.apk" "c:\temp\in.jar"
要获取.dex文件,请执行:
dx --dex --output="c:\temp\dx.dex" "c:\temp\in.jar"
Android Dex:[项目名称]无法创建classes.dex文件
我正在使用IntelliJ IDEA 12.1.4,在我的项目中,我使用了几个库/项目:
> ActionBarSherlock
> ViewPagerIndicator
>凌空抽射
> ProgressSherlockFragment
> Google Play服务
>滑动菜单
> epublib.jar
> gson.jar
我从SVN中检出了所有项目,并修复了依赖项或缺少库,但是当我尝试创建项目时,我总是无所不在:
Android Dex: [Project name] Cannot create classes.dex file
没有其他警告/错误.该项目可在其他2台计算机上运行,但在我的笔记本电脑上则无法.我无法在其他计算机上检查“设置”,因为我目前无法访问它们.
如何解决此问题或获取更多详细信息?我不知道怎么了.
我试过了:
>删除模块设置中的错误/警告
>在每个项目上设置相同的API
>从源和maven两次导入它们
>以管理员身份运行IntelliJ
解决方法:
找到了一个对我有用的解决方案:
从项目文件夹以及内部文件夹和文件中删除“只读”属性
Android Studio是否压缩classes.dex文件?
看起来输出文件夹中apk文件的classes.dex与已安装的应用程序不同.
我正在使用classes.dex文件来解决一些安全问题,所以通常我解压缩最终的apk文件并从classes.dex文件中获取信息.但是当我在运行时读取classes.dex文件时文件大小是如此不同. (8MB vs 46KB)
应用程序本身工作得很好.有人说Proguard使classes.dex文件更轻,但我关闭了Proguard. (useProguard false,build.gradle中minifyEnabled false)
有什么我可以尝试的吗?先感谢您.
一句话摘要:
Android Studio构建的app / build / outputs / apk / app.apk文件的classes.dex与我可以从Android设备的实际应用安装位置找到的classes.dex不同.
解决方法:
实际上,android studio会进行转换,并且在构建时默认使用“compress”这个术语.
Android应用程序的编译过程与其他Java应用程序有很大不同.但它以相同的方式开始:使用javac命令将您的Java源代码文件编译为.class文件:
.class文件包含标准的Oracle JVM Java字节码.但Android设备不使用此字节码格式.相反,Android有自己独特的字节码格式,称为Dalvik. Dalvik字节码,如Oracle JVM字节码,是理论处理器的机器代码指令.
编译过程需要将.class文件和任何.jar库转换为包含Dalvik字节码的单个classes.dex文件.这是通过dx命令完成的:
这是您的classes.dex文件的生成方式.
然后将classes.dex文件和应用程序中的资源(如图像和布局)压缩为类似zip的文件,称为Android Package或.apk文件.这是通过Android资产包装工具或aapt完成的:
在构建过程中,您的proguard规则有助于
>收缩 – 检测并删除未使用的类,字段,方法和属性.
>优化 – 分析和优化方法的字节码.
> Obfuscate – 使用简短无意义的名称重命名剩余的类,字段和方法.
希望它在某种程度上对你有所帮助.
如果您想了解有关Android应用程序如何构建和运行的更多信息,
Read this.
资源:
https://github.com/dogriffiths/HeadFirstAndroid/wiki/How-Android-Apps-are-Built-and-Run
.
c# – 在将IClass转换为Class时应该检查NULL吗?
public interface INewClass {} public class NewClass : INewClass {} public void FunMeA(INewClass obj) { NewClass n = (NewClass) obj; ... // Should I check (n == null) here? // call methods defined inside INewClass (updated from NewClass to INewClass) ... } A concrete example,public void FunMeB(IAsyncResult itfAR) { AsyncResult ar = (AsyncResult) itfAR; ... // Should I check (ar == null) here? // access ar.AsyncDelegate ... }
问题2>我刚刚开始从C转移到C#.
当在C编码时,我知道检查何时应该完成.
但是,我完全迷失在C#世界.所以问题是:是吗
一般的规则,可以告诉我什么时候我必须检查NULL?
谢谢
解决方法
NewClass n = (NewClass) obj;
没有任何意义,因为如果不转换它将抛出一个无效的转换异常.
如果您对您是否可以实际投下任何疑问,您可以这样做:
NewClass n = obj as NewClass;
然后
if(n != null) ...
你正在做的演员称为直播,系统将假定它可以制作. n = obj作为NewClass被称为间接转换,是为那些你想告诉程序的情况“嘿,我认为这将工作,但如果不是不翻转和抛出一个异常…我会交易如果它不起作用.“
使用的是vs,在铸造.
根据你想要的情况,一个会比另一个更好.从技术上来说,从性能的角度来看是首选. .Net将使用原子式尝试来转换为所需类型,如果不是,则返回null,那么它将不得不将继承树进行两次,以查看它是否匹配该类型,然后将其转换.所以在大多数情况下,如果你想看看是否要转换并使用该类型,最好是:
var obj = o as type if (obj != null)
相反
if(o is type) { var obj = (type); }
c# – 将Class转换为XML为string
我正在尝试下面的代码,但它不起作用:
public static void Main(string[] args) { XmlSerializer ser = new XmlSerializer(typeof(TestClass)); MemoryStream m = new MemoryStream(); ser.Serialize(m,new TestClass()); string xml = new StreamReader(m).ReadToEnd(); Console.WriteLine(xml); Console.ReadLine(); } public class TestClass { public int Legs = 4; public int NoOfKills = 100; }
有想法该怎么解决这个吗 ?
谢谢.
解决方法
XmlSerializer ser = new XmlSerializer(typeof(TestClass)); MemoryStream m = new MemoryStream(); ser.Serialize(m,new TestClass()); // reset to 0 so we start reading from the beginning of the stream m.Position = 0; string xml = new StreamReader(m).ReadToEnd();
最重要的是,通过调用dispose或close来关闭资源始终很重要.您的完整代码应该是这样的:
XmlSerializer ser = new XmlSerializer(typeof(TestClass)); string xml; using (MemoryStream m = new MemoryStream()) { ser.Serialize(m,new TestClass()); // reset to 0 m.Position = 0; xml = new StreamReader(m).ReadToEnd(); } Console.WriteLine(xml); Console.ReadLine();
今天关于如何将.jar或.class转换为.dex文件?和classes.jar转回dex文件的介绍到此结束,谢谢您的阅读,有关Android Dex:[项目名称]无法创建classes.dex文件、Android Studio是否压缩classes.dex文件?、c# – 在将IClass转换为Class时应该检查NULL吗?、c# – 将Class转换为XML为string等更多相关知识的信息可以在本站进行查询。
本文标签: