Skip to content

Commit

Permalink
v1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
vvb2060 committed Apr 11, 2021
1 parent 7cc4693 commit edb78e8
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 40 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ jobs:
java-version: '11'
- name: Build with Gradle
run: |
./gradlew aR
./gradlew publishToMavenLocal
./gradlew :app:aR
env:
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.signingKey }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.signingPassword }}
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ repositories {
mavenCentral()
}
dependencies {
implementation 'org.lsposed.hiddenapibypass:hiddenapibypass:1.0'
implementation 'org.lsposed.hiddenapibypass:hiddenapibypass:1.1'
}
```

Expand Down
6 changes: 5 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,11 @@ android {
}
}

repositories {
mavenLocal()
}
dependencies {
implementation project(":library")
// implementation project(":library")
implementation 'org.lsposed.hiddenapibypass:hiddenapibypass:1.1'
compileOnly 'androidx.annotation:annotation:1.2.0'
}
5 changes: 0 additions & 5 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
}

-repackageclasses
-allowaccessmodification
-overloadaggressively
59 changes: 35 additions & 24 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ android {
minSdk 1
targetSdk 30
versionCode 1
versionName "1.0"
versionName "1.1"
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
Expand All @@ -38,26 +38,35 @@ dependencies {
compileOnly 'androidx.annotation:annotation:1.2.0'
}

task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier 'sources'
}

task generateJavadoc(type: Javadoc) {
source android.sourceSets.main.java.srcDirs
classpath += files(android.getBootClasspath())
afterEvaluate {
classpath += files(android.libraryVariants.collect { v ->
v.javaCompileProvider.get().classpath
})
afterEvaluate {
android.libraryVariants.collect { variant ->
task("generate${variant.name.capitalize()}SourcesJar", type: Jar) {
from variant.javaCompileProvider.get().source
exclude '**/BuildConfig.java'
classifier 'sources'
}
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
if (JavaVersion.current() >= JavaVersion.VERSION_1_9) {
options.addStringOption "-release", "8"
}
source variant.javaCompileProvider.get().source
exclude '**/BuildConfig.java'
classpath += variant.javaCompileProvider.get().classpath
classpath += files(android.getBootClasspath())
classpath += tasks.getByName("generate${variant.name.capitalize()}BuildConfig").getOutputs().files
options {
failOnError false
encoding 'UTF-8'
links 'https://docs.oracle.com/javase/8/docs/api/'
links 'https://developer.android.com/reference/androidx/'
}
}
task("generate${variant.name.capitalize()}JavadocJar", type: Jar) {
dependsOn "generate${variant.name.capitalize()}Javadoc"
from tasks.getByName("generate${variant.name.capitalize()}Javadoc").destinationDir
classifier 'javadoc'
}
}
options.encoding 'UTF-8'
}

task javadocJar(type: Jar) {
dependsOn generateJavadoc
from generateJavadoc.destinationDir
classifier 'javadoc'
}

publishing {
Expand All @@ -66,9 +75,11 @@ publishing {
group 'org.lsposed.hiddenapibypass'
artifactId 'hiddenapibypass'
version android.defaultConfig.versionName
afterEvaluate { from components.release }
artifact generateSourcesJar
artifact javadocJar
afterEvaluate {
artifact tasks.getByName("bundleReleaseAar")
artifact tasks.getByName("generateReleaseJavadocJar")
artifact tasks.getByName("generateReleaseSourcesJar")
}
pom {
name = 'Android Hidden Api Bypass'
description = 'Bypass restrictions on non-SDK interfaces'
Expand All @@ -95,7 +106,7 @@ publishing {
maven {
name 'ossrh'
url 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/'
credentials(PasswordCredentials)
credentials PasswordCredentials
}
}
}
Expand Down
5 changes: 0 additions & 5 deletions library/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
}

-keep,allowoptimization class org.lsposed.hiddenapibypass.HiddenApiBypass {
java.util.List getDeclaredMethods(java.lang.Class);
boolean setHiddenApiExemptions(java.lang.String[]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

import androidx.annotation.RequiresApi;

import org.lsposed.hiddenapibypass.library.BuildConfig;

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandleInfo;
import java.lang.invoke.MethodHandles;
Expand Down Expand Up @@ -63,7 +65,7 @@ public final class HiddenApiBypass {
long bAddr = unsafe.getLong(mhB, artOffset);
long aMethods = unsafe.getLong(Helper.NeverCall.class, methodsOffset);
size = bAddr - aAddr;
Log.v(TAG, size + " " +
if (BuildConfig.DEBUG) Log.v(TAG, size + " " +
Long.toString(aAddr, 16) + ", " +
Long.toString(bAddr, 16) + ", " +
Long.toString(aMethods, 16));
Expand All @@ -90,7 +92,7 @@ public static List<Executable> getDeclaredMethods(Class<?> clazz) {
}
long methods = unsafe.getLong(clazz, methodsOffset);
int numMethods = unsafe.getInt(methods);
Log.d(TAG, clazz + " has " + numMethods + " methods");
if (BuildConfig.DEBUG) Log.d(TAG, clazz + " has " + numMethods + " methods");
for (int i = 0; i < numMethods; i++) {
long method = methods + i * size + bias;
unsafe.putLong(mh, artOffset, method);
Expand All @@ -101,7 +103,8 @@ public static List<Executable> getDeclaredMethods(Class<?> clazz) {
}
MethodHandleInfo info = (MethodHandleInfo) unsafe.getObject(mh, infoOffset);
Executable member = (Executable) unsafe.getObject(info, memberOffset);
Log.v(TAG, "got " + clazz.getTypeName() + "." + member + "(" + Arrays.stream(member.getTypeParameters()).map(Type::getTypeName).collect(Collectors.joining()) + ")");
if (BuildConfig.DEBUG) Log.v(TAG, "got " + clazz.getTypeName() + "." + member +
"(" + Arrays.stream(member.getTypeParameters()).map(Type::getTypeName).collect(Collectors.joining()) + ")");
list.add(member);
}
return list;
Expand Down

0 comments on commit edb78e8

Please sign in to comment.