提交 d5896e14 编写于 作者: Code_dh's avatar Code_dh

添加代码

上级
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<compositeConfiguration>
<compositeBuild compositeDefinitionSource="SCRIPT" />
</compositeConfiguration>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>
\ No newline at end of file
// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply plugin: 'com.huawei.ohos.app'
ohos {
compileSdkVersion 3
defaultConfig {
compatibleSdkVersion 3
}
}
buildscript {
repositories {
maven {
url 'https://mirrors.huaweicloud.com/repository/maven/'
}
maven {
url 'https://developer.huawei.com/repo/'
}
jcenter()
}
dependencies {
classpath 'com.huawei.ohos:hap:2.0.0.6'
}
}
allprojects {
repositories {
maven {
url 'https://mirrors.huaweicloud.com/repository/maven/'
}
maven {
url 'https://developer.huawei.com/repo/'
}
jcenter()
}
}
apply plugin: 'com.huawei.ohos.hap'
ohos {
compileSdkVersion 3
defaultConfig {
compatibleSdkVersion 3
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testCompile'junit:junit:4.12'
}
{
"app": {
"bundleName": "com.csdn.harmonyfirstpro",
"vendor": "csdn",
"version": {
"code": 1,
"name": "1.0"
},
"apiVersion": {
"compatible": 3,
"target": 3
}
},
"deviceConfig": {},
"module": {
"package": "com.csdn.harmonyfirstpro",
"name": ".HMFirstPro",
"reqCapabilities": [
"video_support"
],
"deviceType": [
"tv"
],
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry"
},
"abilities": [
{
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"orientation": "landscape",
"formEnabled": false,
"name": "com.csdn.harmonyfirstpro.MainAbility",
"icon": "$media:icon",
"description": "$string:mainability_description",
"label": "HMFirstPro",
"type": "page",
"launchType": "standard"
},
{
"orientation": "landscape",
"formEnabled": false,
"name": "com.csdn.harmonyfirstpro.VideoAbility",
"icon": "$media:icon",
"description": "$string:videoability_description",
"label": "entry",
"type": "page",
"launchType": "standard"
}
]
}
}
\ No newline at end of file
package com.csdn.harmonyfirstpro;
import ohos.aafwk.ability.AbilityPackage;
public class HMFirstPro extends AbilityPackage {
@Override
public void onInitialize() {
super.onInitialize();
}
}
package com.csdn.harmonyfirstpro;
import com.csdn.harmonyfirstpro.view.VideoView;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.DependentLayout;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.graphics.SurfaceOps;
import ohos.agp.window.service.Window;
import ohos.agp.window.service.WindowManager;
import ohos.global.resource.RawFileDescriptor;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.media.common.Source;
import ohos.media.player.Player;
import com.csdn.harmonyfirstpro.ResourceTable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_PARENT;
public class MainAbility extends Ability {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_main_layout);
Button videoBt = (Button) findComponentById(ResourceTable.Id_video_button);
videoBt.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
Intent intent = new Intent();
// 通过Intent中的OperationBuilder类构造operation对象,指定设备标识(空串表示当前设备)、应用包名、Ability名称
Operation operation = new Intent.OperationBuilder()
.withDeviceId("")
.withBundleName("com.csdn.harmonyfirstpro")
.withAbilityName("com.csdn.harmonyfirstpro.VideoAbility")
.build();
// 把operation设置到intent中
intent.setOperation(operation);
startAbility(intent);
}
});
}
}
package com.csdn.harmonyfirstpro;
import com.csdn.harmonyfirstpro.slice.VideoAbilitySlice;
import com.csdn.harmonyfirstpro.view.VideoView;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.DependentLayout;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.graphics.SurfaceOps;
import ohos.agp.window.service.Window;
import ohos.agp.window.service.WindowManager;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import com.csdn.harmonyfirstpro.ResourceTable;
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_PARENT;
public class VideoAbility extends Ability implements SurfaceOps.Callback{
private VideoView videoView;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_video_layout);
HiLog.debug(new HiLogLabel(0,0,"XXXXXXXXX"),"跳转了");
WindowManager windowManager = WindowManager.getInstance();
Window window = windowManager.getTopWindow().get();
window.setTransparent(true);
DirectionalLayout videoContent = (DirectionalLayout) findComponentById(com.csdn.harmonyfirstpro.ResourceTable.Id_video_content);
DependentLayout.LayoutConfig lpVideo = new DependentLayout.LayoutConfig(MATCH_PARENT, MATCH_PARENT);
videoView = new VideoView(this);
videoView.setCallback(this);
videoContent.addComponent(videoView, lpVideo);
Button videoBt = (Button) findComponentById(ResourceTable.Id_video_bt);
videoBt.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
HiLog.debug(new HiLogLabel(0,0,"XXXXXXXXX"),"点击了");
if(videoView.getState() == VideoView.STATE_PLAYING){
videoView.pause();
videoBt.setText("开始");
}else{
videoView.start();
videoBt.setText("暂停");
}
}
});
}
@Override
public void surfaceCreated(SurfaceOps surfaceOps) {
videoView.playAssets("resources/rawfile/trailer.mp4", true, surfaceOps);
}
@Override
public void surfaceChanged(SurfaceOps surfaceOps, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceOps surfaceOps) {
videoView.stop();
}
}
package com.csdn.harmonyfirstpro.slice;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.DirectionalLayout.LayoutConfig;
import ohos.agp.components.Text;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.Color;
import ohos.agp.utils.TextAlignment;
import ohos.global.resource.RawFileDescriptor;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.media.common.Source;
import ohos.media.player.Player;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainAbilitySlice extends AbilitySlice implements Player.IPlayerCallback {
private DirectionalLayout myLayout = new DirectionalLayout(this);
private Player mVideoContainer;
private HiLogLabel TAG = new HiLogLabel(0,0,"MainAbilitySlice");
@Override
public void onStart(Intent intent) {
super.onStart(intent);
LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
myLayout.setLayoutConfig(config);
ShapeElement element = new ShapeElement();
element.setRgbColor(new RgbColor(255, 255, 255));
myLayout.setBackground(element);
mVideoContainer = new Player(this);
mVideoContainer.setPlayerCallback(this);
copyVideoFile();
try {
File distDir = getDistributedDir();
String filePath = distDir + File.separator + "video.mp4";
File videoFile = new File(filePath);
if (videoFile.exists()) {
FileInputStream inputStream = new FileInputStream(filePath);
mVideoContainer.setSource(new Source(inputStream.getFD()));
mVideoContainer.prepare();
} else {
// mHandler.sendEvent(MESSAGE_UPDATE_PLAY_VIDEO, DELAY_TIME);
}
} catch (IOException ioException) {
HiLog.error(TAG, "IOException");
}
Text text = new Text(this);
text.setLayoutConfig(config);
text.setText("Hello World");
text.setTextColor(new Color(0xFF000000));
text.setTextSize(50);
text.setTextAlignment(TextAlignment.CENTER);
myLayout.addComponent(text);
super.setUIContent(myLayout);
}
@Override
protected void onBackground() {
super.onBackground();
if (mVideoContainer!=null) {
mVideoContainer.pause();
}
}
public void copyVideoFile() {
FileOutputStream outFile = null;
FileInputStream inFile = null;
RawFileDescriptor rfd = null;
int FILE_BUFFER_SIZE = 100 * 1024;
try {
// 读取视频文件在hap包的起始位置和视频文件大小
rfd = getResourceManager().getRawFileEntry("resources/rawfile/video.mp4").openRawFileDescriptor();
long start = rfd.getStartPosition();
inFile = new FileInputStream(rfd.getFileDescriptor());
inFile.skip(start);
// 设置分布式视频文件保存的路径
File distDir = getDistributedDir();
String filePath = distDir + File.separator + "video.mp4";
outFile = new FileOutputStream(filePath);
byte[] buffer = new byte[FILE_BUFFER_SIZE];
int len;
while ((len = inFile.read(buffer, 0, FILE_BUFFER_SIZE)) > 0) {
outFile.write(buffer, 0, len);
}
} catch (IOException ioException) {
HiLog.error(TAG, "IOException");
} finally {
if (inFile != null) {
try {
inFile.close();
} catch (IOException ioException) {
HiLog.error(TAG, "IOException");
}
}
if (outFile != null) {
try {
outFile.close();
} catch (IOException ioException) {
HiLog.error(TAG, "IOException");
}
}
if (rfd != null) {
try {
rfd.close();
} catch (IOException ioException) {
HiLog.error(TAG, "IOException");
}
}
}
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
if (mVideoContainer!=null) {
mVideoContainer.play();
}
}
//视频播放回调方法
@Override
public void onPrepared() {
if (mVideoContainer!=null) {
mVideoContainer.play();
}
}
@Override
public void onMessage(int i, int i1) {
}
@Override
public void onError(int i, int i1) {
}
@Override
public void onResolutionChanged(int i, int i1) {
}
@Override
public void onPlayBackComplete() {
}
@Override
public void onRewindToComplete() {
}
@Override
public void onBufferingChange(int i) {
}
@Override
public void onNewTimedMetaData(Player.MediaTimedMetaData mediaTimedMetaData) {
}
@Override
public void onMediaTimeIncontinuity(Player.MediaTimeInfo mediaTimeInfo) {
}
}
package com.csdn.harmonyfirstpro.slice;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.DirectionalLayout.LayoutConfig;
import ohos.agp.components.Text;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.Color;
import ohos.agp.utils.TextAlignment;
public class VideoAbilitySlice extends AbilitySlice {
private DirectionalLayout myLayout = new DirectionalLayout(this);
@Override
public void onStart(Intent intent) {
super.onStart(intent);
LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
myLayout.setLayoutConfig(config);
ShapeElement element = new ShapeElement();
element.setRgbColor(new RgbColor(255, 255, 255));
myLayout.setBackground(element);
Text text = new Text(this);
text.setLayoutConfig(config);
text.setText("Hello World");
text.setTextColor(new Color(0xFF000000));
text.setTextSize(50);
text.setTextAlignment(TextAlignment.CENTER);
myLayout.addComponent(text);
super.setUIContent(myLayout);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
package com.csdn.harmonyfirstpro.view;
import ohos.agp.components.AttrSet;
import ohos.agp.components.LayoutScatter;
import ohos.agp.components.surfaceprovider.SurfaceProvider;
import ohos.agp.graphics.SurfaceOps;
import ohos.app.Context;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.media.player.Player;
import java.util.Optional;
public class VideoView extends SurfaceProvider implements Player.IPlayerCallback {
public static final int STATE_INIT = 1000;
public static final int STATE_PLAYING = 1001;
public static final int STATE_PAUSE = 1002;
public static final int STATE_STOP = 1003;
private Player player;
private SurfaceOps surfaceHolder;
private int state = STATE_INIT;
Context context;
public VideoView(Context context) {
super(context);
initVideoView(context);
}
public VideoView(Context context, AttrSet attrSet) {
super(context, attrSet);
initVideoView(context);
}
public VideoView(Context context, AttrSet attrSet, String styleName) {
super(context, attrSet, styleName);
initVideoView(context);
}
private void initVideoView(Context context) {
this.context = context;
player = new Player(getContext());
player.setPlayerCallback(this);
Optional<SurfaceOps> surfaceHolderOptional = getSurfaceOps();
surfaceHolder = surfaceHolderOptional.get();
state = STATE_INIT;
}
public void setCallback(SurfaceOps.Callback callback) {
if (surfaceHolder != null) {
surfaceHolder.addCallback(callback);
}
}
public void playAssets(String fileName, boolean isLooping, SurfaceOps holder) {
try {
//播放本地视频:
player.setSource(getContext().getResourceManager().getRawFileEntry(fileName).openRawFileDescriptor());
//播放在线视频:
// player.setSource(new Source(fileName));
player.setVideoSurface(holder.getSurface());
player.enableSingleLooping(isLooping);
player.enableScreenOn(true);
player.prepare();
initPlayViewSize();
player.play();
// if (state != STATE_INIT) {
// player.rewindTo(currentTime * 1000);
// }
state = STATE_PLAYING;
// handler.sendEvent(InnerEvent.get(MESSAGE_UPDATE_PLAY_TIME));
} catch (Exception e) {
e.printStackTrace();
}
}
private void initPlayViewSize() {
HiLog.debug(new HiLogLabel(0,0,"XXXXXXXXXXX"),"context.getAbilityInfo().getDefaultFormHeight():");
int videoWidth = player.getVideoWidth();
int videoHeight = player.getVideoHeight();
// Log.hiLog("videoWidth:" + videoWidth + ", videoHeight:" + videoHeight);
if (videoWidth < videoHeight) {
double scale = 1080 * 1.f / videoHeight;
double currHeight = videoHeight * scale;
double currWidth = videoWidth * scale;
setHeight(((int) currHeight));
setWidth(((int) currWidth));
} else {
double scale = 1920 * 1.f / videoWidth;
double currHeight = videoHeight * scale;
double currWidth = videoWidth * scale;
setHeight(((int) currHeight));
setWidth(((int) currWidth));
}
}
public void pause() {
if (state == STATE_PLAYING) {
player.pause();
state = STATE_PAUSE;
}
}
public void start() {
if (state == STATE_PAUSE) {
player.play();
state = STATE_PLAYING;
}
}
public int getState(){
return state;
}
public void stop() {
if (player!=null) {
player.stop();
state = STATE_STOP;
}
}
@Override
public void onPrepared() {
}
@Override
public void onMessage(int i, int i1) {
}
@Override
public void onError(int i, int i1) {
}
@Override
public void onResolutionChanged(int i, int i1) {
}
@Override
public void onPlayBackComplete() {
}
@Override
public void onRewindToComplete() {
}
@Override
public void onBufferingChange(int i) {
}
@Override
public void onNewTimedMetaData(Player.MediaTimedMetaData mediaTimedMetaData) {
}
@Override
public void onMediaTimeIncontinuity(Player.MediaTimeInfo mediaTimeInfo) {
}
}
{
"string": [
{
"name": "app_name",
"value": "HMFirstPro"
},
{
"name": "mainability_description",
"value": "hap sample empty page"
},
{
"name": "videoability_description",
"value": "hap sample empty page"
},
{
"name": "listability_description",
"value": "hap sample empty provider"
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<DependentLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:width="match_parent"
ohos:height="match_content"
ohos:orientation="vertical">
<Text
ohos:id="$+id:tv"
ohos:width="match_parent"
ohos:height="64"
ohos:text="item"
ohos:text_alignment="center"/>
</DependentLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<DependentLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:width="match_parent"
ohos:height="match_parent"
ohos:orientation="vertical">
<DirectionalLayout
ohos:width="match_content"
ohos:height="match_content"
ohos:orientation="horizontal"
ohos:center_in_parent="true">
<Button
ohos:id="$+id:video_button"
ohos:width="200"
ohos:height="300"
ohos:background_element="#FFF0F0F0"
ohos:text="播放视频"
ohos:text_size="50"/>
</DirectionalLayout>
</DependentLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<DependentLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:width="match_parent"
ohos:height="match_parent"
ohos:orientation="vertical">
<DirectionalLayout
ohos:id="$+id:video_content"
ohos:width="match_parent"
ohos:height="match_parent"/>
<Button
ohos:id="$+id:video_bt"
ohos:width="160"
ohos:height="96"
ohos:text="暂停"
ohos:background_element="#FFFFFFFF"
ohos:align_parent_bottom="true"
ohos:horizontal_center="true"/>
</DependentLayout>
\ No newline at end of file
package com.csdn.harmonyfirstpro;
import org.junit.Test;
public class ListAbilityTest {
@Test
public void onStart() {
}
}
package com.csdn.harmonyfirstpro;
import org.junit.Test;
public class MainAbilityTest {
@Test
public void onStart() {
}
}
package com.csdn.harmonyfirstpro;
import org.junit.Test;
public class VideoAbilityTest {
@Test
public void onStart() {
}
}
# Project-wide Gradle settings.
# IDE (e.g. DevEco Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# If the Chinese output is garbled, please configure the following parameter.
# org.gradle.jvmargs=-Dfile.encoding=GBK
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
include ':entry'
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册