'de kütüphaneyi gizlemek için yGuard'ı kullanma Şu anda ofisimde bulunan diğer uygulamalarda kullanılmak üzere bir Java kütüphanesi geliştiriyorum ve kütüphanenin kendisini gizleme yollarını araştırıyorum.Eclipse
Eclipse Indigo ile çalışıyorum ve yGuard v2.3.0.1 kullanıyorum.
Öncelikle, benim Java kodu:
package com.test.ObfuscateTest;
public class MainClass {
private String secretClassVariable;
public static void main(String[] args) {
}
protected void SecretMethod(String secretParameter) {
secretClassVariable = secretParameter;
}
}
aşağıdaki ANT komut dosyası ile yGuard kullanarak, bana boş JAR dosyasını ağlar:
<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="yguard" basedir=".">
<target name="init">
<property name="project_name" value="ObfuscateTest"/>
<property name="srcDir" value="."/>
<property name="classDir" value="classes"/>
<property name="jar" value="${project_name}.jar"/>
<property name="obfjar" value="${project_name}_obf.jar"/>
<property name="renamelog" value="${project_name}_renamelog.xml"/>
<property name="shrinklog" value="${project_name}_shrinklog.xml"/>
<property name="mainclass" value="com.test.ObfuscateTest"/>
<mkdir dir="${classDir}" />
</target>
<target depends="jar" name="yguard">
<taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="/Users/foo/Desktop/yguard-2.3.0.1/lib/yguard.jar"/>
<!-- the following can be adjusted to your needs -->
<yguard>
<inoutpair in="${jar}" out="${obfjar}"/>
<!-- don't let the obfuscator remove the "Deprecated" -->
<!-- attributes from the .class file entries -->
<attribute name="Deprecated"/>
<shrink logfile="${shrinklog}">
<keep>
<class classes="none" methods="protected" fields="none">
<patternset>
<include name="com.test.ObfuscateTest.*"/>
</patternset>
</class>
</keep>
</shrink>
<rename mainclass="${mainclass}" logfile="${renamelog}">
<keep>
<class classes="none" methods="protected" fields="none">
<patternset>
<include name="com.test.ObfuscateTest.*"/>
</patternset>
</class>
</keep>
</rename>
</yguard>
</target>
<!-- compile -->
<target name="compile" depends="init">
<javac srcdir="${srcDir}" includes="com/test/ObfuscateTest/*.java" destdir="${classDir}">
</javac>
</target>
<!-- create .jar -->
<target name="jar" depends="compile">
<jar jarfile="${jar}" basedir="${classDir}" includes="com/test/ObfuscateTest/*"/>
</target>
<!-- run project -->
<target name="run" depends="yguard">
<java classname="${mainclass}" fork="true">
<classpath>
<pathelement location="${obfjar}"/>
</classpath>
</java>
</target>
<!-- removes all that has been built -->
<target name="clean" depends="init">
<delete dir="${classDir}" includeEmptyDirs="true" />
</target>
</project>
Ben nazikçe olarak bir tavsiye isteyebilir misin ne yanlış mı yapıyorum?
Çok önceden teşekkürler!
Ofisinizde kullanılacak kodu neden gizliyorsunuz? –
Kütüphane, potansiyel olarak üçüncü taraf geliştiricilere bırakılacak, bu nedenle gizleme ihtiyacı ortaya çıkacak. – Earthling
ProGuard'ı kodumu oldukça iyi bir şekilde gizlemek için aldım, bu yüzden bu bir aşağı, ama çalışmak için yGuard almanın bir yolu olup olmadığını bilmek isterim. – Earthling